Software Development with Open Source
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Software Development with Open Source

on

  • 609 views

Presented to Birmingham University in 2010 as part of the Computer Science - Commercial Programming course.

Presented to Birmingham University in 2010 as part of the Computer Science - Commercial Programming course.

Statistics

Views

Total Views
609
Views on SlideShare
609
Embed Views
0

Actions

Likes
0
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Software Development with Open Source Presentation Transcript

  • 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 applicationcomponents 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::Declareclass 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 StashUser 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