Ideas in Computing

This document is a sort of manifesto on my thoughts about the philosophy of computing, as well as a journal of ideas for software and hardware that I'd like to build but don't have the resources to right now. It was inspired by One Hundred Ideas for Computing and there is some overlap between samsquire's ideas and mine.

Table of Contents

Software to Write

libxmpp, an XMPP client library

XMPP is the closest thing we have to a messaging protocol that doesn't totally suck, however its ecosystem is so bad that it doesn't really stand a chance of being adopted right now. XMPP is an extremely modular protocol with functionality split up into extensions called XEPs. The downside of this is that since most XEPs are not core components of the protocol, their implementation is inconsistent between clients. In my experience the only XMPP client that implements enough XEPs to be functional as a nice, modern chat application is Conversations on Android with Gajim on Linux/BSD being a close runner-up.

In order to remedy this I propose we create a library – likely written in C, C++, Go, Rust, or Zig – that implements all the essential functionality of a modern XMPP client including group chats (MUCs), HTTP file upload, OMEMO encryption and key synchronization, publish-subscribe feeds, and voice and video calls. This library could then be used to make the creation of fast, native, and feature-rich XMPP clients much easier.

Libxmpp is just one small step in my master plan to create a truly universal and user-controlled messaging platform capable of lasting the next 30 years; a synchronous analogue to email.

Yet another graphics toolkit

The state of GUI development with free software kind of sucks right now. Unless you want to use something ancient like FLTK or reinvent the wheel with X or Wayland graphic primitives, you're basically stuck with QT or GTK. QT is nice because it's relatively light and pretty portable, but it's written in object-oriented C++ which dramatically reduces which languages you can use to build applications with. GTK is written in C so there are bindings to nearly every language, however it's not very portable and it's managed by the Gnome developers who don't seem to care at all about people who don't use and write applications for Gnome on GNU/Linux. Both toolkits absolutely suck at backwards compatibility. Contrast this with Win32 which, while Windows only, worked just as well 20 years ago as it does today. Themeing QT and GTK applications is a huge pain and there isn't really a way to programatically interact with them like with AppleScript and Cocoa.

I'd like to create a cross-platform, easily themeable (think winamp) GUI toolkit with a focus on accessibility and future-proofing, likely written in C. I know very little about how existing GUI toolkits work so this project is pretty far in the future.

As I understand it GTK and QT use a medley if boutique protocols to load themes and interface with things like screen readers and source browsers, however I think this stuff could be made dramatically simpler and easier to work with by exposing the UI over 9p, just like Plan 9's Acme text editor.

Org as a standard format for WYSIWYG documents

Recently Karl Voit started working on a formal standard for org-mode with the aim of increasing its adoption as a markup language independent of Emacs. As an avid user of org-mode – I'm writing in an org buffer right now – I would really like to be able to simply send people org files instead of exporting them to pdf or odt first.

This meshes nicely with a problem I've noticed in the FOSS side of things: an almost complete and totally lack of lightweight word processors and note-taking applications like TextEdit.app or Notes.app on MacOS. I think that this provides an excellent opportunity to create a lightweight word processor that implements most of the functionality of org-mode in a way that normal people can take advantage of.

This will take time to become a real thing, however I've started work on the initial component, a parser library and command line tool for org files, à la cmark or discount for markdown.

Peer-to-peer collaborative editing

Building off the org-mode word processor idea, it would be great if there was a totally peer-to-peer way collaborating on a document.

I'm thinking something along the lines of Atom's Teletype, but implemented in a way that Emacs users and users of the aforementioned word processor could collaborate on an org document or project without having to create an account somewhere.

Of course, being able synchronously to edit documents stored on a central server would still be a good idea, and could perhaps be adapted to make website publishing really easy, along the lines of the activitypub-based blogging systems.

It might just be a matter of exchanging ed(1) commands through a TCP socket.

Per-document chatrooms might be useful, ideally with a way to be accessed from a bog-standard IRC client for the sake of making this all work seamlessly in Emacs. Given that Emacs runs on a single thread we'd probably use an external program and just communicate with it over a socket or dbus or whatever.

Viewable With Any Browser Join the Fediverse!!! 100% mothra-compatible Powered by FreeBSD This site made with GNU Emacs

Last Modified: 2022-02-06 Sun 09:33

I wish I could meet you IRL