







Build software that adapts to each user — without forks or feature flags. One codebase, infinite variants.
Differ - Adaptive Software
Build software that adapts to each user — without forks or feature flags. One codebase, infinite variants.

01 · Universal version control
We believe that simple, powerful, universal version control tools could help all kinds of creators produce better work.
A Call to Build Models Like We Build Open-Source Software
1 Introduction 2 A brief explanation of open-source software development 3 Community-developed and continually-improved models 3.1 Incremental and cheaply-communicable updates 3.2 Merging models 3.3 Vetting community contributions 3.4 Versioning and backward compatibility 3.5 Modularity and distribution 4 An example future 5 Conclusion
Fine-grained and accurate source code differencing | Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering
As part of the Digital Library's transition to Open Access, new features for researchers are available in the Premium Edition. Click here to learn more.

bb
bb can control, customize, and automate itself, laying the groundwork for your own software factory.

Convivial design heuristics for software systems
The theme of this workshop is the proliferation of ideas about calling into question the cultural roots of our current programming languages, and the search for alternative paradigms with other cultural bases.
Steven Vandevelde (@tokono.ma)
Looks like what I've been building is quite similar to what the foundation of Patchwork-26 is. Lots of "tiny apps" (atomization of software, loosely coupled) + just the web. Local-first and where everything revolves around the content (data-first, can use preferred UI/view). Happy to see this! 🎉
Please
Please is a cross-language build system with an emphasis on high performance, portability, extensibility and correctness.

Code Is Cheap Now. Software Isn’t.
The barrier to entry for building software has collapsed. The barrier to building something that matters hasn’t moved an inch.
Between Principle and Pragmatism: Reflections on Prototyping Computational Media with Webstrates
Computational media describes a vision of software, which, in contrast to application-centric software, is (1) malleable, so users can modify existing functionality, (2) computable, so users can run custom code, (3) distributable, so users can open documents across different devices, and (4) shareable, so users can easily share and collaborate on documents. Over the last ten years, the Webstrates and Codestrates projects aimed at realizing this vision of computational media. Webstrates is a server application that synchronizes the DOM of websites. Codestrates builds on top of Webstrates and adds an authoring environment, which blurs the use and development of applications. Grounded in a chronology of the development of Webstrates and Codestrates, we present eight tensions that we needed to balance during their development. We use these tensions as an analytical lens in three case studies and a game challenge in which participants created games using Codestrates. We discuss the results of the game challenge based on these tensions and present key takeaways for six of them. Finally, we present six lessons learned from our endeavor to realize the vision of computational media, demonstrating the balancing act of weighing the vision against the pragmatics of implementing a working system.

Local-first Software
Exploring software architecture that returns data to users and enables collaboration in every tool.

panproto/panproto
One engine for schematic version control within and across any schema language.
Compile to Architecture - The Phoenix Architecture
For a long time we’ve treated frameworks as the target of software development. But if systems are meant to be regenerated and replaced safely, the real compilation target has to be the architecture itself.
psf (@psf@oldbytes.space)
In their article ["Malleable Software"](https://www.inkandswitch.com/essay/malleable-software), Ink & Switch list various ways that modern software applications fail to serve the user: - Software is too rigid: users can’t tailor it to suit their workflow, except by entering the role of programmers. - Software applications are overspecialized "avocado slicers", not general tools like "knives", so their lack of tailorability is keenly felt. - Software doesn’t provide a reasonable learning curve from beginner to expert; in other words, time spent learning an application doesn’t unlock tailorability, instead the end user must learn an unrelated skill like a markup/scripting language or even the tool’s implementation language. - Software applications are increasingly siloed, so sharing data between apps, let alone orchestrating cross-app workflows, is overly difficult. These are real problems. From what I can tell, Ink & Switch are software researchers, and view the problems from a highly technical perspective, focusing on novel infrastructure that enables end-user programmability. They pose questions such as "how do we ease users into programming?" and "instead of shipping a dead, static binary, can we ship a living image containing programming tools allowing it to be modified in arbitrary ways while still running?" These ideas are technologically exquisite, but they fail to provide a gentle learning curve. (cont'd) 🧵
The mythical matched modules | Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Certified compilers are complex software systems. Like other large systems, they demand modular, extensible designs. While there has been progress in extensible metatheory mechanization, scaling extensibility and reuse to meet the demands of full ...
