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

Like this? Share it with your network

Share

Software Development with Open Source

  • 640 views
Uploaded on

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.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
640
On Slideshare
640
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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