Plane cockpit with many knobs

We don't want all the features

LichessSoftware Development
Adding lines of code to a program is like adding weight to a plane. It better be worth it.

As a Lichess maintainer, I review pull-requests on a daily basis.

Many of them are adding a new feature. I often decline them. Why?

It would seem that the work is already done, as the feature is implemented, and all we need to do is merge the code and enjoy.

But that's only the tip of the iceberg.

With each new line of code, we're adding maintenance burden for the years to come. Compatibility with the rest of the site, with the mobile app. Migrations through new libraries and language versions. Refactoring of the code itself. Redesigning the UI it is a part of.
The new line of code will need to be revisited many times, adding time and risk to every code modification that affects it.

Adding a new feature is quick and fun. Maintaining it over the years is the real work.

Lines of code are not valuable. They are a cost, that is not paid while writing them, but while maintaining them. Sometimes years later. And they pile up.

Adding lines of code to a program is like adding weight to a plane. It better be worth it.

Just because someone can think of a new thing Lichess can do, doesn't mean Lichess should do it. Our goal is not to do everything that everyone can think of.
So we have to evaluate each new proposed feature, and it usually goes like this:

usefulness = How important is it? How many people will benefit from it?
cost = Does it add code to maintain? UI clutter ?

The higher the usefulness/cost ratio, the more likely we want to invest in that feature - investing in the sense that we commit to maintaining it.
Features with a low perceived usefulness/cost ratio will likely be declined.

You guessed it, my favorite pull requests are not the ones adding new features. Instead, please fix existing bugs, simplify and modernize the existing code. Make Lichess better, not heavier!