SlideShare a Scribd company logo
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

More Related Content

What's hot

Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPress
Taylor Lovett
 
The JSON REST API for WordPress
The JSON REST API for WordPressThe JSON REST API for WordPress
The JSON REST API for WordPress
Taylor 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 2009
Jason Davies
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
Taylor Lovett
 
Vibe Custom Development
Vibe Custom DevelopmentVibe Custom Development
Vibe Custom Development
GWAVA
 
Oracle APEX Nitro
Oracle APEX NitroOracle APEX Nitro
Oracle APEX Nitro
Marko Gorički
 
Day 7 - Make it Fast
Day 7 - Make it FastDay 7 - Make it Fast
Day 7 - Make it Fast
Barry 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 Handlebars
Marko Gorički
 
Rupy2012 ArangoDB Workshop Part2
Rupy2012 ArangoDB Workshop Part2Rupy2012 ArangoDB Workshop Part2
Rupy2012 ArangoDB Workshop Part2
ArangoDB Database
 
Top ten-list
Top ten-listTop ten-list
Top ten-list
Brian DeShong
 
Website designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopmentWebsite designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopment
Css 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 Fast
OSCON 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 Rails
Barry Jones
 
Web Ninja
Web NinjaWeb Ninja
Web Ninja
Alfi Rizka
 
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
 
Php converted pdf
Php converted pdfPhp converted pdf
Php converted pdf
Northpole Web Service
 
Ppt php
Ppt phpPpt php
Modernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with ElasticsearchModernizing WordPress Search with Elasticsearch
Modernizing WordPress Search with Elasticsearch
Taylor Lovett
 

What's hot (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
 

Similar to 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
 
Swt
SwtSwt
Olympya web-tools 2011
Olympya web-tools 2011Olympya web-tools 2011
Olympya web-tools 2011
Paulo Mattos
 
Apache Con 2021 Structured Data Streaming
Apache Con 2021 Structured Data StreamingApache Con 2021 Structured Data Streaming
Apache Con 2021 Structured Data Streaming
Shivji 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 Development
trevorthornton
 
Web programming
Web programmingWeb programming
Web programming
Ishucs
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
Nicolaas Matthijs
 
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
 
Case study
Case studyCase study
Case study
karan saini
 
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
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source Contributions
Neev Technologies
 
Holy PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionHoly PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood edition
Dave 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 Beanstalk
Amazon Web Services
 
Open source softwares
Open source softwaresOpen source softwares
Open source softwares
Sahil Jindal
 
Open source softwares
Open source softwaresOpen source softwares
Open source softwares
Sahil 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 Security
Sam 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 2018
Den Delimarsky
 
Ipc mysql php
Ipc mysql php Ipc mysql php
Ipc mysql php
Anis Berejeb
 
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
Erik 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
 

Similar to 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)
 

Recently uploaded

FIDO Munich Seminar Workforce Authentication Case Study.pptx
FIDO Munich Seminar Workforce Authentication Case Study.pptxFIDO Munich Seminar Workforce Authentication Case Study.pptx
FIDO Munich Seminar Workforce Authentication Case Study.pptx
FIDO Alliance
 
The Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - CoatueThe Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - Coatue
Razin Mustafiz
 
Finetuning GenAI For Hacking and Defending
Finetuning GenAI For Hacking and DefendingFinetuning GenAI For Hacking and Defending
Finetuning GenAI For Hacking and Defending
Priyanka Aash
 
FIDO Munich Seminar: FIDO Tech Principles.pptx
FIDO Munich Seminar: FIDO Tech Principles.pptxFIDO Munich Seminar: FIDO Tech Principles.pptx
FIDO Munich Seminar: FIDO Tech Principles.pptx
FIDO Alliance
 
UiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPath Community Day Amsterdam: Code, Collaborate, ConnectUiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPathCommunity
 
