Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Why

A technology radar serves as a reference and an onboarding tool for the technologies used in the Open edX Platform, giving us all deeper insight into the composition and history of the software which we collectively steward. It’s a living document that records our technology decisions as they change over time, evaluating their level of adoption and suitability to the platform’s needs.

...

See Thoughtworks Tech Radar FAQ for more information.

Tech Radar Process

  • (tick) Step 1: Learning

    • In this step, we learned what a tech radar is and how to apply the concept to Open edX. We took an initial stab at what our quadrants and rings might be, and thought about what sort of blips belong on the radar, and what don’t. We also came up with a plan for how we could collaboratively build the radar with the community.

  • (tick) Step 2: Ideation (Workshop)

    • Each participant individually brainstormed blips based on their areas of expertise. The goal was to come up with a corpus of technologies that might become blips.

  • (tick) Step 3: Analysis (Workshop)

    • Participants gathered in breakout rooms by expertise area: Architecture, Backend, Frontend, and SRE / DevOps. We also had breakout rooms for Data and “Rebels”, but they were unused during the workshop for lack of participants.

  • (tick) Step 4: Retrospective (Workshop)

    • We paused after our analysis to reflect on the process so far. This included feedback on the workshop itself, the emerging shape of our radar, how we should categorize blips, and thoughts on how we should proceed for the next steps.

  • (tick) Step 5: Quadrants

    • In this step we looked at the output of Step 3 (Analysis) and categorized technologies into quadrants using our learnings and predictions from Step 1 (Learning) to guide us. We confirmed - based on the analysis in the workshop - that having quadrants of Techniques and Open edX Technologies made sense for our Tech Radar. The former is also present on Thoughtworks' Radar, and the latter makes sense given the number of Open edX-specific technologies in use in our platform.

    • We also decided that we had enough technologies in the frontend development ecosystem, and that they were distinct enough from our other technologies, to justify having a Frontend quadrant. Finally, all other technologies effectively went into the Technologies quadrant. The majority are backend oriented, but there are also a number of services and operational/process technologies in this space.

  • (tick) Step 6: Consolidation

    • In this step, we made some difficult decisions about what potential blips should be included in the radar. We came up with a set of criteria by which we could combine some blips and remove others, with the goal of having roughly 25-50 blips in each quadrant. At this step, we populated a spreadsheet with all of our blips and set their quadrants appropriately, and their rings to “Hold” pending Step 8.

    • https://docs.google.com/spreadsheets/d/1ntg2fy7EBR0TFGktyORyv3W-K1bOmhr5Z4EU6WzdSWE/edit#gid=0

  • Step 7: Descriptions

    • This is our current step. The goal of this process is to generate descriptions for all of the blips on the radar. We believe that we will more accurately categorize blips into rings equipped with descriptions of what each blip is, and what it means - qualitatively - to the Open edX platform. We intend to do this collaboratively in the Tech Radar spreadsheet. Participants can sign up to be an Author or Reviewer of a blip description.

  • Step 8: Rings

    • Once we have descriptions of our blips, it’s time to categorize them into rings by their level of adoption. We haven’t chosen a process for this step yet. One proposal is to use a set of Google Surveys to ask participants to assign a ring to each blip and optionally give a rationale.

  • Step 9: Publish!

    • We want to share our Technology Radar with the broader Open edX community to help onboard and educate everyone about our technology stack. As part of our broader information architecture goals, we expect to be prominently linking to the Tech Radar from our documentation. New engineers should be familiar with the technologies in the “Primary Radar” within their first 30 days.

  • Step 10: Iterate

    • Once we’ve published the radar, that’s not the end. As we all know, technology continues to change constantly, and our Tech Radar will be both the vehicle for how we adapt to changes in technology, as well as our outward expression of those decisions.

Workshop Plan

Important! Before the workshop, sign up for a breakout room by adding your name to a column here: Breakout Room Signup Sheet

...

The output of this session will be a catalog of technologies used in our software, vetted by engineers who are familiar with them. In a later workshop, we can then use this list to orient technologies (blips!) onto our radar by quadrant and level of adoption.

Agenda

  • 5 mins review of this document.

  • 15 mins quiet time, self-ideation of technologies.

  • 40 mins breakout rooms

    • Breakout rooms:

      • Frontend, Backend, Data, Arch, SRE/DevOps, Rebels

    • Goal is to define what blips, not where they should be added to the radar.

    • Blip by blip, pitch and upvote/downvote

  • 20 mins for group retro and discussion of our radar and base assumptions

Definitions

Blips

A blip is a technology or technique that plays a role in software development. Blips are things that are ‘in motion’ - that is we find their position in the Radar is changing - usually indicating that we’re finding increasing confidence in them as they move through the rings.

Our definition of what constitutes a blip may be slightly different in spirit than Thoughtworks' definition. We want our radar to represent a historical record of technologies used as part of Open edX. Since engineers may find references to technologies in our codebase years later, it makes some sense that our blips may be more long-lived than Thoughtworks'.

Rings

Our rings are intended to correspond to OEP states. The “Adopted” state is a new addition identifying those technologies that are not only Accepted - a comparatively low bar for an OEP - but thriving and recommended. The intention is to update OEP-1: OEP Purpose and Guidelines to adjust the states to map onto the rings in our radar.

Adopted

Technologies we have high confidence in to serve our purpose, also at large scale. Technologies with a usage culture and established best practices in our production environment, low risk, and which are recommended for widespread use.

Accepted

Technologies that we have seen work with success in projects and solve real problems; we have serious usage experience with them that confirmed their benefits and uncovered limitations. New projects may want to seriously evaluate using these technologies when considering options. These technologies are slightly more risky; some engineers in our organization walked this path and will share knowledge and experiences.

Provisional

Technologies that are promising and have clear potential value-add for us; technologies worth an initial investment of research and prototyping efforts to see if it has impact. These technologies have higher risks; they are often brand new and/or highly unproven in our organization. You will find some engineers that have knowledge in the technology and promote it, you may even find teams that have started a prototyping effort.

DEPR / Hold

Technologies not recommended to be used for new projects, but may already exist in the code base. Technologies that we think are either not (yet) worth (further) investment, or have been proven to be inadequate or directionally inappropriate for the platform. These technologies should not be used for new projects, but usually can be continued for existing projects. Many will have corresponding DEPR tickets in Jira describing their sunset timeline.

Quadrants (To be Finalized)

Techniques

These include elements of the software design process, architectural principles, as well as ways of structuring software. In general, these are more abstract and less about particular code artifacts, which are covered by the other quadrants.

...