Architecture Decision Records

What is an ADR?

ADR stands for Architecture Decision Record. An ADR is a design document providing information to the Decentraland community, or describing a new feature for Decentraland or its processes or environment. The ADR should provide a concise technical specification of the feature and a rationale for the feature. The ADR author is responsible for building consensus within the community and documenting dissenting opinions.

How do ADRs work?

Read the ADR explaining the rationale for a detailed explaination.

ADR Process

The following is the standardization process for all ADRs in all tracks:

flowchart TB
    Draft --> Withdrawn
    Idea --> Draft

    Review <--> Living
    Draft --> Review

    Review <--> LastCall
    LastCall --> Final

    Review --> Withdrawn
    LastCall --> Withdrawn

    LastCall <--> Stagnant
    Review <--> Stagnant
    Draft <--> Stagnant

ADR Types

There are three types of ADRs:

List of ADRs

Living

ADR-1 - ADR documents specification & process Living Meta
ADR-6 - Decentraland's git style guide Living Meta
ADR-16 - Unity data store architecture Living Standards Track
ADR-20 - Explorer Settings Panel Architecture Living Standards Track
ADR-22 - Quests Progress UI Living Standards Track
ADR-26 - Port signup screen to unity Living Standards Track
ADR-27 - Port loading screen to unity Living Standards Track
ADR-28 - Smart contract wallets and meta-transactions Living Standards Track
ADR-30 - Front and back end architecture for the Marketplace Living Standards Track
ADR-32 - Wearable Committee Reverts Living Standards Track
ADR-33 - Collections v2 Bridge Living Standards Track
ADR-34 - Collections Technical Approval Flow Living Standards Track
ADR-35 - Catalyst communication protocol optimizations Living Standards Track
ADR-36 - Kernel repository separation Living Standards Track
ADR-37 - Explorer Desktop Launcher Technology Living Standards Track
ADR-38 - Communication between Desktop unity and Kernel Living Standards Track
ADR-39 - DApps Blockchains Support Living Standards Track
ADR-40 - DCL UI dependencies upgrades Living Standards Track
ADR-41 - Collection Items Approval Flow Enhancement Living Standards Track
ADR-42 - Third Party Integration Living Standards Track
ADR-44 - Authentication mechanism for HTTP requests: Signed Fetch Living Standards Track
ADR-45 - Entity versioning and new validations for deployment Living Standards Track
ADR-46 - Royalties Manager v1 Living Standards Track
ADR-47 - Collections secondary marketplaces v2 Living Standards Track
ADR-48 - Locking Collections in the builder Living Standards Track
ADR-51 - Catalyst Content validations Living Standards Track
ADR-52 - Content Server - New Synchronization Living Standards Track
ADR-53 - Test collections in the explorer Living Standards Track
ADR-54 - Use an Oracle for MANA pricing according to USD rate Living Standards Track
ADR-55 - Third Party Curation With Merkle Tree Living Standards Track
ADR-56 - Plugin pattern for Renderer features Living Standards Track
ADR-57 - Avatar assembling instructions for visualization Living Standards Track
ADR-58 - Third Party Collections Registry V2 (Merkle Tree) Living Standards Track
ADR-59 - User Store catalyst entity Living Standards Track
ADR-60 - Skin wearables Living Standards Track
ADR-62 - Merkle proofed entity deployments Living Standards Track
ADR-63 - Denylist format Living Standards Track
ADR-65 - Avatar System for Renderer (Unity) Living Standards Track
ADR-66 - Emotes System for Renderer (Unity) Living Standards Track
ADR-67 - Runtime Architecture For Renderer Living Standards Track
ADR-68 - Configuring wearables Living Standards Track
ADR-69 - Importing wearables Living Standards Track
ADR-71 - Upgradable Collections Living Standards Track
ADR-72 - Ethereum API providers Living Standards Track
ADR-73 - A/B testing Living Standards Track
ADR-74 - Add Emote schema and versioning Living Standards Track
ADR-75 - Profile validations Living Standards Track
ADR-76 - Enable searching entities by URN prefix Living Standards Track
ADR-77 - New endpoints to retrive pointers Living Standards Track
ADR-79 - Method to download the content from an entity Living Standards Track
ADR-80 - Entity schema & virtual file system Living Standards Track
ADR-81 - Minimum communications adapter Living Standards Track
ADR-83 - Changing "Base resolution" configuration for web Living Standards Track
ADR-84 - Crashbot Living Standards Track
ADR-85 - Profile Pictures Living Standards Track
ADR-86 - Realm Picking Algorithm Living Standards Track
ADR-103 - Content server synchronization protocol Living RFC
ADR-104 - Comms protocol for explorers Living RFC
ADR-105 - WebSocket based comms protocol Living RFC
ADR-110 - Realm description Living RFC
ADR-111 - Scene Preview Server Living RFC
ADR-116 - Content-Server Fast Bootstrapping Living RFC
ADR-123 - Schema and serialization of SDK components Living Standards Track
ADR-124 - Implementing flexbox-based UI for scenes Living Standards Track
ADR-147 - Upgrade AB Materials to Unity 2021 Living RFC

