You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

STATUS: PROPOSAL

Motivation

Apache Sling is a highly modular project, consisting of 290+ modules as of . As such, there is extra work associated with releases and keeping tabs on community contributions compared to more monolithic projects. Additionally, onboarding new contributors is a process that should be simplified. Removing barriers from contribution is a great way to allow contributors to focus on getting actual contributions done, rather than finding out how to contribute.

This document lists a number of perceived pain points for Sling contributors, developers and release managers and proposes solutions to improve the situation.

PRB-CONTRIB: slow turnaround for pull requests

Pull requests are often slowly validated and merged, mainly due to lack of reviewer time. Besides reviewing the code there is also a need of running the build, integrating in the Sling Starter and running the integration tests. This often becomes time consuming for reviewers and causes delays for the contributors.

Currently pull requests are validated by:

  • running the Maven build
  • running an incremental SonarQube analysis

Enhanced pull request validation for bundles included in the Sling starter would include:

  • deployment of current SNAPSHOT in the latest Sling Starter
  • execution of Sling ITs against the latest Sling Starter + module SNAPSHOT from pull request

Additionally, pull request validation should be enhanced to also report code coverage changes.

This would increase confidence of reviewers and reduce turnaround time for pull requests.

David Bosschaert rightly points out that

it can often happen that people who could apply pull requests simply missed them because they were busy looking elsewhere. One thing that sometimes helps in such cases is to simply ping someone directly involved in the specific area and ask them if they have time to merge the PR. I tend to think that the personal approach (rather than an automated email) sometimes has more effect.

To spot those stale PRs we can consider building a dashboard of open pull requests. Alternatively,  an automated email once per week to dev@sling mightalso work (or might get ignored).

PRB-RELEASE: manual work for Sling releases

The Sling release management page lists a large number of manual steps that are required to perform a release. Many of these must be run by the release manager, since by definition releases are individual acts in the Apache Software Foundation. However, the steps can be automated  or simplified by tooling.

StepToolsAutomation potential
Staging release candidatesMaven, GPGSmall, iusually a single Maven command. Requires access to developer's Maven credentials and GPG keys
Starting the voteEmail, JiraMedium, boilerplate text where placeholders are replaced
Counting the votesEmailMedium, reading emails and composing a release result mail
Promotion - dist.apache.orgSVNSmall, adding/removing files from SVN.
Promotion - register with Apache Reporter ServiceHTTPLarge, script already exists
Promotion - push to Maven CentralHTTP

Medium, interaction with Nexus

Promotions - update siteGitLage - modifications are mostly automatic, a pull request can be automatically issued
Jira UpdateJiraLarge - releasing current version, releasing new version, closing issues fixed in current version.
Sling Starter updateGitLarge - a pull request can be created when outdated Sling bundles are found in the Launchad

The proposed solution comes with two parts:

  1. A Sling-Dev CLI tool that automates tasks that must be manually performed by the developer: Email generation, Jira management, etc.
  2. A Sling Bot that will automatically issue pull requests for the website and starter repositories.

PRB-ONBOARD: lack of developer onboarding for Sling developers

When contributors approach Sling, especially from an AEM background, there is a lack of transparency regarding what Sling development practices are:

  • code conventions
  • automated tests
  • local testing ( Sling starter vs Quickstart, Composum vs CRX DE Lite, no content packages )

These should be better explained as part of an 'onboarding' contributors page

  • No labels