The Fucking Open Web

Nine years ago I was part of an idealistic group of web advocates looking to free the web from the tyranny of the big silos. We saw web identity as a core part of the web’s future and fought to build it with web standards. That’s how I got sucked into the delusional world of open standards and web specifications. We appealed to other developers working at the big co.’s to adopt our work through any means necessary, from high ideals to public shaming. And we got some traction. Aren’t you glad everyone is using fucking OAuth now? (That group, btw, has mostly sold out taking high paying jobs at Facebook and Google, and have not heard from since).

A decade later, I’m the founder of a scrappy startup trying to reinvent web conversations. We have limited resources and a staff of almost 3, struggling to tame this fucking web. It is amazing how hard it still is to build innovative, quality web experiences. It is very much possible – there are plenty of amazing web developers building mind blowing experiences. The problem is, I can’t afford to hire them, especially since a big chunk of them work for Google and Facebook.

It’s hard running a small business. No matter where you stand in the political spectrum, the amount of regulation an American business has to deal with is fucking insane. From incorporation, liability, accounting, human resources, and taxes, the system is rigged for those who already succeeded. We have 2 full time employees and we spend over $6000 a year to make sure we comply with all the payroll and labor laws across multiple states and the federal government. But at least government regulation is a known, predictable cost.

The web on the other hand. Fuck. Continue reading

Open Source Dickishness

Yesterday, to the surprise of the express community, the framework’s creator and longtime maintainer TJ Holowaychuk sold the project to StrongLoop, a commercial node services startup. The move came as a shock to the project active maintainers who have been responsible for the framework exclusively since early January. In a clumsy transfer of ownership, the people actually responsible for the last eight months of the project lost their commit rights (which was later restored).

In a blog post, StrongLoop announced the move as a great next step in the evolution of the project. The blog post masks a commercial transaction as an act of good will by calling it a “transfer of sponsorship”. If all they wanted was to “pitch in and help”, why did they need to take over and move the project? Why is their first public act a blog post and not a pull request?

There is no excuse for violating one of the basic rules of open source – taking a project away from its rightful maintainers. It is also bad form to sell open source maintainer rights (as opposed to trademarks which is pretty common, if obnoxious practice).

The thing about successful open source projects is that their success doesn’t come from the project creator, but from the contributions and adoption of its community. Express’ success has much more to do with the people who chose to use it than the work of one individual, even if he “is responsible for ~95%+ of the project”.

When TJ Holowaychuk lost interest in maintaining Express, he did the right thing (for a change) by letting others take over and keep it going. In open source, that meant the project was no longer his, even if it was located under his GitHub account – a common practice when other people take over a project.

Keeping a project under its original URL is a nice way to maintain continuity and give credit to the original author. It does not give that person the right to take control back without permission, especially not for the sole purpose of selling it to someone else. Not to mention the fact that Express already has a GitHub organization ready and eager to take over the project.

What makes this particular move worse, is the fact that ownership was transferred to a company that directly monetizes Express by selling both professional services and products built on top of it. It gives StrongLoop an unfair advantage over other companies providing node services by putting them in control of a key community asset. It creates a potential conflict of interest between promoting Express vs. their commercial framework LoopBack (which is built on top of Express).

This move only benefits StrongLoop and TJ Holowaychuk, and disadvantages the people who matter the most – the project active maintainers and its community.

Update: TJ Holowaychuk posted his account of the events.

The Fallacy of Tiny Modules

There is this myth, that if you break software into many tiny, super focused pieces, life is better. Bullshit.

Remember when object oriented languages were the shit? Breaking a complex system into small discrete pieces, exposing an abstracted interface, and reusing code by keeping everything highly specialized? Wasn’t it fun!

Call it what you like. Microservices, tiny modules, components, whatever. The bottom line is simple – at some point, someone has to put it all together and then, all the complexity is going to surface and the shit will hit the fan. Microservices are a nice idea and can be a valid architecture decision in some cases, but let’s not pretend that the people running the overall system are going to like it. Trading a large code based routing table for a large load balancer configuration isn’t better (actually, it is usually way worse).

Those promoting the idea of a utopia with a million tiny node modules living happily on npm keep using UNIX as their winning argument. The problem is that it is a false comparison. Small focused components making up the UNIX shell environment are only viable because UNIX is part of a curated distribution. Someone did the nasty hard work of picking a baseline functionality for you. More than that, that collection has been defined into a standard so that whatever UNIX flavor you are on, you can feel right at home.

Imagine if UNIX came with nothing but the kernel. No distributions. You install an empty kernel and then use some package manager to pick your copy, move, and list commands. Not much fun anymore, is it?. But wait, now go pick your flavor of grep, sed, and awk. Now make sure they all work well together and use the same flavor of regular expressions. Now make sure you keep everything up to date for security and stability.

This is what frameworks provide. In practice, a framework is a curated collection of functionality provided as a distribution. By picking a framework, you are picking a “single purpose node distribution” suitable for your application needs. The framework should allow you to swap the components with others but that baseline is the main value proposition. You buy into an ecosystem and in return you get a usable environment out of the box.

Tiny modules are a useful tool and a valuable design because they allow the construction of highly specific environments. But in most application development environments of any meaningful size, someone has to be the curator. Someone has to pick what’s being used and keep the collection both in sync and up to date, just like every UNIX distribution does.

You can argue that this someone is the developer building the application but that’s just not practical for the same reason you let others pick your operating system toolbox, your hardware toolbox, and even within node, your built-in toolbox. And this is just what’s under your web app. Don’t forget the entire front end side on top of it. Drawing the line at “everything on top of node” is an impractical and unproductive choice.

This is why frameworks matter. Go pick one.

(The author is highly biased as the maintainer of one such framework)


A Little Bit of Housekeeping

The articles on this site tend to be very technical and represent the very latest in Open Web technologies. This means they are often obsolete and include incorrect information shortly after being posted. At the same time, people link to specific articles from tutorials and documentation which can be very confusing for those new to the many technologies covered. Continue reading

Welcome to the (New) Hueniverse

Some of you might have noticed some big changes around here.

Huniverse OldHueniverse New

I am happy to announce the first phase in the site redesign. The main focus was the site structure, moving from a linear blog to a more magazine-like site with a resource center area. The new design bring to the front topics that are more popular or relevant, while also making it trivial to find the information needed. At the top of the page you will find a new navigation bar with links to the individual technologies covered, as well as a search box. Continue reading