Garbage In, Garbage Out: Why poor data curation is killing your AI models (an...
Garbage In, Garbage Out: Why poor data curation is killing your AI models (an...Garbage In, Garbage Out: Why poor data curation is killing your AI models (an...
Garbage In, Garbage Out: Why poor data curation is killing your AI models (an...
Zilliz
 
"Building Future-Ready Apps with .NET 8 and Azure Serverless Ecosystem", Stan...
"Building Future-Ready Apps with .NET 8 and Azure Serverless Ecosystem", Stan..."Building Future-Ready Apps with .NET 8 and Azure Serverless Ecosystem", Stan...
"Building Future-Ready Apps with .NET 8 and Azure Serverless Ecosystem", Stan...
Fwdays
 
FIDO Munich Seminar Introduction to FIDO.pptx
FIDO Munich Seminar Introduction to FIDO.pptxFIDO Munich Seminar Introduction to FIDO.pptx
FIDO Munich Seminar Introduction to FIDO.pptx
FIDO Alliance
 
Cracking AI Black Box - Strategies for Customer-centric Enterprise Excellence
Cracking AI Black Box - Strategies for Customer-centric Enterprise ExcellenceCracking AI Black Box - Strategies for Customer-centric Enterprise Excellence
Cracking AI Black Box - Strategies for Customer-centric Enterprise Excellence
Quentin Reul
 
Self-Healing Test Automation Framework - Healenium
Self-Healing Test Automation Framework - HealeniumSelf-Healing Test Automation Framework - Healenium
Self-Healing Test Automation Framework - Healenium
Knoldus Inc.
 
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and ConsiderationsChoosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
webbyacad software
 
FIDO Munich Seminar FIDO Automotive Apps.pptx
FIDO Munich Seminar FIDO Automotive Apps.pptxFIDO Munich Seminar FIDO Automotive Apps.pptx
FIDO Munich Seminar FIDO Automotive Apps.pptx
FIDO Alliance
 
The Challenge of Interpretability in Generative AI Models.pdf
The Challenge of Interpretability in Generative AI Models.pdfThe Challenge of Interpretability in Generative AI Models.pdf
The Challenge of Interpretability in Generative AI Models.pdf
Sara Kroft
 
NVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space ExplorationNVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space Exploration
Alison B. Lowndes
 
Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024
Michael Price
 
Redefining Cybersecurity with AI Capabilities
Redefining Cybersecurity with AI CapabilitiesRedefining Cybersecurity with AI Capabilities
Redefining Cybersecurity with AI Capabilities
Priyanka Aash
 
FIDO Munich Seminar In-Vehicle Payment Trends.pptx
FIDO Munich Seminar In-Vehicle Payment Trends.pptxFIDO Munich Seminar In-Vehicle Payment Trends.pptx
FIDO Munich Seminar In-Vehicle Payment Trends.pptx
FIDO Alliance
 
The History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal EmbeddingsThe History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal Embeddings
Zilliz
 
Demystifying Neural Networks And Building Cybersecurity Applications
Demystifying Neural Networks And Building Cybersecurity ApplicationsDemystifying Neural Networks And Building Cybersecurity Applications
Demystifying Neural Networks And Building Cybersecurity Applications
Priyanka Aash
 
FIDO Munich Seminar: Strong Workforce Authn Push & Pull Factors.pptx
FIDO Munich Seminar: Strong Workforce Authn Push & Pull Factors.pptxFIDO Munich Seminar: Strong Workforce Authn Push & Pull Factors.pptx
FIDO Munich Seminar: Strong Workforce Authn Push & Pull Factors.pptx
FIDO Alliance
 

Recently uploaded (20)

FIDO Munich Seminar Workforce Authentication Case Study.pptx
FIDO Munich Seminar Workforce Authentication Case Study.pptxFIDO Munich Seminar Workforce Authentication Case Study.pptx
FIDO Munich Seminar Workforce Authentication Case Study.pptx
 
The Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - CoatueThe Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - Coatue
 
Finetuning GenAI For Hacking and Defending
Finetuning GenAI For Hacking and DefendingFinetuning GenAI For Hacking and Defending
Finetuning GenAI For Hacking and Defending
 
FIDO Munich Seminar: FIDO Tech Principles.pptx
FIDO Munich Seminar: FIDO Tech Principles.pptxFIDO Munich Seminar: FIDO Tech Principles.pptx
FIDO Munich Seminar: FIDO Tech Principles.pptx
 
UiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPath Community Day Amsterdam: Code, Collaborate, ConnectUiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPath Community Day Amsterdam: Code, Collaborate, Connect
 
Garbage In, Garbage Out: Why poor data curation is killing your AI models (an...
Garbage In, Garbage Out: Why poor data curation is killing your AI models (an...Garbage In, Garbage Out: Why poor data curation is killing your AI models (an...
Garbage In, Garbage Out: Why poor data curation is killing your AI models (an...
 
"Building Future-Ready Apps with .NET 8 and Azure Serverless Ecosystem", Stan...
"Building Future-Ready Apps with .NET 8 and Azure Serverless Ecosystem", Stan..."Building Future-Ready Apps with .NET 8 and Azure Serverless Ecosystem", Stan...
"Building Future-Ready Apps with .NET 8 and Azure Serverless Ecosystem", Stan...
 
FIDO Munich Seminar Introduction to FIDO.pptx
FIDO Munich Seminar Introduction to FIDO.pptxFIDO Munich Seminar Introduction to FIDO.pptx
FIDO Munich Seminar Introduction to FIDO.pptx
 
Cracking AI Black Box - Strategies for Customer-centric Enterprise Excellence
Cracking AI Black Box - Strategies for Customer-centric Enterprise ExcellenceCracking AI Black Box - Strategies for Customer-centric Enterprise Excellence
Cracking AI Black Box - Strategies for Customer-centric Enterprise Excellence
 
Self-Healing Test Automation Framework - Healenium
Self-Healing Test Automation Framework - HealeniumSelf-Healing Test Automation Framework - Healenium
Self-Healing Test Automation Framework - Healenium
 
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and ConsiderationsChoosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
 
FIDO Munich Seminar FIDO Automotive Apps.pptx
FIDO Munich Seminar FIDO Automotive Apps.pptxFIDO Munich Seminar FIDO Automotive Apps.pptx
FIDO Munich Seminar FIDO Automotive Apps.pptx
 
The Challenge of Interpretability in Generative AI Models.pdf
The Challenge of Interpretability in Generative AI Models.pdfThe Challenge of Interpretability in Generative AI Models.pdf
The Challenge of Interpretability in Generative AI Models.pdf
 
NVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space ExplorationNVIDIA at Breakthrough Discuss for Space Exploration
NVIDIA at Breakthrough Discuss for Space Exploration
 
Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024
 
Redefining Cybersecurity with AI Capabilities
Redefining Cybersecurity with AI CapabilitiesRedefining Cybersecurity with AI Capabilities
Redefining Cybersecurity with AI Capabilities
 
FIDO Munich Seminar In-Vehicle Payment Trends.pptx
FIDO Munich Seminar In-Vehicle Payment Trends.pptxFIDO Munich Seminar In-Vehicle Payment Trends.pptx
FIDO Munich Seminar In-Vehicle Payment Trends.pptx
 
The History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal EmbeddingsThe History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal Embeddings
 
Demystifying Neural Networks And Building Cybersecurity Applications
Demystifying Neural Networks And Building Cybersecurity ApplicationsDemystifying Neural Networks And Building Cybersecurity Applications
Demystifying Neural Networks And Building Cybersecurity Applications
 
FIDO Munich Seminar: Strong Workforce Authn Push & Pull Factors.pptx
FIDO Munich Seminar: Strong Workforce Authn Push & Pull Factors.pptxFIDO Munich Seminar: Strong Workforce Authn Push & Pull Factors.pptx
FIDO Munich Seminar: Strong Workforce Authn Push & Pull Factors.pptx
 

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