SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Rupy2012 ArangoDB Workshop Part2
Rupy2012 ArangoDB Workshop Part2Rupy2012 ArangoDB Workshop Part2
Rupy2012 ArangoDB Workshop Part2
ArangoDB Database
 
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
OSCON Byrum
 

Tendances (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
 

Similaire à Software Development with Open Source

Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
Avi Kedar
 

Similaire à 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)
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Dernier (20)

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
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
 
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
 
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...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 

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