Maximizing the value of ideas would benefit greatly from allowing people to map out the connections between them and build up a shared knowledge base. This collective idea space would allow people to make connections later on and improve the cross-pollination of ideas between different topics. Some of this is already being done through collaborative discussions on Zoom during the after-town-hall breakout rooms and the Swarm sessions where people collaborate on Google Docs and Miro boards.
The idea of this proposal is to create a decentralized open source tool for providing that same type of collaboration through a unified interface that focuses on making semantic connections between ideas without being bogged down by choices about visualizations and different structural styles for laying out information. If there is a simple open standard way to structure contributions to the collective Cardano idea space, and if interactions between collaborators can continue on an ongoing basis, then the amount of insights gained through the process of ideation could be greatly increased.
Methods of idea mapping like the Zettelkasten framework and applications like Obsidian help lots of people improve their individual productivity. This Distributed Idea Mapping System (DIMS) is meant to iterate on the productivity gains of such tools and apply them to decentralized collaboration. It could also include a simple template system which would allow for the constraints of a Catalyst proposal (character limits, required fields, etc…). Ideas incorporated into a proposal could automatically be bibliographically linked to it, giving attribution to those who add info to the collective idea space or to external sources where the ideas came from.
The software will consist of a server application that anyone can spin up on their own system, this will provide a web-based interface and possible command line tools for building a private idea graph. Users will have the freedom to make any part of their idea graph available through a peer-to-peer network to other running nodes. This will possibly use of git, IPFS or similar tools to store shared graph data in plain text files.
The target audience is anyone who wants a tool that helps them make connections between their own ideas, with the possibility of applying individual skills and ideas to collaborative efforts that produce openly searchable results. This could include the process of proposal writing or team building for Catalyst, but it is by no means limited to Catalyst. It should also facilitate collaboration in the process of building an open source project, allowing teams to share insights on a private network, building and maintaining large volumes of documentation, creating specifications for tools and protocols, etc…
This project is focused on goal alignment, which is a serious need for open source development. If you have a large company with a management team calling all the shots, then the process is a little easier, but if you're trying to harness the collective intelligence of people all over the world, without limiting innovative thinking or the successful streamlining of operations, this requires the automation of a small, carefully selected, number of constraints that optimize for both parallel workflows and the convergence of ideas into unified solutions.
Building scalable systems is a hard thing to do, and it can require a lot of time and effort to do things correctly, but things can be made easier by choosing the right tools. My plan is to write the backend for this tool in the Pony programming language. Pony is an actor model language, which forces you to build things in a way that is scalable by default. Its type system is also comparable in correctness guarantees to what Haskell gives you, without the difficulty associated with writing fast, low level code.
Another challenge is the lack of libraries in Pony, since it's a fairly young language. This can be mitigated by its FFI that allows interoperability with C or Rust code, as well as the ability to set up virtual environments to run existing command-line tools before native Pony implementations exist… at a later time, I hope to implement the Ouroboros mini-protocols in Pony, but interacting with the cardano-cli tool will work in the shorter term.
I also plan to write a web-based frontend in Elm that provides the UX I'm looking for in a collaboration tool as well as a command-line interface.