SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
Software Development with "
      Open Source

 Jon Allen (JJ) – jj@opusvl.com
  Birmingham University 2010


      Software Development with Open Source
      Open Source Business Systems
    www.opusvl.com
About OpusVL

•  Open Source development company
•  Based in Rugby, UK

•    Founded in 2000
•    Business systems (ERP, VOIP, CRM, etc)
•    Bespoke software development
•    Use and contribute to Open Source
     –  Code
     –  Sponsorship
                   Software Development with Open Source
                   Open Source Business Systems
    www.opusvl.com
Open Source
                           

•  Who uses Open Source software?




               Software Development with Open Source
               Open Source Business Systems
    www.opusvl.com
Open Source
                                

•  Who uses Open Source software?

•  Who uses…
  –  Google
  –  Facebook
  –  BBC iPlayer
  –  Amazon




                    Software Development with Open Source
                    Open Source Business Systems
    www.opusvl.com
Open Source
                                 

•  Who uses Open Source software?

•  Who uses…
   –  Google
   –  Facebook
   –  BBC iPlayer
   –  Amazon


•  All built on Open Source software

                     Software Development with Open Source
                     Open Source Business Systems
    www.opusvl.com
What is Open Source Software?
                                  

•  Licensing model
   –  Free redistribution
   –  Source code available
   –  Modifications and derived works allowed
      •  Distribution allowed under same terms as original licence
   –  No discrimination against people or fields of usage

•  Typical licenses
   –  BSD, Apache, GPL, Artistic
      •  Restrictions vary by license (BSD vs. Copyleft)

                    Software Development with Open Source
                    Open Source Business Systems
      www.opusvl.com
Why Open Source?
                              

•  Try before you buy
   –  Use first, get support later
   –  Open documentation, support forums, etc
•  Source code available
   –  Can make changes and fix bugs
•  Freedom to fork
   –  No vendor lock-in
•  Access to developers
   –  Speak directly to the author

                   Software Development with Open Source
                   Open Source Business Systems
    www.opusvl.com
What do we use?
                              

•  Products
   –  Debian, Ubuntu, Apache, PostgreSQL, CouchDB,
      Asterisk, XEN, OpenERP, DAViCal, Memcached, etc.


•  Development tools
   –  Perl
   –  Catalyst, Moose, DBIx::Class, Template Toolkit,
      DateTime, HTML::FormFu, etc.



                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
Perl
                                   

•  Multi-paradigm programming language
   –  Procedural, Functional, Object-Oriented
•  Mature, stable, scalable
   –  Used in mission-critical systems across the globe
   –  BBC, Cisco, Amazon, Vodafone, LOVEFiLM
   –  http://www.perl.org


•  Perl 5, version 12.2
   –  Released 7th September 2010

                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
CPAN

•  Comprehensive Perl Archive Network
   –  Over 21,000 modules - Perl’s “killer app”


•  Interfaces, frameworks, applications, dev tools, file
   formats, imaging, databases, and lots more
•  Code reuse
   –  Don’t re-invent the wheel
   –  Building blocks for applications
•  http://search.cpan.org 

                   Software Development with Open Source
                   Open Source Business Systems
    www.opusvl.com
Quality Assurance
                               

•  Perl has a strong QA culture
•  Test-driven development

•  CPAN Testers
   –  Automated testing community
   –  Every CPAN upload tested with multiple platforms
      and Perl versions 
   –  9,000,000 test reports (500,000 per month)
   –  http://www.cpantesters.org 


                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
Community
                               

•  Perl Mongers – local user groups
   –  Birmingham, London, Milton Keynes, North West
   –  http://birmingham.pm.org
•  Conferences and workshops
   –  YAPC – Europe, Asia, Russia, North America
   –  http://conferences.yapceurope.org/lpw2010
•  Online
   –  http://blogs.perl.org
   –  Forums, IRC, mailing lists

                   Software Development with Open Source
                   Open Source Business Systems
    www.opusvl.com
Jobs
                                  

•  Contribute to Open Source projects
  –  Very impressive on your CV
  –  Great way to gain experience
•  Not just programming
  –  Documentation, testing, bug triage


•  User groups
  –  Perl Mongers, LUGs, UKUUG, Multipack, PyWM
  –  Networking – get yourself known

                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
