Chapter 9

Chapter 9

Support

As applications grow and scale, there will be a point in time where professional support is necessary to accomodate the user base of the product. With the scaling, and depnding on the type of project, obtaining support will be placed on the user rather than the maintainers, unless the project is closed source and not an application for a specific use case developed by a third party. Some tools that can help with supporting and maintaining an open source project are the following:

  • GitHub
  • GitLab
  • Bitbucket
  • Source Forge

A good metric to determine the maturity of a project is the Open Source Maturity Model (OMM):

  • Basic
  • Intermediate
  • Advanced

The basic level includes:

  • Documentation
  • Adoption of established standards
  • Quality test plan
  • Licenses
  • Technical platform
  • Commits and bug reports
  • Mantainence and stability
  • Configuration management
  • Project planning
  • Requirement management
  • Product roadmap

With all these attributes present, a project can begin to scale and advance to higher levels of the OMM. But as an open source project hosted on one services listed above, maitanence becomes even easier, since any user of the platform can contribute to the project and post issues that need to be addressed by the community. Open source projects add a layer of security, since the code is public and can be audited for abnormalities or security risks by the community or even be patched via a pull request to the project. Users within a community can be classified as one of the three categories:

  • User: know and use the project on a regular basis
  • Contributor: users that have also implement bug fixes and add minor features
  • Committers: all of the responsibilities of the contributor, with the added responisbilities of the following:
    • Code review of bug fixes
    • Merges pull requests to the main code base

Within the committer role, the following positions are present:

  • Project Lead
  • Exper User: maintains actors, use cases, requirements, and user roles within the project
  • Lead Developer
  • Developers: maintain the following:
    • User interface
    • Domain Classes
    • Database administration
    • Codebase
    • Testing (unit tests)
    • Packaging
    • Build schedule
  • Testers: maintain the following:
    • Bug reports
    • Forum(s)
  • Writers: online assistance and documentation
  • Bug Marshall(s): triage open bugs within the project
  • Release Managers: oversee packaging and release of new versions

Finally, within the whole structure of the project there may be constraints that are domain specific such as:

  • Internet access
  • Bandwidth
  • Power source
  • Natural disaster (especially for a centralized data center)
  • Learning curve for new systems
  • System customization
  • Local developers and the learning curve associated with the new software
  • Legacy systems
  • Data granularity, validity, and redundancy
Written on March 30, 2021