<ul><li>Adopting Open Source Software for Longer-term Reuse </li></ul><ul><li>Steve Crouch, SSI </li></ul><ul><li>[email_a...
Background <ul><li>Looked at sustainability in your own software – let’s look at it from the other side… </li></ul><ul><li...
Picking the Right Software <ul><li>Often many open source choices out there </li></ul><ul><ul><li>e.g. on SourceForge </li...
Picking the Right Software <ul><li>Easy to use the ‘nearest’ software library </li></ul><ul><ul><li>Installed on machine a...
Does it Do What You Want?  <ul><li>Yes, it’s an obvious question! </li></ul><ul><li>What are your requirements </li></ul><...
Is the Software Right for its Role? <ul><li>How will the software help to fulfil a goal? </li></ul><ul><li>Investigate pri...
Is it Actively Used, Developed and Supported?  <ul><li>Importance of  active  community (and its size) shouldn’t be undere...
Does the Software Have a Future? <ul><li>If development/support for software ends… </li></ul><ul><ul><li>e.g. lack of fund...
How is the Software Provided? <ul><li>Good documentation!!! </li></ul><ul><ul><li>User, administration, development (e.g. ...
Ask the Developers! <ul><li>Why not ask the developer community any important questions about the software? </li></ul><ul>...
Example: Taverna <ul><li>Workflow management system, for designing and executing workflows </li></ul><ul><li>Started as a ...
Example: JGraphT <ul><li>Java library for producing graphs </li></ul><ul><li>User support and announce mailing lists, sour...
Further Resources <ul><li>SSI guides: </li></ul><ul><ul><li>http://www.software.ac.uk/choosing-right-open-source-software-...
Upcoming SlideShare
Loading in...5
×

Adopting Open Source Software for Longer-term Reuse

381

Published on

Presentation by Steve Crouch, Software Architect at the Software Sustainability Institute.
Presented at the Advanced School on Scientific Software Development, Trieste, Italy, in February 2012.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
381
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • It’s not just about what you think you need now. It’s about what you, your intended software users/developer community need now and in the future Think about sustainability of software
  • look at it from the other side: clear overlap, but not the same
  • Choosing the wrong software can be expensive: wrong choice, need to replace it, avoid assumptions!
  • Not enough time is generally spent on making the right choice
  • Community use/need: bioinformatics - Taverna
  • Active community: might be lots of people using it, but are they active within the software’s community?
  • Programming language: if you plan to develop with it Easy to build/test suite: automated build and test
  • Programming language: if you plan to develop with it Easy to build/test suite: automated build and test
  • Adopting Open Source Software for Longer-term Reuse

    1. 1. <ul><li>Adopting Open Source Software for Longer-term Reuse </li></ul><ul><li>Steve Crouch, SSI </li></ul><ul><li>[email_address] </li></ul><ul><li>Advanced School on Scientific Software Development: Concepts and Tools </li></ul><ul><li>24/02/2011 </li></ul>
    2. 2. Background <ul><li>Looked at sustainability in your own software – let’s look at it from the other side… </li></ul><ul><li>Assume you have software that needs a new feature </li></ul><ul><li>You could implement the feature yourself </li></ul><ul><ul><li>Control over the feature’s implementation </li></ul></ul><ul><ul><li>No unneeded code or features </li></ul></ul><ul><li>Or, could make use of other software that has the feature, e.g. a code library </li></ul><ul><ul><li>It exists already, no re-inventing the wheel </li></ul></ul><ul><ul><li>Make use of other features (if helpful) </li></ul></ul><ul><li>Informed reuse should be encouraged </li></ul><ul><ul><li>Can save you time and effort now and later </li></ul></ul>
    3. 3. Picking the Right Software <ul><li>Often many open source choices out there </li></ul><ul><ul><li>e.g. on SourceForge </li></ul></ul><ul><li>But, should consider time required to </li></ul><ul><ul><li>Learn new software </li></ul></ul><ul><ul><li>Test it! </li></ul></ul><ul><ul><li>Integrate new software into your own </li></ul></ul><ul><ul><li>Manage updates to adopted software e.g. security, fixes </li></ul></ul><ul><li>Choosing the wrong software can be expensive! </li></ul><ul><li>Taking time early to make a good choice can save you a lot of time later </li></ul><ul><ul><li>Assume you’ve found a likely candidate piece of software </li></ul></ul><ul><ul><li>Let’s start by answering a few questions about it… </li></ul></ul>Initial Perception The Reality! Effort required to adopt third-party software
    4. 4. Picking the Right Software <ul><li>Easy to use the ‘nearest’ software library </li></ul><ul><ul><li>Installed on machine already </li></ul></ul><ul><ul><li>It’s the first candidate you’ve come across </li></ul></ul><ul><ul><li>You’ve heard about it </li></ul></ul><ul><ul><li>Unfortunately, it’s common practice… </li></ul></ul><ul><ul><li>… although it could be the right choice </li></ul></ul><ul><li>Taking time early to make a good choice could save you a lot of time later </li></ul><ul><ul><li>Assume you’ve found a likely candidate piece of software </li></ul></ul><ul><ul><li>Let’s start by answering a few questions about it… </li></ul></ul><ul><li>Goal: try to make an informed decision for reuse </li></ul>
    5. 5. Does it Do What You Want? <ul><li>Yes, it’s an obvious question! </li></ul><ul><li>What are your requirements </li></ul><ul><ul><li>Now, but also in the future… project goals? </li></ul></ul><ul><ul><li>Does it go far enough? </li></ul></ul><ul><ul><li>If it doesn’t quite fit your needs, can it be (easily) extended? </li></ul></ul><ul><li>What does your community use/need? </li></ul><ul><ul><li>Do they use an established piece of software for this? </li></ul></ul><ul><li>Are any needed features planned for deprecation? </li></ul>
    6. 6. Is the Software Right for its Role? <ul><li>How will the software help to fulfil a goal? </li></ul><ul><li>Investigate prior uses of the software </li></ul><ul><ul><li>Look for use cases or case studies e.g. on website </li></ul></ul><ul><ul><li>Have other projects used it as you need to use it? </li></ul></ul><ul><li>Technically… </li></ul><ul><ul><li>Evidence the software will integrate with your own </li></ul></ul><ul><ul><li>Track record for reliability </li></ul></ul><ul><ul><li>Test the software in its operating context </li></ul></ul>
    7. 7. Is it Actively Used, Developed and Supported? <ul><li>Importance of active community (and its size) shouldn’t be underestimated </li></ul><ul><ul><li>User community </li></ul></ul><ul><ul><li>Developer community </li></ul></ul><ul><li>Look for evidence of development </li></ul><ul><ul><li>Code repository (SVN/CVS check-ins) </li></ul></ul><ul><ul><li>Releases, feature enhancements </li></ul></ul><ul><li>Look for evidence of support </li></ul><ul><ul><li>Forums, issue tracker - actively used, good level of response? </li></ul></ul><ul><ul><li>Direct email </li></ul></ul><ul><li>Structured development </li></ul><ul><ul><li>Process for development? </li></ul></ul><ul><ul><li>Code contribution policy? </li></ul></ul><ul><ul><li>Deprecation policy? </li></ul></ul>
    8. 8. Does the Software Have a Future? <ul><li>If development/support for software ends… </li></ul><ul><ul><li>e.g. lack of funding, or software has been superseded </li></ul></ul><ul><ul><li>Could find yourself with unsupported software </li></ul></ul><ul><ul><li>Leads to software decay </li></ul></ul><ul><li>Will software exist within project’s lifecycle (and beyond)? Often difficult to estimate… </li></ul><ul><ul><li>Ask them! </li></ul></ul><ul><ul><li>Development, support and community </li></ul></ul><ul><ul><li>Roadmap? Previous history of frequent releases? Planned releases? </li></ul></ul><ul><ul><li>Actively updated project website? </li></ul></ul><ul><li>Open standards </li></ul><ul><ul><li>Has your community converged on appropriate standards? </li></ul></ul><ul><ul><li>Does software support them where you’d expect? </li></ul></ul><ul><ul><li>Evidence of established interoperability with other implementations? </li></ul></ul><ul><ul><li>e.g. Keyhole Markup Language (KML) for geographical annotation and visualisation, grid open standards from Open Grid Forum (OGF) </li></ul></ul>
    9. 9. How is the Software Provided? <ul><li>Good documentation!!! </li></ul><ul><ul><li>User, administration, development (e.g. API) </li></ul></ul><ul><li>Take into account your own skills </li></ul><ul><li>Pre-requisites… </li></ul><ul><ul><li>Easy to obtain and deploy? </li></ul></ul><ul><ul><li>Fit your own requirements e.g. operating system support </li></ul></ul><ul><li>If developing with the software… </li></ul><ul><ul><li>Access to source code repository e.g. SVN, CVS? </li></ul></ul><ul><ul><li>Understandable, modular, easy to build? </li></ul></ul><ul><ul><li>Unit tests or test suite? </li></ul></ul><ul><li>Licensing </li></ul><ul><ul><li>Do you have right to use/distribute it for its intended purpose? </li></ul></ul><ul><ul><li>Does software respect third-party copyright and licensing for its own dependencies? </li></ul></ul>
    10. 10. Ask the Developers! <ul><li>Why not ask the developer community any important questions about the software? </li></ul><ul><li>A sign of good support if the developers are responsive and friendly </li></ul><ul><li>Asking a developer can give you </li></ul><ul><ul><li>Indication of the type of responses you can expect from them in the future </li></ul></ul><ul><ul><li>As well as filling in any knowledge gaps to make your decision </li></ul></ul>
    11. 11. Example: Taverna <ul><li>Workflow management system, for designing and executing workflows </li></ul><ul><li>Started as a system for bioinformaticians, its use has expanded to include many other disciplines </li></ul><ul><li>Comprehensive user, developer and API documentation, roadmap </li></ul><ul><li>Source code under revision control in Subversion with a contribution licensing policy (Contributor License Agreement) </li></ul><ul><li>Extensibility framework </li></ul><ul><li>Active and responsive bug tracking system, regularly updated website </li></ul><ul><li>Supports a host of domain-specific and web service standards,, development funding until 2014 </li></ul><ul><li>Organised training and workshops </li></ul><ul><li>Long list of example uses of Taverna </li></ul><ul><li>http://www.taverna.org.uk/ </li></ul>
    12. 12. Example: JGraphT <ul><li>Java library for producing graphs </li></ul><ul><li>User support and announce mailing lists, source code under revision control (SVN) </li></ul><ul><li>Feature and bug trackers with high activity and prompt responses </li></ul><ul><li>User Wiki for all things JGraphT </li></ul><ul><li>Code contribution policy and good API documentation </li></ul><ul><li>http://www.jgrapht.org/ </li></ul><ul><li>Example shows that you probably won’t get all the right answers </li></ul><ul><li>Need to decide what is important for your project </li></ul>
    13. 13. Further Resources <ul><li>SSI guides: </li></ul><ul><ul><li>http://www.software.ac.uk/choosing-right-open-source-software-your-project </li></ul></ul><ul><li>Other resources: </li></ul><ul><ul><li>OSS Watch: http://www.oss-watch.ac.uk/resources/tips.xml </li></ul></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×