Software Stack
                                    

    Client customisations                     •  Core framework
                                                       –  Catalyst
   Client                  OpusVL
 application
components
                          application
                         components
                                                       –  Moose
                                                       –  DBIx::Class
 OpusVL framework modules



                                                  DBMS
  Core framework modules                         Ingres,
Catalyst, Moose, DBIx::Class, etc              PostgreSQL,
                                               CouchDB, etc


     Base software stack
      Linux, Apache, Perl




                       Software Development with Open Source
                       Open Source Business Systems
                 www.opusvl.com
DBIx::Class
                                 

•  ORM – Object Relational Mapper
  –  Database abstraction layer

•  Creates objects, classes, and methods
•  Writes SQL – improves maintainability
•  Easily add new class methods
  –  Business logic
  –  Encapsulation
     •  Use methods, not database queries


                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
DBIx::Class Schema
                               

•  Describes tables and relationships
   –  Loaded from DB – DBIx::Class::Schema::Loader
    CREATE TABLE authors (
       id integer primary key,
       name text
    );
    CREATE TABLE books (
       id integer primary key,
       author_id integer,
       title text,
       foreign key(author_id) references authors(id)
    );

    dbicdump Authors 'dbi:SQLite:test.db'


                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
Using generated classes
                                 

•  Gives us an Authors class
   –  Relationships converted to class methods
    use Authors;
    my $db = Authors->connect("dbi:SQLite:test.db");

    my $author = $db->resultset("Author")
                    ->find(name => "Stephen King");

    foreach my $book ($author->books) {
        say $book->title;
        say $book->author->name;
    }




                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
Extending classes
                               

•  With a “rate” method added to the Book class
    # in Authors/Result/Author.pm

    use List::Utils qw/sum/;

    sub is_liked {
        my $self = shift;

        my $total = sum(
            map {$_->rating} $self->books->all
        );

        return ($total / $self->books->count) > 3;
    }


                 Software Development with Open Source
                 Open Source Business Systems
    www.opusvl.com
Moose
                                

•  Object Oriented programming framework

•  Extension of Perl’s native OO
•  Improves syntax and facilities
   –  Method modifiers, introspection, roles, type checking
•  Large developer community

•  http://moose.perl.org 


                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
Moose example
                            
use MooseX::Declare

class Report extends ‘Document’
             with ‘Confidentiality’ {

    has ‘total’ => (isa => ‘Num’, default => ‘1000’);
    has ‘notes’ => (isa => ‘Str’);

    method fake_data {...}
}

role Confidentiality {
    before print {
        # hide any incriminating data!
    };
}

                 Software Development with Open Source
                 Open Source Business Systems
    www.opusvl.com
Catalyst
                                 

•  Web development framework

•  Application server
•  Scalable, high performance
   –  Powers some of the world’s biggest websites
•  Structured, maintainable
   –  URLs dispatched to class methods
•  DRY – Don’t Repeat Yourself
   –  Modular, self-contained components

                 Software Development with Open Source
                 Open Source Business Systems
    www.opusvl.com
What does Catalyst provide?
                                    

•    Session handling
•    Authentication / access control
•    Page caching
•    Built-in development server
•    URL generation
     –  What’s the URL to reach this method?


•  Library of pre-built components


                   Software Development with Open Source
                   Open Source Business Systems
    www.opusvl.com
Catalyst block diagram

                      View

                                          Stash
User             Controller



                     Model



             Business Logic                DB



          Software Development with Open Source
          Open Source Business Systems
           www.opusvl.com
Model
                                 

•  Business logic

•  Interface to a class
   –  Data storage (DBIx::Class, LDAP, S3, data files)
   –  API (REST, SOAP, XMLRPC)
   –  External system (OpenERP, Asterisk, hardware) 
   –  Any other piece of Perl code
•  External to Catalyst
   –  Used and maintained separately

                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
View

•  Presentation logic

•  Renders output as…
   –  HTML, XML, JSON, PDF, Excel, JPEG, PNG, etc.
   –  Template::Toolkit
•  Messaging
   –  Email, SMS
•  Processing
   –  Generating thumbnail images

                    Software Development with Open Source
                    Open Source Business Systems
    www.opusvl.com
Controller
                                   

•  Application logic
   –  Links Models to Views


