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-70 - Catalyst: New Communications Architecture 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 Third Party Collections 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 - Communications protocol for explorers Living RFC
ADR-105 - WebSocket based comms protocol Living RFC
ADR-108 - Specific optimizers for explorer assets Living RFC
ADR-110 - Realm description Living RFC
ADR-111 - Scene Preview Server Living RFC
ADR-112 - Onboarding experience as Portable Experience Living Standards Track
ADR-113 - Social service Living RFC
ADR-115 - SDK Playground Living RFC
ADR-116 - Content-Server Fast Bootstrapping Living RFC
ADR-117 - CRDT protocol for scenes & foundations for SDK7 Living Standards Track
ADR-123 - Schema and serialization of SDK components Living Standards Track
ADR-124 - Implementing flexbox-based UI for scenes Living Standards Track
ADR-125 - User interface components for SDK 7 Living Standards Track
ADR-128 - Realms modifiers for Worlds in Renderer Living RFC
ADR-133 - Scene runtime definition Living Standards Track
ADR-142 - Technical Assessment for the Extended Passport Living Standards Track
ADR-144 - Realm resolution from connection string Living Standards Track
ADR-147 - Upgrade AB Materials to Unity 2021 Living RFC
ADR-148 - Synchronization of CRDT messages between scenes and Renderer Living Standards Track
ADR-151 - Rendering order for UI entities Living Standards Track
ADR-153 - Transform SDK component Living Standards Track
ADR-165 - Resolving component numbers for the scripting of the SDK Living RFC
ADR-170 - Subgraph Cloudflare Worker Living Standards Track
ADR-172 - Rentals Living Standards Track
ADR-173 - Scene deployments must not contain worldConfiguration section Living Standards Track
ADR-180 - Communication protocols Living Standards Track
ADR-189 - Social Service M2 Living RFC
ADR-192 - Scene Bounds Checking Living Standards Track
ADR-198 - Billboard SDK Component Living Standards Track
ADR-200 - Raycasting Component for SDK Living Standards Track
ADR-201 - Lambdas Wearables API Analysis Living RFC
ADR-202 - Linked Wearables Implementation Living RFC
ADR-207 - Content Addressable URNs for Decentraland Living Standards Track
ADR-214 - PointerEvents SDK Component & Input system Living Standards Track
ADR-215 - GltfContainer SDK Component Living Standards Track
ADR-219 - Reserved & Static Entities Living Standards Track
ADR-231 - Voting Power usage for High Rated Places and Marketplace Saved Items Living Standards Track
ADR-237 - SDK 7 Custom UI Components Living Standards Track
ADR-239 - Avatar Assembly Changes Living Standards Track
ADR-244 - Extended Content Addressable URNs for Decentraland minted items Living Standards Track
ADR-245 - Player Components Living Standards Track
ADR-246 - Update Max Size for Skins and Thumbnail Validation for Wearables Living Standards Track

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-143 - Social service authentication Final RFC
ADR-158 - Enforce contents field present in profile deployment Final Standards Track
ADR-186 - Place Identifiers Final Standards Track

Review

ADR-137 - Technical Assessment for the new Friend Request Review RFC
ADR-175 - Remove assets from Renderer's build. Addressables Integration Review Standards Track
ADR-183 - Favorite Places Review Standards Track
ADR-203 - Authentication Mechanism for Friendship WebSocket Service Review RFC
ADR-213 - Quests UI Review Standards Track
ADR-232 - Add validation that prevents repeated wearables in profiles Review Standards Track
ADR-236 - Add validation that prevents scene thumbnails from being URLs Review Standards Track
ADR-250 - Explorer Map Standard Review Standards Track
ADR-251 - Offchain Marketplace Review RFC
ADR-252 - Third Party Registry V3 Review RFC

Draft

ADR-0 - ComponentName SDK Component Draft Standards Track
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-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-109 - On-chain validators Draft RFC
ADR-145 - Pick Realm Algorithm V2 Draft RFC
ADR-162 - Extend auth chain to include permissions Draft RFC
ADR-164 - Quests PoC Draft RFC
ADR-194 - Quests PoC - User tracking Draft RFC
ADR-206 - Back-end dependencies for the new Backpack V2 Draft RFC
ADR-226 - Lambdas API Review Draft Standards Track

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
ADR-114 - P2P adapter with routing Withdrawn RFC

License

Copyright and related rights waived via CC0-1.0.