Skip to content

Latest commit

 

History

History
73 lines (45 loc) · 14.7 KB

File metadata and controls

73 lines (45 loc) · 14.7 KB

Title

InnerSource Portal - Hygiene

Patlet

Based off the InnerSource portal pattern.

Allow generation of an official badge for projects intending to be recognized as InnerSource project within your company.

This will help users distinguishing InnerSource projects which strive to adhere to InnerSourcing principals from repos that - have been made public by mistake, due to negligence or for ease of discoverability (but do NOT adhere to InnerSource patterns/best practices). Furthermore the badge serves as additional marketing for the InnerSource initiative at your company.

Problem

  • Users don't have a mechanism of distinguishing InnerSource projects which strive to adhere to InnerSourcing principals from repos that have been made public by mistake, due to negligence or for ease of discoverability (but do NOT adhere to InnerSource patterns/best practices).
  • Unmaintained or stale InnerSource projects clutter the portal and make it difficult for people to discover active projects, and diminishes the value on the InnerSource portal

Context

Large organization with lots of public repos, not all necessarily meeting the desired innerSource project standard.

Forces

  • Mix of managed and unmanaged projects makes it difficult to figure out what needs to be in the InnerSource portal
  • Repos are made public when they really shouldn't be
  • Repos become stale and never get cleaned up

Sketch

  • Click here for draw.io diagram
  • Click here for editable draw.io diagram

Solutions

Register your InnerSource project

In your InnerSource portal allow registering your project as an InnerSource project. This is a super simple an intuitive webform that only requires you to enter your repos url.

Once the url is entered some basic checks will be carried out against your repo based on some very basic standards required for entry into the InnerSource portal. These checks include:

  • Access to the repo
  • Description for repo is set
  • Topic labels exists
  • Code owners file exists and populated
  • Readme file exists
  • Pull request template file exists
  • Issue template file exists
  • Contributing guidelines file exists

Once all checks have passed the InnerSource portal will generate your very own InnerSource badge, which is basically am image with a random filename. Note this badge is specific to the repo that was being registered. In the background the repo name, badge filename and badge expiry date is stored.

The last step is for users update there repos README.md file to include the badge. This will then allow the InnerSource portal to discover the project and will automatically include it in the portal.

InnerSource portal batch jobs

  • Remove expired badges.
    Query InnerSource projects which have an expired badge. Delete badge file causing the badge to not appear in the repos rendered README anymore.
  • Notify projects approaching expiry.
    Query InnerSource projects which have a badge close to expiration. Send a notification to the InnerSource projects code owners, publish an issue to the repo, publish a message in the InnerSource channel on Teams. This should be ample warning to go update the badge.
  • Bonus: Notify owners of public repos not registered as InnerSource projects yet to either make their repos private or to consider registering their repo as an innerSource project. This isn't entirely related to hygiene of the InnerSource portal rather general hygiene of all repos in your organizations SCM system. Also servers as excellent marketing and awareness generation for your organizations InnerSource initiative.

Resulting Context

The automatically managed InnerSource portal and badge system has ensured that the InnerSource portal only displays active projects and as result contains less clutter, thus increasing the credibility of the portal and InnerSource project initiative itself. The badges in the repos itself allow people to quickly distinguish an InnerSource project from a standard public repo.

Author(s)

  • Dinesh Dharmawardena

Status

  • Initial
  • Based of PR #120 we decided to merge this pattern in a relatively early state, as the upstream had disappeared and we didn't want to loose the content. See further discussions in the PR itself.