The Best Thing We Shipped This Week, We Didn't Build
By jagduvi
Tags: community, open-source
A Saturday, and then a Sunday
On the evening of Saturday 30 August, a contributor called khinsberger — someone we have never met — opened a pull request against Cellarion's rack builder.
Honeycomb racks stagger their rows: six bottles, then five, then six. Ours always put the wider row on top. Real cabinets do not care what our code assumed, and plenty of them are built the other way up. The pull request added a flip.
It was not a drive-by. It threaded the option through the 2D rack view, the 3D room view and the rack-creation form; it added tests; and it included a small proof that the change cannot alter a rack's capacity, along with the observation that for an odd number of rows the sequence is a palindrome, so the toggle is a no-op there by construction. We merged it at 17:50.
At 08:47 the next morning, a user opened a support ticket. He had a Liebherr GrandCru 5001, divided into front and back sections, and the back section ran five, six, five, six from the bottom. He could build the front half in Cellarion and not the back. Could we consider adding the reversed layout?
It had gone live about half an hour before he wrote.
By that afternoon he had his whole cabinet mapped, both sections, every bottle placed. The feature that made it possible was written by a stranger who had no idea he existed, one day before he knew he needed it.
We would like to claim we planned that. We did not plan any of it.
The reports that arrive with their own diagnosis
Some things only break in someone else's hands. deltabeat has opened three issues about Cellarion installed on an iPhone — a header sliding under the status bar, a menu that scrolled the page behind it, a sign-in that forgot where you were going — and each arrived with the cause already located in our own code, steps to reproduce it, and a suggested fix. One of them explained, unprompted, why the bug would fail to reproduce for us. Another ruled out two wrong explanations by experiment before writing a word.
Then he did the part we cannot do at all.
Nobody here owns an iPhone. The fixes went out with the mechanism confirmed from the code and his evidence, but the result unverified — so we asked him to check, and he did. One was perfect. The other was not: the button was reachable, but only its bottom edge responded to a tap. He found that too — a padding shorthand in a mobile media query silently cancelling the inset the base rule had added — and measured the button off a screenshot to prove it, arriving at a predicted position that matched where it actually sat to within a pixel or two.
That is not a bug report any more. That is someone running our device testing, on hardware we do not have, for a project that pays him nothing. All three are closed.
None of this is the entry fee, and it would be a shame if the post read as though it were — a screenshot and "this looks wrong" has started plenty of fixes here too. But there is a particular generosity in a report that has already done the hard part, and it deserves saying out loud.
What this actually adds up to
We are not going to dress this up as a movement. Cellarion is a small project. Counting only work from outside: four merged pull requests and fifteen issues. Three of those pull requests came from khinsberger, lukejduncan and opr; the fourth was Weblate delivering a batch of volunteers' translations. The issues came from deltabeat and others who took the time to write something down properly.
Every one of those fifteen issues is closed.
Then there are the translations. Cellarion's interface exists in Swedish, French, German and Estonian because volunteers sat down in a web editor and typed them, phrase by phrase, with no code and no pull requests. And the support tickets, which do not show up in any repository statistic and have probably changed the product more than anything else this year.
Why open source, for a wine app
The licence is the least interesting part of this.
What matters is what it makes possible. khinsberger did not file a feature request and wait for us to agree; he read the rack layout code, understood why the rows were ordered as they were, and changed it — including the part where he worked out that capacity could not be affected. That conversation could not have happened through a support form. It needed the code to be readable by someone who did not work here.
And it means you can leave. Cellarion exports everything you have put into it, and you can run the whole thing on your own machine if you would rather. We think that is the right arrangement even though — perhaps because — it removes any way for us to keep you here except by being worth using.
None of the people above were paid. Several of them fixed something that only mattered to them and then, having fixed it, gave it to everyone.
If you want to join in
There is no wrong door.
Something is broken, or missing. Open an issue on GitHub, or write to support from inside the app. Both are read by a person. A screenshot and "this looks wrong" is a perfectly good bug report.
You write code. The repository is jagduvi1/Cellarion, AGPL-3.0. Small, well-tested pull requests are very welcome, and you will get a real review.
You speak another language. Translating needs no Git and no code — it is a web editor at Weblate. French and German currently need reviewers more than translators.
You know wine better than we do. Every wine in the shared registry can be corrected from its own page. Corrections are reviewed before they go live, and they improve the record for everyone who owns that bottle.
You do not need permission and you do not need to be a developer. A user with a wine cabinet and a clear description of why it would not fit on screen produced two shipped features in a single day.
Thank you — genuinely. Keep them coming.