Matthias J Mair

The boring part of maintaining software

What kind of chores need to happen to keep a self-hosted project long term viable? And why “base” funding is often more important that one-off funds.

Explaining by sample

InvenTree 0.14.0 (still WIP but the roadmap is in the open as always) is shaping up to be a big one again. We will probably have to stop saying that in every release blog, now that we accumulate nearly 200 issues/pull requests in a 77 day window.

A theme for me in this window was chores/CI work. The changes that are not flashy, do not make the release notes and just keep things working properly. For example adding a way to check if the API schema is changing with a PR and blocking a merge if the API version was not bumped #6440. Or upgrading major framework versions. We had to migrate to Django 4 LTS as Django 3’s End of Life was approaching fast. We know that InvenTree is being run in highly restricted / regulated environments so addressing this was important. It has been in my ToDo since April 2022 and took quite a lot of detective work and collaboration to get across the finish line. We had to patch multiple dependencies, most notably django-mptt to get everything working again . It took me multiple attempts and the finals commit number is representative of its age, fortunately we squash commits before they are merged into upstream (#6173). Refactoring the code base to be as easy to read/understand as possible #6151 or follow depreciation #6210. Bumping dependencies also has to be done regularly to keep the stack secure #6421.

Code Chores

All these things do not qualify for flashy blogs, my best description for them is (code base) chores. These are what maintenance is really about. Keeping the project running (safe, reliable, maintainable, …) so that others can build the fun, simple feature requests. Both are important in their own way to keep projects alive. Marketing the the later is a lot simpler.

Funding the boring stuff

Constant funding for projects and maintainers is important to keep these thing happening. Not a lot of people enjoy chores, me neither. Companies are often more willing to sponsor specific feature requests - they are easy to communicate to management, I get it. This presents a problem because the reality of InvenTree is that Oliver (who does a lot more maintenance than me) and I spend more time on fixing bugs, answering (setup) questions and chores than new features. From conversations with other developers it seems like that is mostly the case in smaller self-hosted OSS projects.

So how do you attract money for this if it is hard to sell? There are many possible avenues, every other big project is trying to balance their answer. I am currently leaning in favour of this platform, polar.sh . Here we have the option to split money coming in for feature request between contributors and the project to help with maintenance.

I am not sure if this will work but not trying is a guaranteed way to fail. Subscribe if you want to get background on InvenTree and its ecosystem. Sponsor InvenTree, take a look at InvenHost and thank a maintainer.

Note

This content was originally posted on my polar.sh site when they had a focus on helping OSS devs ith features like newsletter, issue funding and donations.


Previous / Next Articles