The Symphony Software Foundation provides a service-based infrastructure to support committers throughout the entire project lifecycle.
This page helps project leads (or any other project member) to setup a project pipeline for software development following the team's preferences and leveraging the infrastructure provided by the Foundation.
To know more about Github, you can browse through their list of guides.
Managing issues (or tickets) across a team is a very important project activity, especially at the beginning; the Foundation strongly advises to choose and setup an issue tracking system as soon as the project is transferred.
Github Issues is available for all hosted projects; alternatively, the project team can request the Foundation to host the project on the JIRA Foundation instance, by simply creating an INFRA Task issue.
Additional configuration tasks for issue tracking include:
- Define a taxonomy of issue labels (i.e. Bug, Enhancement, Question, Task, ...)
- Define an initial list of milestones
Follow the Mastering Issues documentation page to get started in 10 minutes.
When setting up the software development process, there are different common configuration steps that the team need to take care of; below are listed the most important ones, linking to the specific pages that describe the infrastructure configuration depending on the language and eco-system of choice.
Building and testing
The build is an end-to-end process that converts source code into reusable artifacts, something that we will refer to as deployable units, which is developed by the project team and hosted in the github repository. It is a particularly important task, as it can centralise and trigger several automated sub-tasks, such as version control, code testing, quality and compliance reports and more.
To know more about build configuration, check the Languages page.
Version control is the process to establish a format to a project version and the rules to update it, preferably integrating with automated build and release systems; the Foundation mandates the user of Semantic Versioning ("semver") throughout a project's lifecycle:
- for incubating projects, it is allowed to deploy releases with version numbers < 1.0.0
- for active projects, it is allowed to deploy releases with version 1.0.0 and above
Every project team is encouraged to define more specific MAJOR, MINOR and PATCH definitions, in order to provide a better understanding for consumers on what to expect when adopted; for those ecosystems that support more complex version number representations (e.g. Python), the Foundation strongly recommends restricting version numbers to semver format wherever possible.
As part of the activation process, the Foundation requires several documentation items, to make sure that the release of an active project complies with high documentation standards.
- Use Github Wiki
- Use Foundation's Github Pages, hosted on http://symphonyoss.github.io/<project_name>; read more on Github help to know how to configure it
- Use Confluence, hosted on the Confluence Foundation instance (create an INFRA Task issue to submit the request)
Some languages or build systems provide support for automated documentation publishing; browse the Languages page to know more about automated configurations for a given language.
The release process allows to publish deployable units into a publicly available artifact repository, by invoking the build process and applying version control to increment the project's version; the Foundation collects guides and best practices on how to release a project, depending on the language and eco-system of choice; browse the Languages page to know more about automated configurations for a given language.
CI allows to automatically verify every code change that allows to detect problems earlier; you can read more here; the Foundation facilitates the configuration of CI systems, depending of the language and eco-system of choice.
The Foundation does not mandate CI at any project phase, though it strongly advises to investigate automating any process that can improve software quality, security and compliance.
In order to measure and report the level of quality, security and legal compliance, the Foundation facilitates the integration of build processes with external systems specialised in code analysis; the Reporting page also guides a project team on how to produce and publish measurements that are required by project activation.