Advanced Data Layouts

Advanced Data Layouts ("ADLs") are a way to take data in IPLD and customize additional ways to see and interact it. ADLs can be thought of like a "lens" for data: they can take some data and make it legible in a different way.

The result of processing data with an ADL is still a Data Model Node, which means other IPLD systems (like pathing and traversals and Selectors) work transparently over ADLs.

One of the most common uses of ADLs is sharded datastructures. However, ADLs are a fairly open-ended plugin system; other uses are also possible.

There's a lot to cover about ADLs, so we've split most of the content up into pages:

Intro to ADLs - Defining ADLs, examples of what ADLs are used for, and discussion of where ADLs fit in the "big picture".
ADL Naming - How are ADLs referred to and identified?
Signalling ADLs - How are ADLs applied? How does data signal that it should be interpreted with an ADL?
Dynamic Loading - Given that ADLs are a form of plugin, and contain code, how do we load them? This page discusses options.
Known ADLs - A brief overview of some ADLs that are commonly known, and that you might want to check out.

There are also pages in the specs chapters about ADLs: see specs/advanced-data-layouts. Those pages talk mostly about common and popular ADLs that are well known, providing specifications (and including fixture data); whereas the docs you'll find in these pages here are about the general concept, and how to implement your own.