This page describes some ideas I've tinkered with in the last year or so. They are by no means complete. I also don't consider this to be a concrete proposal. I do hope this piece can serve to jumpstart some discussion about how Athens could become a platform for more than just storing information.
I've drawn on several ideas and tools developed by other people:
- Ink & Switch article about end-user programming
- The original vision for LightTable
- Zeal - REPL meets Clipboard Manager
Part of the usefulness of Athens (or Roam for that matter) stems from its ability to help you link pages together to create new knowledge. For me, the process of synthesizing new knowledge also entails some programming. I often try to combine some existing data with external data sources for some quick data analysis.
It would be great if Athens could not only be a store of (linked) knowledge but could also be a library of useful functions and visualizations that can be combined to analyze and act upon that knowledge.
The primary building blocks of Athens are pages (nodes) and blocks. Right now the blocks contain only text. What if it would be relatively easy to create new types of blocks?
For example, a block that can visualize some data. Or a block that can request some data from an external API? Blocks could be linked together to create a pipeline transforming and acting on the data that passes through them.
A block would consist of three parts:
- It's state, which should be serializable to EDN so that it can be saved in the Athens database.
- Some code that handles and transforms the data passing through the block.
- Some code that describes the interface. Probably a React/Reagent component.
Parts 2 and 3 for a specific type of block could be reusable and exchanged between users.
Perhaps a good starting point for a discussion would be to determine how extensible Athens should be:
- Do we see Athens primarily as a knowledge store and should its extensibility be limited to tools that help the user analyze this knowledge?
- Or should users also be able to transform and extend the information in their database?
- Or do we go even further and also consider Athens to be a platform for more general computations? Something which allows the user to create small prototypes and tools that can be reused again and again on all kinds of data. Data from the Athens database, but also from external sources.
@avichalp, fixed it! Must have lost the links when copying-and-pasting