Part V: The Next Web

Chapter 14

#The Web as commons: innovation happens elsewhere

https://dreamsongs.com/IHE/ There is an old open source book by Ron Goldman and Richard P. Gabriel called Innovation Happens Elsewhere. The title is the important part. It sounds like business advice, and it is, but it is also software architecture advice. https://dreamsongs.com/IHE/

Even if you have a team of the smartest people around, many more smart people will live and work outside your team. You can invest heavily in providing the features your users need, and still find users whose wishes aren't heard.

You cannot compete with the world. You cannot build the world.

Closed systems have their own advantages, but many of those advantages belong to the 'owner' of that system. As a user you have little influence. You cannot advance or evolve it yourself. The future has to arrive through the front gate.

If the owner of the system does not build it, it doesn't exist there. An outside wizard with a better idea must convince the owner, copy the system, or build somewhere else and hope the users find it.

That's not a system built to grow, or to allow change at scale.

#The bazaar needs streets

http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ Eric S. Raymond wrote The Cathedral and the Bazaar, contrasting carefully planned cathedral-style development with the messy, adaptive energy of open source. The point of the bazaar is not the mess, the point is anyone can build a stall there. http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/

A bazaar still needs streets. A stall needs somewhere to stand. People need to know where the entrance is. Someone has to stop a new stall from blocking it.

Open source works the same way. Code needs names, interfaces and conventions. A patch needs somewhere to land. A bug report needs an address. Someone has to remember why the strange part is strange, and someone grumpy enough has to say no when a change would make it stranger.

The Linux kernel is built by thousands of people, but those people do not all edit every part at will. It has maintainers, subsystems, rules and boundaries. The bazaar works because outside work has somewhere to connect.

Innovation can come from elsewhere only when the structure gives it a place to arrive.

#Standards are public boundaries

A closed system can coordinate through ownership. One organization controls the pieces and can make them fit.

In a commons, the boundary itself must be public. Independent tools, people and organizations need agreements they can rely on without sharing an owner. They need standards.

Standards are often boring. That's not a bug, but a feature. A standard should not require everyone to admire the same library, framework or company. It gives different implementations just enough shared ground to meet.

Together, those agreements form infrastructure.

Infrastructure is not built for the next release. It is built for decades, perhaps longer. Its language must stay smaller than the languages above it, because every browser, server and application may come to depend on what its words mean.

A URL identifies, HTTP sends messages, and HTML describes a document. None of them knows whether that document is a shop, a book or a badly maintained collection of cat pictures.

On top of infrastructure lives the platform. Browsers and web servers turn those small agreements into places where software can run. A platform can grow more easily than the infrastructure below it, but applications still need to trust that it won't suddenly move beneath them. At the same time, it needs enough power for people to build useful things on top.

Then come the applications. This is where purpose enters. And diversity. A calendar knows about appointments. A shop knows about products. This book knows about chapters and margins.

The pattern repeats. An application framework is an inner platform: built on the browser or server, but providing another language to the application above it.

Each step upward allows more meaning and more change. Each step downward makes an idea harder to remove. An application feature may disappear with the application. A piece of infrastructure may have to be understood by independent systems for the next thirty years.

A stable system does not keep change out everywhere. It gives each kind of change a place.

#The Web was built this way

The Web did not require one owner to finish the whole idea. Its infrastructure did not contain a search engine, a shop or a social network. Instead it gave browsers, servers and documents enough shared ground for other people to build them.

A new server could appear without asking every browser for permission. A new browser could read existing pages. A new page could link to an old one. A new site did not need permission from the old sites before it could exist.

People built search engines, blogs, shops, forums, wikis, maps, webmail and many things nobody had thought to include in the original design. Some of it was beautiful. Some of it was regrettable. That is what happens when the world gets involved.

The important point is that the Web did not have to predict all of it first.

The Web as we live in it is not entirely open ground. Search engines, social networks, app stores, cloud platforms, ad networks and identity providers have built castles on top of it.

Castles are convenient. They can be built quickly, and functionality can be added without committee meetings about the exact meaning of sameAs. More important, they are profitable.

But the open ground still matters. Without it, the castles would be the whole world.

#The outside needs a way in

The open ground does more than preserve what already exists. It gives new ideas somewhere to begin. A new idea can first live in an application. It can be tried, changed, abandoned or rebuilt without touching every browser and server.

If many applications need it, a platform may learn to provide it. But only the smallest and most durable agreements should move into infrastructure, because everything above may have to carry them for decades.

Keep an idea as high in the stack as it can live.

Instead of designing the entire world, you design where another thing can meet it. What needs a public name? Which format must survive the current implementation? Which agreement allows an independent tool to participate?

That gives outsiders somewhere to act. People are no longer captives in your castle; they become a community. They can build their own tools and extensions without asking permission.

Open source is one way to let the outside world in, but it is not the only one. Protocols, data formats, permissive licenses, and boring standards all admit that useful ideas may arrive from elsewhere.

A wizard should not be ashamed of stealing other people's magic. That is how the world improves. The shame is building a system that can only use your own.