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

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
 

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

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
 

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

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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 Takeoffsammart93
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 

Dernier (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 

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