•  Passes input to the model
•  Puts data from the model onto the stash
•  Runs the application
   –  Control flow
   –  Logging / error handling
   –  Status codes

                   Software Development with Open Source
                   Open Source Business Systems
    www.opusvl.com
Conclusion

•  Open Source gives us the tools to deliver
•  The Community makes it possible

•  Birmingham Perl Mongers
   –  http://birmingham.pm.org
•  Birmingham Linux User Group
   –  http://birmingham.lug.org.uk 




                  Software Development with Open Source
                  Open Source Business Systems
    www.opusvl.com
Essay question
                                 
•  Open Source software is often perceived as being non-
   commercial as free redistribution is permitted. However,
   many companies have managed to turn both the
   development and usage of Open Source software into a
   profitable business.

   –  Research the different business models that companies use
      to derive commercial benefit from Open Source software.

   –  Investigate the challenges that companies face in managing
      external development and user communities.


                    Software Development with Open Source
                    Open Source Business Systems
    www.opusvl.com

Weitere ähnliche Inhalte

Was ist angesagt?

Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPressTaylor Lovett
 
The JSON REST API for WordPress
The JSON REST API for WordPressThe JSON REST API for WordPress
The JSON REST API for WordPressTaylor Lovett
 
CouchDB for Web Applications - Erlang Factory London 2009
CouchDB for Web Applications - Erlang Factory London 2009CouchDB for Web Applications - Erlang Factory London 2009
CouchDB for Web Applications - Erlang Factory London 2009Jason Davies
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPressTaylor Lovett
 
Vibe Custom Development
Vibe Custom DevelopmentVibe Custom Development
Vibe Custom DevelopmentGWAVA
 
Day 7 - Make it Fast
Day 7 - Make it FastDay 7 - Make it Fast
Day 7 - Make it FastBarry Jones
 
Speed Up Your APEX Apps with JSON and Handlebars
Speed Up Your APEX Apps with JSON and HandlebarsSpeed Up Your APEX Apps with JSON and Handlebars
Speed Up Your APEX Apps with JSON and HandlebarsMarko Gorički
 
Rupy2012 ArangoDB Workshop Part2
Rupy2012 ArangoDB Workshop Part2Rupy2012 ArangoDB Workshop Part2
Rupy2012 ArangoDB Workshop Part2ArangoDB Database
 
Website designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopmentWebsite designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopmentCss Founder
 
Put a Button on It: Removing Barriers to Going Fast
Put a Button on It: Removing Barriers to Going FastPut a Button on It: Removing Barriers to Going Fast
Put a Button on It: Removing Barriers to Going FastOSCON Byrum
 
Transforming WordPress Search and Query Performance with Elasticsearch
Transforming WordPress Search and Query Performance with Elasticsearch Transforming WordPress Search and Query Performance with Elasticsearch
Transforming WordPress Search and Query Performance with Elasticsearch Taylor Lovett
 
Day 2 - Intro to Rails
Day 2 - Intro to RailsDay 2 - Intro to Rails
Day 2 - Intro to RailsBarry Jones
 
Rapid prototyping with solr - By Erik Hatcher
Rapid prototyping with solr -  By Erik Hatcher Rapid prototyping with solr -  By Erik Hatcher
Rapid prototyping with solr - By Erik Hatcher lucenerevolution
 
Modernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchModernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchTaylor Lovett
 

Was ist angesagt? (19)

Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPress
 
The JSON REST API for WordPress
The JSON REST API for WordPressThe JSON REST API for WordPress
The JSON REST API for WordPress
 
CouchDB for Web Applications - Erlang Factory London 2009
CouchDB for Web Applications - Erlang Factory London 2009CouchDB for Web Applications - Erlang Factory London 2009
CouchDB for Web Applications - Erlang Factory London 2009
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
 
Vibe Custom Development
Vibe Custom DevelopmentVibe Custom Development
Vibe Custom Development
 
Oracle APEX Nitro
Oracle APEX NitroOracle APEX Nitro
Oracle APEX Nitro
 
Day 7 - Make it Fast
Day 7 - Make it FastDay 7 - Make it Fast
Day 7 - Make it Fast
 
Speed Up Your APEX Apps with JSON and Handlebars
Speed Up Your APEX Apps with JSON and HandlebarsSpeed Up Your APEX Apps with JSON and Handlebars
Speed Up Your APEX Apps with JSON and Handlebars
 
