An Informal Introduction#

Humble Origins in a Software Project#

The LIST project started with an informal software project. Sometime back in 2022, it clicked to us that, as digital knowledge workers, we seem to be maintaining a lot of lists – ToDo lists, YouTube playlists, GoodReads booklists, browser bookmarks, Zotero references, terminal history etc – they are all just lists; some offline, some online. We wanted to have a unified interface for all these lists so we could have a single source of truth and searching in them. Another aspect that struck us was how some of these lists were deeply lacking in critical metadata. We felt this most acutely through our terminal history and clipboard managers, realizing how much more powerful those list would be with timestamps and context. And thus was realized the importance of having strong metadata system. With these two goals – of having a unified storage and a unified organizational system (through metadata) – was born the idea of LIST. The project resulted in a centralized database-backed LIST storage, coded in Bash and Python with SQLite storage, and combining various offline lists and some online lists.

_images/clist_screenshot1.png

Classic LIST (CLIST) Interface, unifying different sources with enriched metadata#

The current implementation of this software project is called CLIST (Classic LIST) (to disambiguate from the LIST spec which emerged later), and it’s a terminal based app in pure Python (developed with the awesome Textualize library).

You can try out a live demo of its interface with dummy data on our server here (our server is running on a free VPS, so kindly be patient if it’s slow): https://clist.listspec.org Note that this is actually a terminal app, developed with Textualize, which also enables to serve the same app as a web application.

The Critical Difficulty#

The project faced critical difficulties in integrating various cloud lists or lists locked within commercial software. We realized during this time that this process of unification is already being taken up by several commercial startups, like Sequin.io, and is actually more a job for the corporations. However, the project took an interesting turn when even a datastore so close to home turned out to be stubborn – the list of files within our filesystems.

One direct approach was to reference files within the centralized database of clist, however, for longevity of data model, a decentralized approach turned out to be a much better choice. In such a model, every document (file or otherwise) manages its own metadata, and there is no central database.

And that is when we began to develop a virtual filesystem called LIST Filesystem Wrapper (LFW). LIST Specification gradually emerged during the development of LFW.