Finding the right wheel when
you don't want to reinvent it
Michael Hucka Matthew Graham

California Institute of Technology
Common problem: finding software
• Ask Google? 1000’s of results
• Ask colleagues? They may not know
• Read the literature? It always lags
This impacts software reuse & sustainability
• Can’t find it more likely to reinvent it waste $$ and time
Survey about how people look for software
Invitations via lists for systems biology & astronomy
Total respondents: 69
• Fields: physical sciences, computing, math, bio
• 56 software developers, 13 non-devs
- Dev experience = 1 yr – 45 yrs (mean 20 yrs)
Find report at arXiv:1605.02265
“In general, how important are the following
characteristics when you are searching for
ready-to-run software for a task?”
Responses: what’s important?
0 10 20 30 40 50 60 70
Size of software
Similarity to other software you used
Software architecture
Quality of support for the software
Security provisions
Other people’s opinions
Programming language(s) used in implementation
Reputation of the developers
How easy the software is to extend
License terms for source code
Speed/performance of the software
How easy the software is to install
Availability of source code
Hardware compatibility and requirements
Quality of documentation
How easy the software is to learn
License terms for usage
Apparent quality of the software
Operating system requirements
Price
Support for specific data standards and file formats
Availability of specific features
Essential
Usually of above-average importance
Average importance
Somewhat or occasionally important
Rarely or never important
Total # responses: 69
Responses: what’s important?
0 10 20 30 40 50 60 70
Size of software
Similarity to other software you used
Software architecture
Quality of support for the software
Security provisions
Other people’s opinions
Programming language(s) used in implementation
Reputation of the developers
How easy the software is to extend
License terms for source code
Speed/performance of the software
How easy the software is to install
Availability of source code
Hardware compatibility and requirements
Quality of documentation
How easy the software is to learn
License terms for usage
Apparent quality of the software
Operating system requirements
Price
Support for specific data standards and file formats
Availability of specific features
Essential
Usually of above-average importance
Average importance
Somewhat or occasionally important
Rarely or never important
Total # responses: 69
Usethistoimprovechancesyoursoftwaregetsreused
Make it easy for people to discover info about what they want to know
Address basic concerns about the software
Characteristic Makeprominentindocs Follow good practices
Features offered ✔
Data & file standards supported ✔
Price ✔
Operating system requirements ✔
License ✔
Hardware requirements ✔
Availability of source code ✔
How easy is it to learn? ✔ ✮
Quality of software ✮
Quality of documentation ✮

Finding the right wheel

  • 1.
    Finding the rightwheel when you don't want to reinvent it Michael Hucka Matthew Graham
 California Institute of Technology
  • 2.
    Common problem: findingsoftware • Ask Google? 1000’s of results • Ask colleagues? They may not know • Read the literature? It always lags This impacts software reuse & sustainability • Can’t find it more likely to reinvent it waste $$ and time
  • 3.
    Survey about howpeople look for software Invitations via lists for systems biology & astronomy Total respondents: 69 • Fields: physical sciences, computing, math, bio • 56 software developers, 13 non-devs - Dev experience = 1 yr – 45 yrs (mean 20 yrs) Find report at arXiv:1605.02265
  • 4.
    “In general, howimportant are the following characteristics when you are searching for ready-to-run software for a task?”
  • 5.
    Responses: what’s important? 010 20 30 40 50 60 70 Size of software Similarity to other software you used Software architecture Quality of support for the software Security provisions Other people’s opinions Programming language(s) used in implementation Reputation of the developers How easy the software is to extend License terms for source code Speed/performance of the software How easy the software is to install Availability of source code Hardware compatibility and requirements Quality of documentation How easy the software is to learn License terms for usage Apparent quality of the software Operating system requirements Price Support for specific data standards and file formats Availability of specific features Essential Usually of above-average importance Average importance Somewhat or occasionally important Rarely or never important Total # responses: 69
  • 6.
    Responses: what’s important? 010 20 30 40 50 60 70 Size of software Similarity to other software you used Software architecture Quality of support for the software Security provisions Other people’s opinions Programming language(s) used in implementation Reputation of the developers How easy the software is to extend License terms for source code Speed/performance of the software How easy the software is to install Availability of source code Hardware compatibility and requirements Quality of documentation How easy the software is to learn License terms for usage Apparent quality of the software Operating system requirements Price Support for specific data standards and file formats Availability of specific features Essential Usually of above-average importance Average importance Somewhat or occasionally important Rarely or never important Total # responses: 69
  • 7.
    Usethistoimprovechancesyoursoftwaregetsreused Make it easyfor people to discover info about what they want to know Address basic concerns about the software Characteristic Makeprominentindocs Follow good practices Features offered ✔ Data & file standards supported ✔ Price ✔ Operating system requirements ✔ License ✔ Hardware requirements ✔ Availability of source code ✔ How easy is it to learn? ✔ ✮ Quality of software ✮ Quality of documentation ✮