1 of 14

Open Software

EIPOD Open Science training

Lisanna Paladin

Bioinformatics Community Project Manager @ Bio-IT

Copyright© 2018 EMBL

Photo: Octopus by Jim Swoger, Montserrat Coll/EMBL Barcelona, sample courtesy of Roger Villanueva, ICM-CSIC

2 of 14

Open Source Software (OSS)

  1. Software distributed with source code (often publicly available).

  1. With licence allowing anyone to reuse, inspect, modify, and enhance the code.

3 of 14

Why Open Source Software

Modularity & Flexibility of key components, vs. proprietary software solutions that tend to be monolithic.

Lower total cost of ownership (TCO) and Reliability: Lower comprehensive costs. More trust.

Secure & Transparent: Empirically, open source tends to produce better quality software. Why? Community.

4 of 14

Community development

Three advantages of Open Software:

  1. tap the knowledge of a diversity of developers, not just those on one organization’s payroll.
  2. the number of potentially contributing developers and thus the potential knowledge pool is orders of magnitude larger.
  3. open source software gets adapted to a variety of use cases, not just the one the originally intended, surfacing bugs and edge cases much more rapidly.

Bonus: Sustainability.

5 of 14

Why Open Source Software

6 of 14

How Open Source Software

  1. Make source code publicly accessible from day one
  2. Make software easy to discover by providing software metadata via a popular community registry
  3. Adopt a licence and comply with the licence of third-party dependencies
  4. Define clear and transparent contribution, governance and communication processes

Software Management Plan

7 of 14

The Software Management Plan

Publication

Stage 5: publishing software and/or research results obtained with the software

Production

Stage 4: production software working on real-world data in a scalable and stable manner

Application

Stage 3:

release and quality assessment

Construction

Stage 2: prototyping, construction and implementing core functionality

Inception

Stage 1: concept, proposal writing, planning and inception

In what stage is your project?

8 of 14

Facilitating open collaborative work

  1. Publicly accessible repository with version control
  2. Semantic versioning semver.org/
  3. Changelog
  4. Citation guidelines
  5. Contribution guidelines
    1. Code of Conduct
  6. Licensing choosealicense.com/

Inception

1.0.0-beta

Major pre-release

Minor

Patch

9 of 14

Facilitating open collaborative work

  1. Different types of documentation
    1. For users (tutorials, example, explanation of features, …)
    2. For contributors (comments, docstrings, …)

Construction

10 of 14

Tests are of triple value

  1. Unit tests
  2. Integration tests
  3. Functional test
  4. Performance tests

Safety net

Documentation

Lower entry barrier

Application

11 of 14

Automate when possible

  1. Open source resources: GitHub and GitLab
  2. CI / CD pipelines
  3. Bots

Production

12 of 14

Be mindful of reproducibility & sustainability

  1. The importance of packaging
  2. … and of registries
  3. Academic software ≠ poor quality
  4. Community building

Publication

13 of 14

Useful links

14 of 14

Questions?