SQLlite has also got probably the most well-tested code of conduct of any open source project in the world (aside from the other open source projects which use this CoC)
You can find that just about any statement will result in plenty of people being upset about it. We in the first world society have made life so resource abundant that people need to invent new ways to be seen as a victim, be offended by anything or oppressed in some way.
I have thought about this one a bit, as an Atheist, and frankly, I have a problem with it. Ok, heaven, yes. Eternal peace and love, sounds great. Hell, obviously bad, the torture, the pain. But, to suffer pain I need to be conscious, awake, aware.
For all Eternity.
And surely the Demons must take breaks. nip out for a quick fag. Maybe a long lunch at the pub. I mean they might not tell Satan they were doing it - these are evil beings after all, not known for following the rules. So 15 minutes here, an hour there. Over a week it will add up.
And weeks add up over all of eternity for infinite time.
I mean. You could manage. If you knew you had infinite time, to think, to be. Compared to my belief, extinction, Hell is probably good runners up medal.
> This document continues to be used for its original purpose - providing a reference to fill in the "code of conduct" box on supplier registration forms.
One of the examples of wildly successful "one-man-army" software (conceived of and built by a single person). See also: Redis, Linux, Doom/Quake, Steve Wozniak, jQuery, Python and countless obscure modern SaaS products.
Their extensive test library is proprietary, so they ensure the path of least resistance for companies is to hire themselves to make improvements to the library.
That has helped ensure there are no forks given quality would be inferior.
It also kept SQLite out of the browser since there are no competing implementations of it.
“Web SQL Database is a deprecated web browser API specification for storing data in databases that can be queried using SQL variant.
The API is supported by Google Chrome, Opera, and the Android Browser.
The W3C Web Applications Working Group ceased working on the specification in November 2010, citing a lack of independent implementations (i.e. using database system other than SQLite as the backend) as the reason the specification could not move forward to become a W3C Recommendation.”
I see, thanks. I don't totally agree, though. The comment implied that SQLite's test suite being proprietary is what "kept SQLite out of the browser" by preventing forks, when what kept SQLite out of the browser was just that there were no other high-quality embeddable SQL libraries. Perhaps the test suite being non-proprietary would have allowed for easier forking, but the lack of an available open test suite certainly doesn't *prevent* forks of a public domain codebase, and nothing prevents competing embedded SQL libraries other than the lack of motivation to compete with SQLite.
Even if SQLite's test suite was open, I wouldn't see any big forks taking off, because why would you really want to build a competitor to something that's already super easy and free to use, extremely high quality, very high performance? What really is the drive? If SQLite ever does something the community really doesn't like, then a fork would be worth starting, but unless that happens, I don't see any point, and I really don't see that happening any time soon, given the consistent quality and power of SQLite.
It's sort-of misleading IMHO. A shared backend would be fine (i.e. I believe the independent IndexedDB implementations all end up putting stuff into sqlite, but nevertheless count as independent since they demonstrate that the API isn't tied to it), but the spec draft said
> User agents must implement the SQL dialect supported by Sqlite 3.6.19.
as the only definition on what's allowed SQL, which is a no-go for a spec. The authors could have provided a specification of a required SQL dialect that's sufficient to implement it from scratch/on top of another database, but decided to abandon the effort instead.
Ah, I see. The wording on the Wikipedia page isn't as good as the wording on the specification draft itself:
> This document was on the W3C Recommendation track but specification work has stopped. The specification reached an impasse: all interested implementors have used the same SQL backend (Sqlite), but we need multiple independent implementations to proceed along a standardisation path.
It seems like they didn't just need a specified SQL dialect, but multiple actual implementations, but I might be reading into the wording incorrectly.
It would likely be necessary to have an independent interpreter for the SQL dialect at least, yes. I.e. I assume that something that parses the SQL from scratch and then down the line hands stuff to sqlite as the storage engine would qualify, since the SQL dialect is the point of contention. (The "multiple independent implementations" requirement is afaik also not 100% hard - if everyone agrees to ignore it, it can be ignored, but it's a strong objection if someone disagrees)
SQLite is one of the most amazing pieces of software I've ever seen. It's reliable, it doesn't add any inconvenience to end users, and it's very easy to use.
Richard Hipp discussed this (alongside a deep-dive on the philosophies underpinning his Fossil SCM) when we had him back on The Changelog podcast recently:
> Since SQLite is used extensively in every smartphone, and there are more than 4.0 billion (4.0e9) smartphones in active use, each holding hundreds of SQLite database files, it is seems likely that there are over one trillion (1e12) SQLite databases in active use.
Hundreds of SQLite files? In active use? Unless iOS itself spawns a few hundred instances and actively uses them all the time I have a hard time thinking of what would use so many databases, much less that they’re actually in active use.
Well. I counted 27 SQLite files in my Chrome profile. On a PC though. But as they are used to store History, Cookie, etc. I guess on iOS/Android situations are similar.
That's true of most software though, even when you're staring at their GUI. It's part of the normal operation of the software, where do you draw the line?
The pays says: "Billions and billions of copies of SQLite exist in the wild". Which seems reasonable and is counting the number of installs as you preferred.
Later on the page says "it is seems likely that there are over one trillion (1e12) SQLite databases in active use" which is the quoted title and seems like a reasonable claim and is counting "documents" not installs.
I don't think "documents" is an uninteresting statistic. It is just a different one.
"Active" is a big word here. Each of these databases is in nearly continuous use. You couldn't say that about the vast majority of excel spreadsheets, or any word documents.
Those tend to fall out of the “active use” category not long after entering it, so it’s probably not a big factor.
On a more serious note, had there been something special about SQLite supporting military use of their project that prompted this? Otherwise that’s the point of free software, people are free to do (mostly) whatever they want with it. Including building weapons. SQLite is so prevalent, it’s almost like pointing out you have to include cruise missiles in the count of active x86 chips, or $insert_bad_guy as an active user of roads and electricity.
I'm sure it was picked a long time ago and it's too costly to switch. I imagine any code going into multi-million dollar missile needs to be incredibly audited and understood.
I was just making a funny joke about how it was developed originally for cruise missiles. Though it turns out I was misremembering: it was made for guided missile destroyers. And it makes sense! What a great use case. https://en.wikipedia.org/wiki/SQLite#History
They have a lot of fans, of the type of people that haunt HN.
High quality project that is useful for for small hobbyist projects, startups and large companies alike. Persisting data something that is used in probably the majority of software projects across many verticals. It is OSS software that is easy to pick up. It is a values driven project (both technical and ethical). And the team maintaining it has kept it going for a long time, so as it get rediscovered by others it still has relevancy for many.
Basically it is good software, with a wide TAM, and just enough quirks to appeal to the folks here.
Let's not get distracted by an extraneous provocation. As you can imagine, this has come up frequently when people run into that bit, and tends to lead to the same discussion over and over (and ultimately, religious flamewar).
There's a new site guideline about this actually:
"Please don't pick the most provocative thing in an article and rush to the thread to complain about it. Find something interesting to comment about instead."
> "Please don't pick the most provocative thing in an article and rush to the thread to complain about it. Find something interesting to comment about instead."
So you agree it's a provocative thing. Good, that's all I meant to convey.
> No one is required to follow The Rule...[The SQLite developers] view The Rule as their promise to all SQLite users of how the developers are expected to behave. This is a one-way promise, or covenant. In other words, the developers are saying: "We will treat you this way regardless of how you treat us."
I don't see a problem here, despite my own disinterest in following the Christian faith or any other. It's not hard to distinguish what's applicable from what's not in the verbatim quote of the Rule as given in the document, and if I had maintained my childhood Catholicism I too might demur from merely excerpting a saint.
Had anyone involved with SQLite mistreated someone for not happening to share their faith, I would expect it quite quickly to become public knowledge at least in the community including HN. I haven't heard such a report. Have you?
While true, I suspect this may not reliably qualify as a compelling argument for someone disposed to raise prima facie concerns about the same code of ethics because it makes open reference to deity.
Then again, I suppose an argument from behavior may also be less likely to convince an interlocutor more inclined to concern with what someone else believes than with how they actually behave. So it goes.
edit: haha, this is what I get for skimming the wikipedia article. He has a PhD in computer science, but the full "doctorate of philosophy" is written out instead of abbreviation on that wikipedia article. My pattern matcher needs tuning, apparently. Thanks to those who pointed this out.
Not quite April fool's, but it's definitely a joke, but one with a practical purpose.
> This document continues to be used for its original purpose - providing a reference to fill in the "code of conduct" box on supplier registration forms.
> [we] have pledged to govern [...] in accordance with the "instruments of good works" from chapter 4 of The Rule of St. Benedict (hereafter: "The Rule"). This code of ethics has proven its mettle in thousands of diverse communities for over 1,500 years, and has served as a baseline for many civil law codes since the time of Charlemagne.
So on paper, this makes it a very good code of conduct - something very safe to put on a supplier registration form.
> No one is required to follow The Rule, to know The Rule, or even to think that The Rule is a good idea. The Founder of SQLite believes that anyone who follows The Rule will live a happier and more productive life, but individuals are free to dispute or ignore that advice if they wish.
I love PostgreSQL, and would recommend it anytime. Even though jsonb is very powerful, in general if you store JSON in a SQL database you're very likely doing something wrong. (You're breaking first normal form)
But if you really wanted to use SQLite to store JSON à la jsonb in PostgreSQL you can use generated fields[1]
sqlite> create table t(id integer primary key autoincrement, data text);
sqlite> insert into t(data) values ('{"foo": "value", "bar": "other value"}'), ('{"foo": "baz", "bar": "qux"}');'
[…]
sqlite> alter table t add column foo text generated always as (json_extract(data, '$.foo')) virtual;
sqlite> select * from t;
id data foo
-- -------------------------------------- -----
1 {"foo": "value", "bar": "other value"} value
2 {"foo": "baz", "bar": "qux"} baz
You can even use a "stored" (instead of 'virtual') generated field, and create an index on it for fast lookups.
It's not as powerful as Postgres, but it does a pretty good job.
Database optimization and the level of normalization is a complex topic that varies widely based on application and workload.
JSON is absolutely a valid approach to data storage when dealing with certain data structures. As is using a relational database and jsonb data types for it. Cherry picking columns gives you the advantages for both a NoSQL document storage database as well as a relational analytics database.
This is a pretty common modern technique that Postgres, for example, has made easy.
Go try modeling a FHIR database structure using standard normalization rules.
You'll quickly discover why no one does it. Even HAPI FHIR server (the most full featured and popular FHIR server) written in Java doesn't attempt it.
Disagree storing json in databases is often the best thing to do. Clickhouse for example allows you to quickly pull out relevant data and feed materialized views.
It seems like one thing is that Postgres has two types for JSON: JSON and JSONB.
Both validate syntax on insert. The JSONB datatype (not JSON; note the B on the end) further stores the content in a parsed, binary form so future accesses are faster. The schema author does not have to indicate which columns they would like "fast" access to - queries are free to access any arbitrary path in the JSON, and will get reads that don't require JSON parsing.
It seems like SQLite can achieve something similar but not quite the same. It looks like the user has to specifically enumerate and materialize the columns to which they want fast access.
So it seems like json_extract(...) is comparable to Postgres's JSON type, but there's not quite an analagous thing for Postgres's JSONB type.
Postgres's JSONB type can essentially turn Postgres into a full NoSQL database. Infact, its so good that it can beat MongoDB at its own game in a lot of benchmarks.
https://sqlite.org/codeofethics.html