1. Introduction
1.1. Objective
This document outlines the facilities and support provided to software development teams (SDTs) in the GN Project, focusing on resources managed by the Software Governance and Support function (Task 2, Work Package 9 – WP9T2). It overviews the resources, services, processes, and opportunities available to support the SDTs' engineering efforts.
The guide emphasizes the operational aspects of software development and maintenance for the teams. Additionally, it highlights related initiatives that indirectly enhance team performance, such as Product Lifecycle Management (PLM), GLAD training events, and the Common Best Practices framework.
1.2. Intended audience
This document is intended for software development teams in GÉANT, especially new teams, to understand the organization's context and the services available to support software development projects.
2. Software development in GÉANT
Regardless of the software lifecycle adopted by the SDT, it usually involves several typical activities. Below, we outline these activities and describe how WP9T2 or other dedicated GÉANT teams support them.
Modern software development has evolved beyond delivering functional and user-friendly interfaces. The process has become more holistic due to increasing complexity, larger development teams, and agile methodologies. These factors demand greater code resilience, efficient collaboration, and automation of build and delivery processes, leading to more complex platforms and maintenance requirements.
2.1. Software development, build&deployment
To support software development in GÉANT and meet SDT needs, WP9T2 maintains several software development platforms, which can be easily integrated to create a more effective and user-friendly environment.
- BitBucket is a Git-based code repository developed by Atlassian. It secures typical storage and versioning capabilities and provides several extensions.
- Jira is an issue and ticket tracker, also commonly used for defining and managing requirements and general software project management. Service Desk and other extensions (like issue collectors) allow the development teams to support their users and customers in getting feedback and raising issues directly via the dedicated form.
- GitLab is an open-source end-to-end software development platform that spans the entire software development lifecycle from repository management through team communication to task coordination and Continuous Integration/Continuous Delivery (CI/CD), including a simplified form of issue and bug management.
- Artifactory is a repository for managing software packages and components in various versions that helps to share released software and libraries.
- Bamboo is a CI/CD service that is well integrated with other Atlassian services like BitBucket and Jira. It allows for automating several activities in the software development process. The instance provided by WP9T2 helps automate CI/CD pipelines, which could be used for software integration, testing, and deployment.
- SonarQube is a static code analysis tool that supports quality assurance.
In addition, virtual machines for testing and software integration are provided within QALab and available through a dedicated service desk operated by WP9T2.
2.2. Communication
Due to its distributed organizational structure, GÉANT offers a variety of tools supporting communication within and between teams.
There are no project- or team-specific mailboxes for team members that GÉANT would manage. Instead, they are provided and managed by the team members' home NRENs.
GÉANT offers and administers a Slack space for instant communication. Several topic-oriented channels exist, and new ones can be created on demand. The channels could be publicly open or restricted to specific members. Slack allows for archiving messages, but the number of messages in the archive is limited due to license restrictions.
Another commonly used communication tool is the Confluence wiki. It allows for documenting work, online collaboration, and data exchange. Most projects have dedicated spaces with clearly separated public and private content. Additionally, Confluence includes several plugins that extend its capabilities for sketching, planning, scheduling events, tracking comments, etc.
2.3. Quality assurance
Quality assurance and management (QA) usually rely on tests conducted at different levels. In GÉANT, the SDTs are responsible for organizing and executing tests. However, some best practices for SDTs provide recommendations to the teams in that respect.
Another quality pillar is static code analysis and review, as important as software testing. WP9T2 offers various code review services, from the assessment performed solely by a tool (SonarQube and Mend) and interpreted by WP9T2's experts to a comprehensive review conducted by human subject-matter experts. The services provide high security and maintainability-related protection for the GÉANT products and can be customized to fit the SDTs' needs.
Also, Jira (managed by WP9T2) is essential for practical QA-related work. It allows tracking the progress of issues and tasks, from requirements through development to fixing and verifying defects.
2.4. Project analytics and reporting
The primary source of comprehensive information about GÉANT software projects is the Software Catalogue (SC). It is a GÉANT-wide system (hosted and developed by WP9T2) that collects, consolidates, and delivers information about GÉANT-created software. The SC provides a rich and consistent profile for a single software project, whether its resources are hosted in a single place or distributed over the Internet (issue trackers, Git repositories, etc.). That way, SC provides a big picture from two perspectives: the individual project and the entire organization. Project records cover a broad spectrum of information, including (but not limited to) automatically discovered data, such as team and community members, the adopted technology stack, analytics, and reports (statistics, visualizations for code, issues tracker, member's activity), as well as manually maintained information (e.g., basic description, specific practices applied by the team). The SC integrates smoothly with external analytical tools such as SonarQube and Mend and provides access to data in GitHub and GitLab (which is coming soon!) to learn more about the project offer than what these tools can tell about the source code and its evolution.
Management of external software libraries, their licenses, and their mutual compatibility is also a crucial concern for GÉANT. WP9T2 offers a service based on the Mend tool, which scans the software files and identifies the licenses of various product components. It can also support the interpretation of mutual compatibility of present licenses and identifying components with licenses incompatible with the product's license. In addition, it identified obsolete versions of libraries and those known to be vulnerable.
2.5. Help and Knowledge Base
For technical information, GÉANT provides a dedicated Confluence space with Knowledge Base that answers several recurring issues. It is a good starting point for collecting information and is constantly extended and updated.
3. General and long-term support
In GÉANT, SDTs are given great freedom and independence in organizing their internal work, meaning they can most effectively adopt, modify, or customize the work process. However, some requirements and constraints are project-wide and must be addressed by all teams.
In product licensing and IPR governance, the IPR coordinator provides guidance and support in specific cases that require human judgment or advice.
3.1. Product Lifecycle Management
The process-oriented framework common to all teams is Product Lifecycle Management (PLM), which identifies stages of the software development process and defines criteria for transiting between them. The criteria are called gates; each gate has several associated requirements. For example, a team willing to transfer and deploy their product in production must successfully perform a series of checks that the Project Management Board will review and approve further. Only then will the product be made available to the users (either internally within GÉANT or publicly). While some checks can be conducted directly by the team, others are offered and performed by dedicated teams in GÉANT, which provide such services. In the case of transferring the project to production, a comprehensive code review is conducted by WP9T2's Test&Analysis subteam.
The GÉANT Project Management Office manages PLM, but WP9T2 helps the SDTs pass the PLM gates with Common Best Practices.
3.2. Supporting the process management within teams
WP9T2's Software Management subteam provides support for the optimization of software processes. Specifically, two frameworks have been defined and implemented: the Software Maturity Model, which sets objectives that should be addressed by the teams in respective process areas, and the Catalogue of Common Best Practices, which provides directional advice on how to address the objectives from the maturity model. These complementary frameworks can be implemented and adopted step-by-step, depending on the SDT's needs and context. In addition, the Software Management subteam also helps implement the best practices in the teams by recognizing their expectations and collaborating with the teams to implement the best.
3.3. Training
Effective software development heavily relies on continuous improvement and learning. For that purpose, the GÉANT Learning and Development (GLAD) team organizes and offers training to all GÉANT members. Specifically, two annual events are organized by WP9T2 (under the auspices of GLAD), designated for software developers: School of Software Engineering (SSE) and Secure Code Training (SCT). SSE usually involves a 3-day workshop focused on a single topic that is relevant and interesting to the participants. It is not technology-intensive but rather emphasizes developing analytical skills, modeling, collaboration, and creative thinking. SCT is a more technical workshop intended to increase GÉANT's software developers' skills in writing secure code.
WP9T2 provides workshops, inforshares, and webinars, also co-organized by GLAD, to present the tools and services offered to support SDTs. There are also trainings delivered directly by GLAD. For the details of planned and forthcoming events, please refer to the GLAD calendar.