“Collaboratory” is a portmanteau of collaboration and laboratory, a word that came to mind while thinking about how empirical research and the experimental method can be applied to further our understanding and development of malleable systems.
There’s an existing thread in a similar direction.
Is anyone aware of workflows and/or support tools for collaborative work on malleable software? – Collaborative work on malleable software
From that general question, I’m interested in a specific concrete implementation for this forum and community.
Would it be helpful to have a collaborative space for writing and running programs? ..For code snippets, sketches, prototypes to demonstrate ideas.
..where people can see and show malleable systems and ideas in action, for example, a running instance of HyperDoc, FreeWheeling apps, Uxn programs, Cardumem wiki, Lopecode, Decker, etc. It could be a Git repository.. – Philosophy of object-orientation - #24 by eliot
Often when I’m writing a post or reply with the Markdown editor, I wish for a workflow closer to literate programming where I can write code or diagrams as easily as writing words in natural language, without breaking my train of thought. For now, I’m trying to solve it by having a code editor and web browser side by side, and preparing a public domain and server to quickly deploy an HTML page; then I can link to a running code example, or make rough sketches to try ideas as we’re talking. But wouldn’t it be nice to solve that for all forum members somehow?
Ideally I’d love a unified interface to “write” by interweaving dynamic blocks with text, like we can with images, links, lists, tables. But I suppose that would mean extending Discourse, written in Ruby if I remember right. Maybe something like a shared Observable (or similar) notebook is more suitable, though that requires a server and database I imagine, not just static files.
According to Stephen Wolfram: “The idea of a notebook is to have an interactive document that freely mixes code, results, graphics, text and everything else.”
From the Jupyter project documentation: “The notebook extends the console-based approach to interactive computing in a qualitatively new direction, providing a web-based application suitable for capturing the whole computation process: developing, documenting, and executing code, as well as communicating the results.”
I’m searching for a practical way to expand this forum as a shared thinking space, so we can write code and experiment with ideas while we’re discussing them.
The separation of “text” (with Markdown features) and “code” (any language but I guess compiled to JavaScript or WebAssembly so it can run in the browser), it seems to limit the flow of discussion to the realm of text, because it takes time and effort to switch to a code editor, write a snippet, push it to your server, and link to it in a post. If we didn’t have that friction or resistance, maybe it’d encourage a more empirical approach, so we can say, “Let’s experiment with this idea,” instead of just talking about it. As Leibnitz said:
Quando orientur controversiae, non magis disputatione opus erit inter duos philosophos, quam inter duos computistas. Sufficiet enim calamos in manus sumere sedereque ad abacos, et sibi mutuo (accito si placet amico) dicere: calculemus.
“If controversies were to arise, there would be no more need of disputation between two philosophers than between two calculators. For it would suffice for them to take their pencils in their hands and to sit down at the abacus, and say to each other (and if they so wish also to a friend called to help): Let us calculate.”