Bower's law

· erock's devlog

Any successful project will start by doing one thing, well, but end up doing many things, poorly.

I like opinionated libraries. When a library isn't opinionated, they become a reflection of the wants and needs of its user-base, which muddles and expands the scope of the project. This is the death knell for every successful project. Library authors need courage to withstand the onslaught of every drive-by developer requesting new features. To be clear, this isn't exclusively a library problem, it also applies to products in general.

It seems like there is a congruence between people requesting features and developers wanting to continue adding features to their codebase. It's a natural fit, but one I fear we need to be constantly aware of when maintaining successful projects.

I've also noticed that when a project first gets announced, as a library author, it's really exciting to have people using it. So much so that you want to make every single consumer happy with it.

Further, when projects become incredibly popular, more features are requested, more edge-cases are hit, and more developers want to get involved.

What's the name for when a project just keeps growing and growing until it buckles under its own weight?

# Bower's law

Feel free to let me know if such a term or concept already exists as I'm currently woefully ignorant.

Any successful project will start by doing one thing, well, but end up doing many things, poorly.

Many successful projects start out small which generally means they do one thing really well. This is often a big selling point when advertising the project. However, with popularity comes more use cases.

As features get implemented over the project's lifespan, it slowly grows a larger API surface area. This starts to create friction when using the project.

This law has recursion:

[...] Then someone else will reinvent the library by doing one thing, well, but end up doing many things, poorly. Repeat.

I have no idea what I'm doing. Subscribe to my rss feed to read more of my articles.