Thoughts on SQLite’s CoC

Okay, so, I dropped peewee because of bad behavior on the part of the core maintainer. And then yesterday word got around that SQLite has a… rather tone-deaf but well-meaning CoC that is a bit off-putting. Plenty of people have written about the problems with this CoC itself so it’s not worth me adding my own hot takes on it, and I’m choosing to take Dr. Hipp at his word that he is being sincere about it being a moral framework for working with others and that he doesn’t mean it as a joke (despite the fact that he doesn’t seem to mind the people who are championing it as a “parody of social justice outrage culture” or complaining about the contributor covenant CoC with phrases like “purple-headed feminist” okay argh I’m ranting tangentially, focus).

(I should also mention that the timing of this going around was only a coincidence vis-a-vis my de-ORMing Publ musing. I actually wrote that article several days earlier and started thinking about it over a month ago, and considered rescheduling its publication because I didn’t want people thinking these things were related!)

I’m not about to drop my usage of SQLite over it, in any case, and not just because I rely on SQLite for a lot of things, and it’s what makes the most sense for most deployment cases of Publ. And dropping the entire concept of an ORM just to make it so that you don’t have to rely on SQLite for small deployments makes life way more difficult for when persistent, separately-hosted databases are helpful (such as the Heroku/EC2/etc. deployment case). Especially given that the design debt that such a change would address doesn’t actually handle any use case I have in mind for Publ.

I have actually (briefly) worked with Dr. Hipp; years ago, when I was at Sony, we hired him as a consultant for some of our database storage stuff. Learning about how SQLite works internally, especially its query planner, is a big part of why I ended up gaining so much respect for SQLite and defaulting to it wherever possible. I also don’t want other peoples' religious devotions to get in the way of my appreciation of their work. And it’s not like I’m likely to ever be a contributor to SQLite itself, and the CoC explicitly does not cover users of the software. It might make me think twice before reporting a bug on SQLite but I’ve never had any reason to do so; it’s a very well-engineered library that has proven itself time and time again and is embedded into so many things. Look around you, count the number of devices with a processor in them, and multiply it by three to get a rough estimate of how many SQLite instances you’re using right at this very moment.

Which isn’t to say that the inescapable pervasiveness of a software product is a reason to capitulate to bad behavior and shrug and say it’s okay to support a thing despite ideological differences, right? I mean that wasn’t good enough for the Linux kernel, or for the GNU project.

But I’m trying to take Dr. Hipp at his word, and assume good faith (so to speak) when he defends his decisions. Even if he implicitly violates his own moral code in doing so.

Like, when it comes down to it, pragmatism needs to eventually win out over ideology, and I guess making continued use of SQLite will just have to be my… cross to bear.

(Sorry, these expressions are just so ingrained.)

So okay. We’re taking Dr. Hipp at his word that it’s a code of conduct for the core maintainers' behavior as a moral guide for life (we’ll just ignore him referring to the well-considered responses as a “reactionary hate mob forming on twitter”). And SQLite is also in a weird position of being an open-source project that only accepts contributions from the core staff (which all agreed to the CoC, despite not all of them being Christian), so this is essentially a moral framework for them to follow. Well, except they can pick-and-choose the parts they follow so long as they follow the spirit of it. Which I guess means none of the rules are actually rules, because someone could very well honor Christ while also murdering their neighbor or whatever…

…okay, that’s going back into territory I’m trying to avoid rehashing.

Anyway, what this all comes down to is that the SQLite project is being run as a cathedral rather than a bazaar. I just never expected a “cathedral” to be taken quite so literally.

Comments