Rupy2012 ArangoDB Workshop Part2
Rupy2012 ArangoDB Workshop Part2Rupy2012 ArangoDB Workshop Part2
Rupy2012 ArangoDB Workshop Part2
 
Top ten-list
Top ten-listTop ten-list
Top ten-list
 
Website designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopmentWebsite designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopment
 
Put a Button on It: Removing Barriers to Going Fast
Put a Button on It: Removing Barriers to Going FastPut a Button on It: Removing Barriers to Going Fast
Put a Button on It: Removing Barriers to Going Fast
 
Transforming WordPress Search and Query Performance with Elasticsearch
Transforming WordPress Search and Query Performance with Elasticsearch Transforming WordPress Search and Query Performance with Elasticsearch
Transforming WordPress Search and Query Performance with Elasticsearch
 
Day 2 - Intro to Rails
Day 2 - Intro to RailsDay 2 - Intro to Rails
Day 2 - Intro to Rails
 
Web Ninja
Web NinjaWeb Ninja
Web Ninja
 
Rapid prototyping with solr - By Erik Hatcher
Rapid prototyping with solr -  By Erik Hatcher Rapid prototyping with solr -  By Erik Hatcher
Rapid prototyping with solr - By Erik Hatcher
 
Php converted pdf
Php converted pdfPhp converted pdf
Php converted pdf
 
Ppt php
Ppt phpPpt php
Ppt php
 
Modernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchModernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with Elasticsearch
 

Ähnlich wie Software Development with Open Source

API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...Joe Levy
 
Olympya web-tools 2011
Olympya web-tools 2011Olympya web-tools 2011
Olympya web-tools 2011Paulo Mattos
 
Apache Con 2021 Structured Data Streaming
Apache Con 2021 Structured Data StreamingApache Con 2021 Structured Data Streaming
Apache Con 2021 Structured Data StreamingShivji Kumar Jha
 
An Introduction to Open Source Software and Web Application Development
An Introduction to Open Source Software and Web Application DevelopmentAn Introduction to Open Source Software and Web Application Development
An Introduction to Open Source Software and Web Application Developmenttrevorthornton
 
Web programming
Web programmingWeb programming
Web programmingIshucs
 
If You Have The Content, Then Apache Has The Technology!
If You Have The Content, Then Apache Has The Technology!If You Have The Content, Then Apache Has The Technology!
If You Have The Content, Then Apache Has The Technology!gagravarr
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on RailsAvi Kedar
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source ContributionsNeev Technologies
 
Holy PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionHoly PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionDave Diehl
 
Deploy, Manage, and Scale Your Apps with OpsWorks and Elastic Beanstalk
Deploy, Manage, and Scale Your Apps with OpsWorks and Elastic BeanstalkDeploy, Manage, and Scale Your Apps with OpsWorks and Elastic Beanstalk
Deploy, Manage, and Scale Your Apps with OpsWorks and Elastic BeanstalkAmazon Web Services
 
Open source softwares
Open source softwaresOpen source softwares
Open source softwaresSahil Jindal
 
Open source softwares
Open source softwaresOpen source softwares
Open source softwaresSahil Jindal
 
CISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecurityCISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecuritySam Bowne
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Den Delimarsky
 
Open Source Software – Open Day Oracle 2013
Open Source Software  – Open Day Oracle 2013Open Source Software  – Open Day Oracle 2013
Open Source Software – Open Day Oracle 2013Erik Gur
 
Prometheus lightning talk (Devops Dublin March 2015)
Prometheus lightning talk (Devops Dublin March 2015)Prometheus lightning talk (Devops Dublin March 2015)
Prometheus lightning talk (Devops Dublin March 2015)Brian Brazil
 

Ähnlich wie Software Development with Open Source (20)

API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
 
Swt
SwtSwt
Swt
 
Olympya web-tools 2011
Olympya web-tools 2011Olympya web-tools 2011
Olympya web-tools 2011
 
Apache Con 2021 Structured Data Streaming
Apache Con 2021 Structured Data StreamingApache Con 2021 Structured Data Streaming
Apache Con 2021 Structured Data Streaming
 
An Introduction to Open Source Software and Web Application Development
An Introduction to Open Source Software and Web Application DevelopmentAn Introduction to Open Source Software and Web Application Development
An Introduction to Open Source Software and Web Application Development
 
