Skip to content

Commit c730152

Browse files
committed
docs(tech-radar): linked the readme/sort script with explanations
1 parent 8b07586 commit c730152

File tree

5 files changed

+74
-67
lines changed

5 files changed

+74
-67
lines changed

RFCs/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ the full playbook][rfc_playbook] for all the details!
1313

1414
| Doc | Overview |
1515
| ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
16-
| [[TODO] add title via yml front-matter to RFCs/\_dependency_rfc_template.md](/RFCs/_dependency_rfc_template.md#readme) | [TODO] add description via yml front-matter to RFCs/\_dependency_rfc_template.md |
17-
| [[TODO] add title via yml front-matter to RFCs/\_generic_rfc_template.md](/RFCs/_generic_rfc_template.md#readme) | [TODO] add description via yml front-matter to RFCs/\_generic_rfc_template.md |
1816
| [[TODO] add title via yml front-matter to RFCs/on-call-incident-review.md](/RFCs/on-call-incident-review.md#readme) | [TODO] add description via yml front-matter to RFCs/on-call-incident-review.md |
1917
| [[TODO] add title via yml front-matter to RFCs/platform-practice-4ps.md](/RFCs/platform-practice-4ps.md#readme) | [TODO] add description via yml front-matter to RFCs/platform-practice-4ps.md |
2018
| [[TODO] add title via yml front-matter to RFCs/switch-to-standardrb.md](/RFCs/switch-to-standardrb.md#readme) | [TODO] add description via yml front-matter to RFCs/switch-to-standardrb.md |

playbooks/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ practice should be incorporated, submit a PR!
3232
| [Future Friday](/playbooks/future-friday.md#readme) | What is Future Friday? |
3333
| [GraphQL Schema Design](/playbooks/graphql-schema-design.md#readme) | What are our best practices for GraphQL Schema Design? |
3434
| [Hokusai](/playbooks/hokusai.md#readme) | a CLI to manage applications deployed to Kubernetes |
35-
| [Incident Handling](https://www.notion.so/artsy/Incident-Handling-111cab0764a0808c993ec19b352cfab9?pvs=4#111cab0764a080f2a798e717a1610c46)🔒 | How engineers share on-call duties and provide urgent support |
3635
| [How to give a good Informational](/playbooks/informationals.md#readme) | What are the steps needed to give someone a great experience. |
3736
| [Jira](/playbooks/jira.md#readme) | Working with Jira boards and tickets |
3837
| [Kubernetes](/playbooks/kubernetes.md#readme) | Deploying containerized applications at Artsy |

playbooks/technology_radar/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ https://radar.thoughtworks.com/?sheetId=https%3A%2F%2Fraw.githubusercontent.com%
55

66
Moved an entry to `artsy-tech-radar-archive.csv` if the technology is no longer part of artsy's tech stack or we have assessed it should not be adopted.
77

8-
NOTE: Order matters and there must be each of "adopt," "trial," "assess," and "hold" within the first quadrant or the radar will render rings out of order.
8+
NOTE: Order matters and there must be each of "adopt," "trial," "assess," and "hold" within the first quadrant or the radar will render rings out of order. The script [sort-tech-radar-data.ts](../../scripts/sort-tech-radar-data.ts) sorts the current CSV. See the script itself for details.
99

1010
More information:
1111
- https://www.thoughtworks.com/radar/how-to-byor
Lines changed: 63 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,82 @@
11
name,ring,quadrant,isNew,description
2-
AI Code Assistants,assess,techniques,TRUE, "Tools like GitHub Copilot, Claude to assist with code generation and suggestions"
3-
Apollo mcp,assess,languages & frameworks,TRUE,"Apollo MCP Server provides a standard way for AI models to access and orchestrate your APIs running with Apollo."
4-
Apollo Server,assess,platforms,TRUE,
5-
AWS Lambda,hold,platforms,TRUE,
2+
easy-peasy,adopt,languages & frameworks,TRUE,
3+
GraphQL,adopt,languages & frameworks,TRUE,"Appreciated for its flexibility and efficiency for clients."
4+
JSON,adopt,languages & frameworks,FALSE,"We prefer JSON over most other data formats for its self-describing properties."
5+
Python,adopt,languages & frameworks,FALSE,"For ETL, Analytics and ML workloads we use Python as a data engineering standard."
6+
Rails,adopt,languages & frameworks,FALSE,
7+
React Native,adopt,languages & frameworks,FALSE,"New iOS work should use React Native. See also Objective-C."
8+
React.js,adopt,languages & frameworks,FALSE,
9+
Relay,adopt,languages & frameworks,FALSE,
10+
Ruby,adopt,languages & frameworks,FALSE,"Especially for data-backed APIs and services"
11+
Spark,adopt,languages & frameworks,FALSE,"Used for data workloads, mostly via AWS EMR Serverless."
12+
SQL,adopt,languages & frameworks,FALSE,
13+
Swift,adopt,languages & frameworks,FALSE,"We generally opt for React Native, but when necessary for quality, usability or features tightly integrated with OS, we will build native features in Swift using UIKit. see Objective-C."
14+
Typescript,adopt,languages & frameworks,FALSE,
15+
UIKit,adopt,languages & frameworks,FALSE,"See Objective-C."
616
AWS,adopt,platforms,FALSE,
7-
Babel,hold,tools,TRUE,A JavaScript compiler
17+
Docker,adopt,platforms,FALSE,
18+
HSTS,adopt,platforms,FALSE,
19+
Kubernetes,adopt,platforms,FALSE,"We manage staging and production clusters, and have solutions for logging, monitoring, alerting, scaling, and routing. See Hokusai and Substance repos."
20+
Redis,adopt,platforms,FALSE,
821
Bug Bounty Program,adopt,techniques,FALSE,For identifying and remediating security vulnerabilities with the help of external security researchers. Program overview at artsy.net/security.
9-
Bun,assess,languages & frameworks,TRUE, runtime, A JavaScript runtime designed as a drop-in replacement for Node.js. Aims to be fast by using the Zig programming language and integrating a bundler, transpiler, package manager, and test runner."
22+
Embeddings,adopt,techniques,TRUE,"Dense vector mathematical representation of content, suitable for semantic search"
23+
Metaphysics' v2 schema,adopt,techniques,TRUE,"Consumers should switch to v2 rather than make further modifications to v1."
24+
Opaque identifiers,adopt,techniques,FALSE,"Friendly identifiers or 'slugs' are fine for URLs but opaque, permanent identifiers are preferred for all internal or programmatic uses."
25+
Partner API as a product,adopt,techniques,FALSE, "For our business partners to integrate with our platform. Documented at developers.artsy.net"
26+
Split testing,adopt,techniques,TRUE,"When scale permits (such as around high-volume product surfaces or early funnel steps), we prefer to make data-driven product decisions by evaluating user experiences in parallel through A/B- or A/B/*-style tests"
1027
CircleCI,adopt,tools,FALSE,For continuous integration over other services like Travis or Semaphore. Shared orbs and contexts help our projects apply best practices.
11-
Claude Pro,assess,tools,TRUE, "Anthropic's Claude Pro LLM service; provides higher usage limits and features compared to the free tier"
1228
Cloudflare,adopt,tools,TRUE,
13-
Codepush,hold,tools,TRUE,"Microsoft codepush allows delivering updates over the air to javascript based mobile apps"
14-
Coffeescript,hold,languages & frameworks,FALSE,
1529
Datadog APM,adopt,tools,FALSE,
16-
Datadog Synthetics,assess,tools,TRUE,
17-
Docker,adopt,platforms,FALSE,
18-
easy-peasy,adopt,languages & frameworks,TRUE,
19-
Elixir,hold,languages & frameworks,FALSE,A dynamic, functional language designed for building scalable and maintainable applications.
20-
Embeddings,adopt,techniques,TRUE,"Dense vector mathematical representation of content, suitable for semantic search"
21-
Expo Updates,trial,tools,TRUE,Allows for delivering over-the-air updates to React Native apps.
22-
External LLM chatbot,hold,techniques,TRUE,"Risk of off-topic, unsafe, inaccurate responses (note: collector vs external)"
23-
Fast agent,assess,languages & frameworks,TRUE,"lets you create and interact with sophisticated Agents and Workflows in minutes. It's multi-modal - supporting Images and PDFs in Prompts, Resources and MCP Tool Call results."
2430
Fastlane,adopt,tools,FALSE,
25-
GitHub LLM tools,assess,tools,TRUE, GitHub's suite of tools for AI-assisted development, including Agents, Copilot, etc...
26-
Google cloud,hold,platforms,FALSE,
27-
GraphQL Stitching,hold,techniques,TRUE,"We prefer to connect to upstream REST APIs instead of GraphQL APIs."
28-
GraphQL,adopt,languages & frameworks,TRUE,"Appreciated for its flexibility and efficiency for clients."
2931
HashiCorp Vault,adopt,tools,TRUE,Secrets management solution to securely store and access sensitive application information
30-
Heroku,hold,platforms,FALSE,"We prefer kubernetes where we have shared solutions for authorization, logging, monitoring, alerting, scaling, and routing."
31-
HSTS,adopt,platforms,FALSE,
32-
Hypermedia,hold,techniques,FALSE,"While discoverable and easy to consume, we've found hypermedia APIs inefficient to consume."
33-
Internal Agentic AI,assess,techniques,TRUE, "Internal development of AI agents to perform specific tasks autonomously within our systems. Monorepo at github.com/artsy/artsy-agent"
34-
JSON,adopt,languages & frameworks,FALSE,"We prefer JSON over most other data formats for its self-describing properties."
35-
Kubernetes,adopt,platforms,FALSE,"We manage staging and production clusters, and have solutions for logging, monitoring, alerting, scaling, and routing. See Hokusai and Substance repos."
36-
LabFeatures (Gravity),hold,tools,TRUE,"Unleash supports similar feature-enabling on an individual account basis, while also being flexible enough for gradual roll-outs and split tests."
3732
Large Language Models,adopt,tools,TRUE,Deep learning models for text generation and embeddings
38-
Machine facing LLM text generation,trial,techniques,TRUE,"Currently being used for GenomeBot and artwork captions"
39-
Metaphysics' v1 schema,hold,techniques,TRUE,"The v1 schema is deprecated and should be considered frozen. Consumers should switch to v2 rather than make further modifications to v1."
40-
Metaphysics' v2 schema,adopt,techniques,TRUE,"Consumers should switch to v2 rather than make further modifications to v1."
41-
MongoDB,hold,tools,FALSE,
42-
Next.js,hold,languages & frameworks,FALSE,"Currently trialing Next.js for our admin apps, via the pages router. See Forque, Volt 2. Some experiments have been made to migrate to Next 13's app router, which have all run into friction. See this <a href='https://artsy.slack.com/archives/C2TQ4PT8R/p1697227679293829'>Slack thread for more info</a>."
43-
Objective-C,hold,languages & frameworks,FALSE,"Because we use React Native some amount of Objective-C bridging code will remain necessary, these should be thin layers to swift features. Some legacy core Eigen infrastructure and React Native itself is written in Objective-C."
44-
Opaque identifiers,adopt,techniques,FALSE,"Friendly identifiers or 'slugs' are fine for URLs but opaque, permanent identifiers are preferred for all internal or programmatic uses."
4533
OpenAI,adopt,tools,TRUE, "OpenAI's suite of LLM services and tools for ai assisted development and application features"
4634
OpenSearch,adopt,tools,FALSE,A community-driven, open source search and analytics suite derived from Elasticsearch
47-
OpsGenie,hold,tools,TRUE,For incident management and alerting. Being retired by Atlassian.
48-
Partner API as a product,adopt,techniques,FALSE, "For our business partners to integrate with our platform. Documented at developers.artsy.net"
49-
Phoenix,hold,languages & frameworks,TRUE,Phoenix is a web development framework written in Elixir which implements the server-side Model View Controller (MVC) pattern.
50-
Pingdom,hold,tools,TRUE,
5135
Postgresql,adopt,tools,FALSE,"We rely on Heroku or Amazon's RDS to host these databases. Though MongoDB was chosen to host core API data, in the long run we found the data (and maybe all data) to be more relational than document-oriented."
52-
Public API as a product,hold,techniques,FALSE,For external developers to build on our platform. Deprecated with plan to retire. Documented at developers.artsy.net
53-
Python,adopt,languages & frameworks,FALSE,"For ETL, Analytics and ML workloads we use Python as a data engineering standard."
5436
RabbitMQ,adopt,tools,FALSE,"Its stream allows source systems to publish their notable events and other systems to subscribe as desired. This avoids coupling systems directly. After evaluating Kafka for this purpose, we had more operational success with RabbitMQ."
55-
Rails,adopt,languages & frameworks,FALSE,
56-
React Native,adopt,languages & frameworks,FALSE,"New iOS work should use React Native. See also Objective-C."
57-
React.js,adopt,languages & frameworks,FALSE,
58-
Redis,adopt,platforms,FALSE,
59-
Redux,hold,languages & frameworks,FALSE,
60-
Relay,adopt,languages & frameworks,FALSE,
6137
Rsbuild,adopt,tools,FALSE,a build tool powered by Rspack. It aims for high performance and to provides an out-of-the-box setup to improve DX.
62-
Ruby,adopt,languages & frameworks,FALSE,"Especially for data-backed APIs and services"
63-
Scala,hold,languages & frameworks,FALSE,
64-
Semaphore,hold,tools,FALSE,
65-
Serverless architecture,hold,techniques,TRUE,
6638
Sidekiq,adopt,tools,FALSE,
67-
SiteFeatures (Gravity),hold,tools,TRUE,"Site Features were used to turn on or off core functionality, but are easily replaced by Unleash (for platform-wide toggles) or Flipper (for Gravity-only settings)."
68-
Spark,adopt,languages & frameworks,FALSE,"Used for data workloads, mostly via AWS EMR Serverless."
69-
Split testing,adopt,techniques,TRUE,"When scale permits (such as around high-volume product surfaces or early funnel steps), we prefer to make data-driven product decisions by evaluating user experiences in parallel through A/B- or A/B/*-style tests"
70-
SQL,adopt,languages & frameworks,FALSE,
71-
Standard Ruby,trial,tools,TRUE,"After a few weeks living with this officially adopt."
72-
Styled-components,hold,languages & frameworks,FALSE,
73-
Swift,adopt,languages & frameworks,FALSE,"We generally opt for React Native, but when necessary for quality, usability or features tightly integrated with OS, we will build native features in Swift using UIKit. see Objective-C."
7439
Terraform,adopt,tools,FALSE,
75-
Typescript,adopt,languages & frameworks,FALSE,
76-
UIKit,adopt,languages & frameworks,FALSE,"See Objective-C."
7740
Unleash,adopt,tools,TRUE,"An open-source solution for feature-flagging, gradual roll-outs, and split-testing with SDKs for multiple languages"
78-
User facing LLM text generation,hold,techniques,TRUE,"Risky without human-in-the-loop, due to concerns about accuracy, safety"
79-
uv,assess,tools,TRUE,manages project dependencies and environments, with support for lockfiles, workspaces, and more, similar to rye or poetry
41+
Machine facing LLM text generation,trial,techniques,TRUE,"Currently being used for GenomeBot and artwork captions"
42+
Expo Updates,trial,tools,TRUE,Allows for delivering over-the-air updates to React Native apps.
43+
Standard Ruby,trial,tools,TRUE,"After a few weeks living with this officially adopt."
44+
Apollo mcp,assess,languages & frameworks,TRUE,"Apollo MCP Server provides a standard way for AI models to access and orchestrate your APIs running with Apollo."
45+
Bun,assess,languages & frameworks,TRUE, runtime, A JavaScript runtime designed as a drop-in replacement for Node.js. Aims to be fast by using the Zig programming language and integrating a bundler, transpiler, package manager, and test runner."
46+
Fast agent,assess,languages & frameworks,TRUE,"lets you create and interact with sophisticated Agents and Workflows in minutes. It's multi-modal - supporting Images and PDFs in Prompts, Resources and MCP Tool Call results."
8047
Vercel AI SDK,assess,languages & frameworks,TRUE,"Solid LLM abstractions in Typescript for text and data generation, with easily swappable models"
48+
Apollo Server,assess,platforms,TRUE,
49+
AI Code Assistants,assess,techniques,TRUE, "Tools like GitHub Copilot, Claude to assist with code generation and suggestions"
50+
Internal Agentic AI,assess,techniques,TRUE, "Internal development of AI agents to perform specific tasks autonomously within our systems. Monorepo at github.com/artsy/artsy-agent"
51+
Claude Pro,assess,tools,TRUE, "Anthropic's Claude Pro LLM service; provides higher usage limits and features compared to the free tier"
52+
Datadog Synthetics,assess,tools,TRUE,
53+
GitHub LLM tools,assess,tools,TRUE, GitHub's suite of tools for AI-assisted development, including Agents, Copilot, etc...
54+
uv,assess,tools,TRUE,manages project dependencies and environments, with support for lockfiles, workspaces, and more, similar to rye or poetry
55+
Coffeescript,hold,languages & frameworks,FALSE,
56+
Elixir,hold,languages & frameworks,FALSE,A dynamic, functional language designed for building scalable and maintainable applications.
57+
Next.js,hold,languages & frameworks,FALSE,"Currently trialing Next.js for our admin apps, via the pages router. See Forque, Volt 2. Some experiments have been made to migrate to Next 13's app router, which have all run into friction. See this <a href='https://artsy.slack.com/archives/C2TQ4PT8R/p1697227679293829'>Slack thread for more info</a>."
58+
Objective-C,hold,languages & frameworks,FALSE,"Because we use React Native some amount of Objective-C bridging code will remain necessary, these should be thin layers to swift features. Some legacy core Eigen infrastructure and React Native itself is written in Objective-C."
59+
Phoenix,hold,languages & frameworks,TRUE,Phoenix is a web development framework written in Elixir which implements the server-side Model View Controller (MVC) pattern.
60+
Redux,hold,languages & frameworks,FALSE,
61+
Scala,hold,languages & frameworks,FALSE,
62+
Styled-components,hold,languages & frameworks,FALSE,
63+
AWS Lambda,hold,platforms,TRUE,
64+
Google cloud,hold,platforms,FALSE,
65+
Heroku,hold,platforms,FALSE,"We prefer kubernetes where we have shared solutions for authorization, logging, monitoring, alerting, scaling, and routing."
66+
External LLM chatbot,hold,techniques,TRUE,"Risk of off-topic, unsafe, inaccurate responses (note: collector vs external)"
67+
GraphQL Stitching,hold,techniques,TRUE,"We prefer to connect to upstream REST APIs instead of GraphQL APIs."
68+
Hypermedia,hold,techniques,FALSE,"While discoverable and easy to consume, we've found hypermedia APIs inefficient to consume."
69+
Metaphysics' v1 schema,hold,techniques,TRUE,"The v1 schema is deprecated and should be considered frozen. Consumers should switch to v2 rather than make further modifications to v1."
70+
Public API as a product,hold,techniques,FALSE,For external developers to build on our platform. Deprecated with plan to retire. Documented at developers.artsy.net
71+
Serverless architecture,hold,techniques,TRUE,
72+
User facing LLM text generation,hold,techniques,TRUE,"Risky without human-in-the-loop, due to concerns about accuracy, safety"
73+
Babel,hold,tools,TRUE,A JavaScript compiler
74+
Codepush,hold,tools,TRUE,"Microsoft codepush allows delivering updates over the air to javascript based mobile apps"
75+
LabFeatures (Gravity),hold,tools,TRUE,"Unleash supports similar feature-enabling on an individual account basis, while also being flexible enough for gradual roll-outs and split tests."
76+
MongoDB,hold,tools,FALSE,
77+
OpsGenie,hold,tools,TRUE,For incident management and alerting. Being retired by Atlassian.
78+
Pingdom,hold,tools,TRUE,
79+
Semaphore,hold,tools,FALSE,
80+
SiteFeatures (Gravity),hold,tools,TRUE,"Site Features were used to turn on or off core functionality, but are easily replaced by Unleash (for platform-wide toggles) or Flipper (for Gravity-only settings)."
8181
Weaviate,hold,tools,TRUE,Vector storage database with semantic search (HNSW approximate nearest neighbor) and keyword search (BM25)
82-
Webpack,hold,tools,FALSE,A static module bundler for JavaScript applications
82+
Webpack,hold,tools,FALSE,A static module bundler for JavaScript applications

scripts/sort-tech-radar-data.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/**
2+
* This script organizes technology radar entries in a consistent order for better readability and maintenance.
3+
*/
4+
15
import { readFileSync, writeFileSync } from "fs"
26

37
const DATA_FILE = "./playbooks/technology_radar/artsy-tech-radar.csv"
@@ -16,6 +20,12 @@ const data = readFileSync(DATA_FILE, "utf8")
1620

1721
const [headers, ...entries] = data.split("\n")
1822

23+
/**
24+
* Sorts entries by:
25+
* - Ring (adopt → trial → assess → hold)
26+
* - Quadrant (alphabetically)
27+
* - Name (alphabetically)
28+
*/
1929
const sortedEntries = entries.filter(e => e.trim().length > 0).sort((a, b) => {
2030
const fieldsA = a.split(",")
2131
const fieldsB = b.split(",")

0 commit comments

Comments
 (0)