Please describe your proposed solution.
The Problem:
Ideation and development solutions currently don't compose as well as they could. This limits the capacity of projects to share work in an easy way.
My Approach:
Using typed multi-dimensional algebraic graphs, it should be fairly easy to document connections between projects and share code between projects in a very fine-grained way (if the languages/practice being used for development adhere to the right functional properties). This will allow both technical and non-technical innovators to work together in a unified environment.
Target Audience:
Anyone who wants to build a knowledge graph and/or understand how projects might fit together.
Demonstrating Impact:
- Producing useful documentation of this system and why it's design is useful for optimizing collaboration.
- Development of an open-source Minimum Viable Product that a number of teams can use to coordinate efforts across different projects… Probably a terminal application and a web-based interface.
- A roadmap and community engagement towards further collaborative refinement of this idea.
- Ideally—and possibly beyond the scope of this proposal—Dims should be self-hosted in a public knowledge graph with very user-friendly documentation so that it's easy for any team to tailor its use to their own purposes.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Some of the Potential Directions listed in the Developer Ecosystem challenge are directly related to this project:
Developer productivity: IDEs, scripts to automate processes:
- Dims should work as a simple IDE itself (MVP)
- It could possibly integrate with existing IDEs by allowing you to checkout code like git branches (probably future work, not simple because file-based management is too coarse-grained for optimizing code reuse and pursuing the best strategies for documentation)
Knowledge base & Documentation:
- Dims will work in a similar way to knowledge graphing systems such as Obsidian or LogSeq, but with the capacity to enforce some structure on how the graph is constructed through a type system.
Deployment, testing, and monitoring frameworks:
- Some of the principles of Dims' design will be lifted from nix and git, that should deal with deployment.
- Testing and monitoring may be saved for future work.
Samples, recipes and templates:
- It should be possible to produce these as nodes in your graph connected with any relevant code in your projects.
Hackathons:
- The process of collaboration in Dims could be structured so that it's like a hackathon that never ends!
- People would see what others are working on, form teams, and pursue goals documented by others with money to compensate progress in their areas of interest.
- Work in an individual's knowledge graph will probably end up being tied to a Cardano wallet, or (optionally) an Ada Handle, making it easy to donate to someone's work.
Dashboards:
- Ways of visualizing and having a high level overview of your graph will be explored.
How do you intend to measure the success of your project?
- Documentation will be produced that describes this system in detail: People using ideas from the docs in their own work could be a source of beneficial impact.
- An MVP will be developed: There is impact in how many people use it, and how much it improves the quality of their work.
- Giving people in our ecosystem better ways to merging work and knowledge, both individually and collectively, could give everyone a better understanding of the knowledge space we're working in, and more insight into where they fit in.
Please describe your plans to share the outputs and results of your project?
What are your plans to spread the project’s outputs over a reasonable timescale?
- I've already put a lot of effort into the ideas for this project.
- Documenting those ideas in a presentable way will start even before funding is approved because I believe they are too important to wait for compensation.
- If funding is approved for this, or at least two of my other smaller proposals (if you don't want to vote for this one), then I will finish the initial documentation with the proof of concept for the web interface and start working on the terminal app.
- Especially after the first six months (when my priorities will be focused on my smaller proposals), I will host community discussions after Catalyst townhalls and get people's ideas and feedback about the experience of using whatever I have ready for testing.
- Within the final six months of this project I should be able to get Dims to a place where it's usable for real work, and those who have shown interest along the way are in a place to collaborate on future refinement on this innovation management tool.
How and with whom will you share the outputs/impact and opportunities that will arise as a result of your completed project?
- Everything will be made available on the linked GitHub page.
- Everything related to this project will be open source under either the Apache-2.0 or CC-BY-SA-4.0 license depending on whether it's code or documentation.
- I plan to make myself available for further discussion and collaboration after completion.
How do you expect to use the results generated from the project in further research and development activities?
- Part of the reason I need this tool personally is for my research in programming language design and how the developer experience can be optimized through the careful choosing of language semantics.
- My (currently conceptual) programming language called Poplar will build on-top of Plutus Core semantics, and take inspiration from other languages and tools such as Nix, Git, Elm, Pony, Haskell, Ocaml, Elixir/Erlang, TLA+/μKanren, Common Lisp, Pie, and the K Framework.