Final

ADR-4 - Collections architecture in L1 & L2 Final Standards Track
ADR-7 - Archive standards repository Final Meta
ADR-12 - Documentation as a priority Final Standards Track
ADR-14 - L1 & L2 Governance Smart Contracts Architecture Final Standards Track
ADR-15 - L1 & L2 Collections Approval Flow Final Standards Track
ADR-17 - Wearable Collection Approval And Economics Final Standards Track
ADR-19 - L2 Roadmap: Stage 1 & Stage 2 alternatives Final Meta
ADR-78 - Ropsten To Goerli Migration Final Standards Track
ADR-137 - Technical Assessment for the new Friend Request Final RFC

Review

ADR-113 - Social service Review RFC

Draft

ADR-49 - Signed Fetch V2 Draft Standards Track
ADR-61 - Blur Effect For UI Draft Standards Track
ADR-64 - Points of interest (POIs) Draft Standards Track
ADR-70 - Catalyst: New Communications Architecture Draft Standards Track
ADR-82 - Mesh name of pointer events for GLTF in ECS7 Draft Standards Track
ADR-101 - Move loading screen logic from kernel to renderer Draft RFC
ADR-102 - Decentraland Protocol for Explorers Draft RFC
ADR-106 - Kernel services code generation Draft RFC
ADR-107 - Decentraland RPC Streams Draft RFC
ADR-108 - Specific optimizers for explorer assets Draft RFC
ADR-109 - On-chain validators Draft RFC
ADR-112 - Onboarding experience as Portable Experience Draft Standards Track
ADR-114 - P2P adapter with routing Draft RFC
ADR-115 - SDK Playground Draft RFC
ADR-117 - CRDT protocol for scenes & foundations for SDK7 Draft Standards Track
ADR-128 - Realms modifiers for Worlds in Renderer Draft RFC
ADR-133 - Scene runtime definition Draft Standards Track
ADR-143 - Social service authentication Draft RFC
ADR-145 - Pick Realm Algorithm V2 Draft RFC

LastCall

Stagnant

ADR-8 - DAO content servers and local content servers Stagnant Meta
ADR-9 - DecentralandInterface evolution plan Stagnant Standards Track
ADR-11 - Add version to content-as-bundle URL Stagnant Standards Track
ADR-21 - Update cycle of catalysts Stagnant Standards Track
ADR-24 - Decouple kernel and unity APIs Stagnant Standards Track
ADR-25 - Explorer repositories decoupling Stagnant Standards Track
ADR-29 - Refactor HUD control Stagnant Standards Track

Withdrawn

ADR-2 - State sync for builder-in-world Withdrawn Standards Track
ADR-3 - Explorer packages organization Withdrawn Meta
ADR-5 - How to organize ADR files Withdrawn Standards Track
ADR-10 - Deployment debouncing Withdrawn Standards Track
ADR-13 - Custom UI modes for builder in world Withdrawn Standards Track
ADR-18 - Content mappings flow for explorer and builder in-world Withdrawn Standards Track
ADR-23 - Entities meta-data flow for builder in-world Withdrawn Standards Track
ADR-31 - Signin/signup Kernel<>Website Withdrawn Standards Track
ADR-43 - Catalyst API and Protocol refinement Withdrawn Standards Track
ADR-50 - solated mode for scenes (Builder mode) Withdrawn Standards Track

License

Copyright and related rights waived via CC0-1.0.