Web programming
Web programmingWeb programming
Web programming
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 
If You Have The Content, Then Apache Has The Technology!
If You Have The Content, Then Apache Has The Technology!If You Have The Content, Then Apache Has The Technology!
If You Have The Content, Then Apache Has The Technology!
 
Case study
Case studyCase study
Case study
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source Contributions
 
Holy PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionHoly PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood edition
 
Deploy, Manage, and Scale Your Apps with OpsWorks and Elastic Beanstalk
Deploy, Manage, and Scale Your Apps with OpsWorks and Elastic BeanstalkDeploy, Manage, and Scale Your Apps with OpsWorks and Elastic Beanstalk
Deploy, Manage, and Scale Your Apps with OpsWorks and Elastic Beanstalk
 
Open source softwares
Open source softwaresOpen source softwares
Open source softwares
 
Open source softwares
Open source softwaresOpen source softwares
Open source softwares
 
CISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecurityCISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development Security
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018
 
Ipc mysql php
Ipc mysql php Ipc mysql php
Ipc mysql php
 
Open Source Software – Open Day Oracle 2013
Open Source Software  – Open Day Oracle 2013Open Source Software  – Open Day Oracle 2013
Open Source Software – Open Day Oracle 2013
 
Prometheus lightning talk (Devops Dublin March 2015)
Prometheus lightning talk (Devops Dublin March 2015)Prometheus lightning talk (Devops Dublin March 2015)
Prometheus lightning talk (Devops Dublin March 2015)
 

Kürzlich hochgeladen

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 

Kürzlich hochgeladen (20)

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

