Future of Coding

ULF 2019

Here are some of the ideas I wrote down in prep for and during this meeting at Cambridge:

CustomSuite

Brief description: We spend our lives in mostly siloed and uncustomizable applications, such as email clients, document, presentation and spreadsheet editors, social networks, and task managers. I propose to unbundle the functionality from each application into a shared medium where end-users can fluidly mix and match pieces of each. Instead of an email application, the ability to send an email could be added to anywhere, such as to a rich text editor or the rendered output of a markup language.

Slogan: Make your own office suite.

Examples:

  1. The ability to mix-and-match all the functionality of Google Docs, such as a true (as opposed to presentational) spreadsheet embedded within a document editor embedded within a presentation embedded within a task manager.

  2. All the customizations of Amazing Marvin task manager

  3. I personally want to be able to combine my email inbox with the functionality of a task manager: emails and tasks (along with other rich, dynamic objects) listed alongside one-another in a Workflowy-like tree-structure that allows multiple references to the same object.

  4. Invite list for a party, that allows you to list people, automatically pull in their email addresses, tag them by their host, tag them by their likelihood to attend either manually or based on past attendance data, calculate the estimated attendance, which lives updates in response to RSVPs, and the ability to email and text and otherwise message subsets of guests with invitations and reminders.

Comments: This vision is quite similar to that of Coda and VPRI’s STEPS. I like to distinguish between end-user programming tools like Webflow, which a non-programmer is able to make something for others to consume but not modify, and Coda or spreadsheets, where non-programmers make things for others to consume and also modify.

End-Community Programming

Brief description: Our virtual social lives are on corporate lawns. Can we allow communities and teams, groups not individuals, co-create their shared virtual environments? Ideally this medium will allow individuals to fully customize aspects of the shared environment that do not affect others, but would require some sort of (customizable, of course) consensus mechanism for changes that affect all members. There should be mechanisms for reconciling different versions of a community in such a way that members of each can participate in a shared conversation. Similarly, there should be mechanisms for joining and splitting apart two independent communities, and for linking between conversations across communities.

Examples:

  1. Customizable Twitter, Slack, Facebook

  2. Project Management

  3. CRM

Comments: This is similar to “Ad hoc social apps”, but for more persistent communities. This project is similar in some aspects to the peer-to-peer web projects, such as Mastodon. In Antranig and Philip’s words: “reduce the cost of allowing communities to collaborate without being forced to conform.”

Transplanting features between applications

Brief summary: Consider a colour picker dialog in one application. Why can’t we use it easily from a different application? What would have to change in our operating system and programming toolchains to make this happen? Can someone send (email) a color picker to someone else?

End-User Open Source

Brief summary: For better and for worse, most tools used by developers are now open-source and community developed and supported, while most tools used by non-programmers are closed-source and company created and supported. If end-users could modify the software they use, would it cause all software to become open-source and community created? What tools would be necessary for managing the widely branching variants of forks of forks of forks and re-merging them down the line? What abstractions will be necessary to allow re-use, such as in re-using bits of UI functionality such as text editing or filters or autocomplete?