New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewritable software #12

Open
lukego opened this Issue Sep 28, 2015 · 2 comments

Comments

Projects
None yet
3 participants
@lukego
Owner

lukego commented Sep 28, 2015

Rewritable software is a term coined by Jonathan Rees for software that is hard to write but then easy to rewrite.

The software is hard to write in that you spend years patiently writing code, experimenting with complicated ideas, and exploring the problem space. You wrestle with intricate problems, many of them dead-ends, and pull heroic all-night debugging sessions. Gradually though you discover the essense of the problem you are solving and you eliminate the accidental complexity.

The software then is really simple and easy to understand. The complex ideas are conspicuous in their absence. People can read the code, understand it, and write it again themselves. "Is that all there is to it?"

The classic example is perhaps John McCarthy's Lisp interpreter written in Lisp. Jonathan Rees and Richard Kelsey also wrote Scheme48 with this explicit goal: "the name derives from our desire to have an implementation that is simple and lucid enough that it looks as if it were written in just 48 hours."

Snabb Switch aspires to be rewritable software too. We are wrestling with all kinds of complexity: writing device drivers, bypassing operating systems, mapping memories of virtual machines, exploring obscure features of the latest CPUs, and interoperating with many and varied pieces of black-box network equipment.

If we do our job well then after years of intensive development people will be able to read the code and think, "Is that all? I could rewrite that in a weekend."

@panchicore

This comment has been minimized.

Show comment
Hide comment
@panchicore

panchicore commented Mar 9, 2016

Like

@fpereiro

This comment has been minimized.

Show comment
Hide comment
@fpereiro

fpereiro Jan 17, 2017

This article is great. Totally share its spirit.

fpereiro commented Jan 17, 2017

This article is great. Totally share its spirit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment