Jump to content

JVM Language Stewardship

From Wikitech

Abstract

The Wikimedia Foundation uses Java and Scala for a number of projects. The Data Platform Engineering group is where most of the JVM based projects are.

Having good standards help switch between projects, reduce the cost of mental switching and reconfiguration of IDE. While we have some level of standardisation (see “links” section below), some improvements are needed, in particular around Scala, and around the standardisation of CI on Gitlab.

Nominating a few engineers as stewards of the language ecosystem empowers them to:

  • Define the standards
  • Work with various teams and projects to implement that standard or migrate existing projects to that standard
  • implement the necessary infrastructure

Current Stewards: Joseph Allemandou, Peter Fischer.

Organisational sponsor

Olja Dimitrijevic

Links

Goals

  • Minimal mental burden when switching between projects
  • Minimal effort to start new projects
  • Simple onboarding of new engineers
  • Maintaining a growing number of JVM based projects over time is sustainable
  • Keeping the standard up to date and applying them over time is sustainable

Scope

  • Java and Scala as used at the Wikimedia Foundation

Out of scope

  • Kotlin isn’t included to keep the scope to mainly projects in the Data Platform Engineering group. Kotlin is sufficiently different in terms of build and deployment that it probably make sense to have a different stewardship group

Who are the stewards

Current Stewards: Joseph Allemandou, Peter Fischer.

Conversations so far show that there isn’t much divergence of opinions, but a lack of ownership: no one feels responsible to make decisions. We don’t need a lengthy information gathering process, involving many people, we need someone empowered to make and document decisions. We don’t want a committee, but we want a focal point for this effort. Two engineers seems like a good compromise: a small group is more efficient in this context, but more than one enables conversations.

Data Engineering and Search Platform are the two teams with the most JVM based projects. Those two teams should be represented.

Responsibilities of the stewards

JVM Stewards are expected to:

  • Consult the engineers impacted by the decisions
  • Define and document the required standard
  • Provide shared assets (tooling and IDE configuration, CI templates, etc…)
  • Decide if standardisation on Gitlab is necessary from a language stewardship perspective.
  • Document the necessary steps to align JVM projects with the standard
  • Support other engineers as needed to migrate to the standard