Software Development with Open Source

  • 1. Software Development with " Open Source Jon Allen (JJ) – jj@opusvl.com Birmingham University 2010 Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 2. About OpusVL •  Open Source development company •  Based in Rugby, UK •  Founded in 2000 •  Business systems (ERP, VOIP, CRM, etc) •  Bespoke software development •  Use and contribute to Open Source –  Code –  Sponsorship Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 3. Open Source •  Who uses Open Source software? Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 4. Open Source •  Who uses Open Source software? •  Who uses… –  Google –  Facebook –  BBC iPlayer –  Amazon Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 5. Open Source •  Who uses Open Source software? •  Who uses… –  Google –  Facebook –  BBC iPlayer –  Amazon •  All built on Open Source software Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 6. What is Open Source Software? •  Licensing model –  Free redistribution –  Source code available –  Modifications and derived works allowed •  Distribution allowed under same terms as original licence –  No discrimination against people or fields of usage •  Typical licenses –  BSD, Apache, GPL, Artistic •  Restrictions vary by license (BSD vs. Copyleft) Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 7. Why Open Source? •  Try before you buy –  Use first, get support later –  Open documentation, support forums, etc •  Source code available –  Can make changes and fix bugs •  Freedom to fork –  No vendor lock-in •  Access to developers –  Speak directly to the author Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 8. What do we use? •  Products –  Debian, Ubuntu, Apache, PostgreSQL, CouchDB, Asterisk, XEN, OpenERP, DAViCal, Memcached, etc. •  Development tools –  Perl –  Catalyst, Moose, DBIx::Class, Template Toolkit, DateTime, HTML::FormFu, etc. Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 9. Perl •  Multi-paradigm programming language –  Procedural, Functional, Object-Oriented •  Mature, stable, scalable –  Used in mission-critical systems across the globe –  BBC, Cisco, Amazon, Vodafone, LOVEFiLM –  http://www.perl.org •  Perl 5, version 12.2 –  Released 7th September 2010 Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 10. CPAN •  Comprehensive Perl Archive Network –  Over 21,000 modules - Perl’s “killer app” •  Interfaces, frameworks, applications, dev tools, file formats, imaging, databases, and lots more •  Code reuse –  Don’t re-invent the wheel –  Building blocks for applications •  http://search.cpan.org Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 11. Quality Assurance •  Perl has a strong QA culture •  Test-driven development •  CPAN Testers –  Automated testing community –  Every CPAN upload tested with multiple platforms and Perl versions –  9,000,000 test reports (500,000 per month) –  http://www.cpantesters.org Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 12. Community •  Perl Mongers – local user groups –  Birmingham, London, Milton Keynes, North West –  http://birmingham.pm.org •  Conferences and workshops –  YAPC – Europe, Asia, Russia, North America –  http://conferences.yapceurope.org/lpw2010 •  Online –  http://blogs.perl.org –  Forums, IRC, mailing lists Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 13. Jobs •  Contribute to Open Source projects –  Very impressive on your CV –  Great way to gain experience •  Not just programming –  Documentation, testing, bug triage •  User groups –  Perl Mongers, LUGs, UKUUG, Multipack, PyWM –  Networking – get yourself known Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 14. Software Stack Client customisations •  Core framework –  Catalyst Client OpusVL application components application components –  Moose –  DBIx::Class OpusVL framework modules DBMS Core framework modules Ingres, Catalyst, Moose, DBIx::Class, etc PostgreSQL, CouchDB, etc Base software stack Linux, Apache, Perl Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 15. DBIx::Class •  ORM – Object Relational Mapper –  Database abstraction layer •  Creates objects, classes, and methods •  Writes SQL – improves maintainability •  Easily add new class methods –  Business logic –  Encapsulation •  Use methods, not database queries Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 16. DBIx::Class Schema •  Describes tables and relationships –  Loaded from DB – DBIx::Class::Schema::Loader CREATE TABLE authors ( id integer primary key, name text ); CREATE TABLE books ( id integer primary key, author_id integer, title text, foreign key(author_id) references authors(id) ); dbicdump Authors 'dbi:SQLite:test.db' Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 17. Using generated classes •  Gives us an Authors class –  Relationships converted to class methods use Authors; my $db = Authors->connect("dbi:SQLite:test.db"); my $author = $db->resultset("Author") ->find(name => "Stephen King"); foreach my $book ($author->books) { say $book->title; say $book->author->name; } Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 18. Extending classes •  With a “rate” method added to the Book class # in Authors/Result/Author.pm use List::Utils qw/sum/; sub is_liked { my $self = shift; my $total = sum( map {$_->rating} $self->books->all ); return ($total / $self->books->count) > 3; } Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 19. Moose •  Object Oriented programming framework •  Extension of Perl’s native OO •  Improves syntax and facilities –  Method modifiers, introspection, roles, type checking •  Large developer community •  http://moose.perl.org Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 20. Moose example use MooseX::Declare class Report extends ‘Document’ with ‘Confidentiality’ { has ‘total’ => (isa => ‘Num’, default => ‘1000’); has ‘notes’ => (isa => ‘Str’); method fake_data {...} } role Confidentiality { before print { # hide any incriminating data! }; } Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 21. Catalyst •  Web development framework •  Application server •  Scalable, high performance –  Powers some of the world’s biggest websites •  Structured, maintainable –  URLs dispatched to class methods •  DRY – Don’t Repeat Yourself –  Modular, self-contained components Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 22. What does Catalyst provide? •  Session handling •  Authentication / access control •  Page caching •  Built-in development server •  URL generation –  What’s the URL to reach this method? •  Library of pre-built components Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 23. Catalyst block diagram View Stash User Controller Model Business Logic DB Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 24. Model •  Business logic •  Interface to a class –  Data storage (DBIx::Class, LDAP, S3, data files) –  API (REST, SOAP, XMLRPC) –  External system (OpenERP, Asterisk, hardware) –  Any other piece of Perl code •  External to Catalyst –  Used and maintained separately Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 25. View •  Presentation logic •  Renders output as… –  HTML, XML, JSON, PDF, Excel, JPEG, PNG, etc. –  Template::Toolkit •  Messaging –  Email, SMS •  Processing –  Generating thumbnail images Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 26. Controller •  Application logic –  Links Models to Views •  Passes input to the model •  Puts data from the model onto the stash •  Runs the application –  Control flow –  Logging / error handling –  Status codes Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 27. Conclusion •  Open Source gives us the tools to deliver •  The Community makes it possible •  Birmingham Perl Mongers –  http://birmingham.pm.org •  Birmingham Linux User Group –  http://birmingham.lug.org.uk Software Development with Open Source Open Source Business Systems www.opusvl.com
  • 28. Essay question •  Open Source software is often perceived as being non- commercial as free redistribution is permitted. However, many companies have managed to turn both the development and usage of Open Source software into a profitable business. –  Research the different business models that companies use to derive commercial benefit from Open Source software. –  Investigate the challenges that companies face in managing external development and user communities. Software Development with Open Source Open Source Business Systems www.opusvl.com