Readit News logoReadit News
chrismorgan · a year ago
> SQLite is not open source in the legal sense, as “open source” has a specific definition and requires licenses approved by the Open Source Initiative (OSI).

This is wrong, and harmfully wrong. OSI are not the arbiters of open source. Their Open Source Definition, though generally useful and accepted, is not without legitimate criticism and controversy. As for their approval, that’s a dreadful thing to rely on for any purpose; <https://writing.kemitchell.com/2019/05/05/Rely-on-OSI.html> is a good description of most of what’s wrong with it (it doesn’t really get into the broken politics enough; but some of his other articles contain more), and I like its summary: “The list of OSI-approved licenses reflects OSI’s practical and political history, not any useful, consistently functional category of license terms.”

As for whether SQLite is open source, well, the only reason a public domain dedication doesn’t meet the OSD is that it’s not a license. It’s more open. In a way that is legally mildly uncertain in some jurisdictions, sure, but to call it “not open source in the legal sense” is just wrong.

remram · a year ago
OP is wrong, SQLite does match the requirements outlined in the OSI's definition: https://opensource.org/osd

It's not "open source licensed" simply because it is not licensed. There is no license document for OSI to approve.

Relying on OSI approval does not necessarily make sense, they don't get to all licenses as your link points out. However arguing over their definition seems very foolish. People only do it when they want to pass their all-rights-reserved code as "open source" (e.g. "I can call it what I want"). Having adjectives that mean the same to everyone is very valuable, actually.

evanelias · a year ago
> Having adjectives that mean the same to everyone is very valuable, actually.

Yes, and that's precisely why OSI should have invented a brand new term which they could trademark. But instead they co-opted "open source" which already had a clear, generic meaning of "the source code is available", previously without any connotations around specific license terms. And then due to that prior usage of the term, OSI can't trademark it.

OSI created this terminology mess, and personally I don't think it is "foolish" to argue with their historical revisionism campaign around it.

Edit to add: for numerous proven examples of the term being used for many years prior to the OSI's existence, read the link ezekg already posted below, https://dieter.plaetinck.be/posts/open-source-undefined-part...

graemep · a year ago
> OP is wrong, SQLite does match the requirements outlined in the OSI's definition:

That is true for most of us, but there are jurisdictions that do not recognise the public domain in the same way. SQLite's license page mentions this and offers licensing for people who need to deal with this. https://www.sqlite.org/copyright.html

avinassh · a year ago
> OP is wrong, SQLite does match the requirements outlined in the OSI's definition: https://opensource.org/osd

OSI also says Public Domain is not open source: Public Domain Is Not Open Source https://opensource.org/blog/public-domain-is-not-open-source

Deleted Comment

avinassh · a year ago
I will try to rephrase it and include links to Wikipedia and OSI

> As for whether SQLite is open source, well, the only reason a public domain dedication doesn’t meet the OSD is that it’s not a license. It’s more open.

That's true and I do acknowledge this in the post:

> Instead, SQLite is in the public domain, which means it has even fewer restrictions than any open source license.

[1] https://en.wikipedia.org/wiki/Open_source

[2] https://opensource.org/blog/public-domain-is-not-open-source

ezekg · a year ago
Here's another interesting read on "open source" and the OSI: https://dieter.plaetinck.be/posts/open-source-undefined-part...
cryptonector · a year ago
I'm willing to let OSI own "Open Source", cause why not (do they have a trademark on "Open Source"?), but not "open source". All-lowercase "open source" includes public domain, I don't care what OSI says about it, while "Open Source" is whatever OSI says it is, and if that does not include public domain then so be it.
saulpw · a year ago
Capital letters are only useful as ECC, not direct signal. (You can't pronounce them, they aren't preserved in many contexts, the lay writer won't respect them, etc).

Your idea is like saying "Google" can be a trademark owned by Alphabet but "google" is just a verb. It seems like a cute linguistic hack but won't be meaningful in the public discourse.

rad_gruchalski · a year ago
Quite an interesting rabbit hole to explore. Apparently OSI holds a US trademark for “Open Source Initiative Approved License”, but no trademark for “open source” by itself.
red_admiral · a year ago
Indeed, it seems to me that Public Domain is what Open Source should have been in the first place.

The free as in freedom, but not as in free beer quadrant doesn't work too well, especially for individual developers.

dec0dedab0de · a year ago
You can release a binary as public domain.

Also, I believe that public domain as a concept does not exist in some countries. if i remember correctly the concern is that without a license the original author could change their mind and sue.

But any public domain software also matches the fsf and osi definition of free software and open source respectively. Atleast in jurisdictions where public domain exists.

You may be confusing things with copy-left, which is designed to protect users from developers. The gpl is a copy-left license.

sneak · a year ago
There is an argument that without the copyleft provisions of the GPL (sometimes described as a virus), free software would not be as popular and important as it is today.
gcau · a year ago
You are 100% correct. Open source has a common definition the vast majority of the world uses, a company can proclaim their own definition, but it doesn't magically change the language. Nobody is thinking about, or even aware of, the OSI, when using the term. The correct term people should be using is "OSI approved", or something similar, although that's no more meaningful or useful as a "bob approved" license, where bob is some random nobody.
mschuster91 · a year ago
The thing is, in many corporate and government settings, OSI is trusted by default as "this is open source", and anything not explicitly covered by OSI will cause you a world of pain with your legal department to get an exception.
WaxProlix · a year ago
And yet sqlite is the most distributed database code on the planet by an order of magnitude.
red_admiral · a year ago
What part of Public Domain do these legal departments not understand?

Dead Comment

belter · a year ago
You commented before reading...Unless the author updated the blog in the meanwhile. Because point 6 says: "Instead, SQLite is in the public domain, which means it has even fewer restrictions than any open source license."
Filligree · a year ago
Which is not a thing in my jurisdiction, and so as far as I can tell it’s treated as being proprietary and unlicensed.
causal · a year ago
That's the point. It should still be considered open source.
hitekker · a year ago
This blog feels like karma farming. Recycled, old points in listicle format on a popular topic with questionable accuracy. This is on top of mixing in grievances the author's startup holds against Dr Richard Hipp, like "won't accept (our) outside contributions" and "not actually open source according to OSI".

As far as content goes, this listicle is probably great for view counts/engagement/flamewars. I'd personally prefer deeper thinking which this blog's previous posts-- high in hype and low in technical rigor-- have not yet provided.

avinassh · a year ago
> Recycled, old points in listicle format on a popular topic with questionable accuracy.

Could you please state which are inaccurate? I am happy to correct them.

As for the rest of the comment, well, I don't know what to say. I am a beginner in databases and I am journaling the things I'm learning. Some of my posts might not have depth because I don't know much myself.

mtlynch · a year ago
Your post:

>There are over one trillion (1000000000000 or a million million) SQLite databases in active use.

The original source[0] (which you don't link to):

>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.

You're changing speculation to a fact.

[0] https://www.sqlite.org/mostdeployed.html

seritools · a year ago
> I hate that it doesn’t have types. It’s totally YOLO:

SQLite _does_ support strict column types since 3.37: https://www.sqlite.org/stricttables.html

chasil · a year ago
I am fairly certain that Dr. Hipp has discussed changes in SQLite that were desired by Microsoft for integration into Windows, which came to pass via a foundation membership.

I believe that this was mentioned in the video below (I am not able to verify for now):

https://m.youtube.com/watch?v=Jib2AmRb_rk

It would be interesting to see what is required for an organization to negotiate non-trivial changes in SQLite.

kerblang · a year ago
Didn't see this comment before complaining in a separate comment, but a destroyer is not a battleship.

https://en.wikipedia.org/wiki/Battleshiphttps://en.wikipedia.org/wiki/Destroyer

7thpower · a year ago
I just wanted to chime in and say I hope you keep it up; not only learning and creating the content, but also engaging.
simplegeek · a year ago
A little off topic, but just wanted to say please keep blogging. I learn from your content as I’m also a beginner in databases.
xhkkffbf · a year ago
I don't know if this is an inaccuracy per se, but it seems like (7) and (8) are in contradiction. One says they don't accept outside contributions and the other says, "Contributing to SQLite is invite-only".
johnfn · a year ago
> I'd personally prefer deeper thinking which this blog's previous posts-- high in hype and low in technical rigor-- have not yet provided.

Really? Something like this[1] (literally the previous post made by the author!) is "high in hype and low in technical rigor"? Or do you just have an axe to grind?

[1]: https://avi.im/blag/2024/sqlite-past-present-future/

radicalriddler · a year ago
Agreed. I think I saw it on twitter, quick squiz of the first couple points and then closed it. Was surprised to see it on HN.
bbkane · a year ago
This comment feels like "old man yells at clouds". Vague, non-specific points about the accuracy of the article. This is on top of mixing in grievances with the author non-judgmentally listing and citing facts about SQLite's contribution model and license.

As far as the content goes, this comment is probably great for view counts/engagement/flamewars. I'd personally prefer deeper thinking, which this author's previous comments-- usually fun and interesting-- have provided ;)

chrismorgan · a year ago
> SQLite does not have a Code of Conduct (CoC), rather Code of Ethics

There was confusion over this, because of different usage of words. Simplifying well beyond the point of strict accuracy, a CoC is a weapon to bind and control external contributors’ behaviour, the CoE is SQLite developers declaring their intended conduct towards others.

> SQLite is pronounced as “Ess-Cue-El-Lite”.

This doesn’t match the quote that follows, which says “S-Q-L-ite, like a mineral”. And that’s just how one guy chooses to pronounce it… I wonder how many others do; certainly I’ve never heard it.

dkjaudyeqooe · a year ago
There is some controversy over how to pronounce SQL with some using S-Q-L and others (like me) pronouncing it like the word "sequel".

I believe the latter is the correct name for historical reasons. IBM originally named SQL 'SEQUEL' but were forced to rename it for trademark reasons.

So I pronounce SQLite sequelite.

chrismorgan · a year ago
> So I pronounce SQLite sequelite.

This is by far the most popular pronunciation I’ve encountered, and I think by far the most practical one too.

conductr · a year ago
Some time around 2008-2012, I think, my habit shifted from saying S Q L to SEQUEL in most cases. Even internal voice, when thinking/reading, still says SEQUAL now. Even things like My S Q L became My SEQUEL.

I feel like I made that shift due to how people around me, and how public speakers, were aligning on it too, it felt to me that the nomenclature was unifying a bit as linguistics evolve and change a bit over normal course of time. I remember the shift was not easy and I had to put intention into it and it took a bit of time to make it feel natural. Although, I’ve never thought about this too deeply and as I write it I’m Not sure how others would respond to my memory of it. I’m sure it’s very regional, and now age dependent as I’m sure if I was passed mid career at that time i wouldn’t have budged on my preferred terminology but also there’s many people who maybe are just too young to understand the time and trend that I remember. Or just my own experience and there was nothing really unifying at all.

somat · a year ago
For what it's worth(not much), but if we are doing a survey...

(US/western, not coastal)

I pronounce it ess que lite.

and always letter out SQL.

postgresql is the tricky one, naively there is no good way to pronounce it. so when formal I say "postgres Q L" but mostly just call it postgres

and because of the previous cases I have started slurring mysql, easily the most pronounceable one into "mys Q L"

Microsofts SQL server (which I have never actually used, and almost never talk about) is simply "S Q L server"

axus · a year ago
Spite is a legitimate reason to choose a pronunciation.
fatboy · a year ago
I remember hearing an interview with Richard Hipp where he said he pronounced it as you do ("rhymes with kryptonite" I think he may have said, or perhaps "like a mineral").

I'd always pronounced it in my head S-Q-L-Lite up until that point, but I much prefer this other way that I'd never considered. It rolls off the tongue easier and adds a bit of fancy.

bun_terminator · a year ago
I have never heard anything else but S-Q-L, in multiple workplaces. What I was new to databases I started with the history lesson, but was quickly corrected to pronounce it S-Q-L.

I don't even know anymore, nor does anyone else I think

jitl · a year ago
The OP failed to mention that SQLite does have opt-in strict tables that enforce types, you just need to do `CREATE TABLE name (stuff TEXT) STRICT`, see https://www.sqlite.org/stricttables.html

Like journal mode being ROLLBACK by default instead of WAL, foreign key constraints being off by default, tables being lax by default is part of SQLite’s dedication to backwards compatibility.

avinassh · a year ago
> The OP failed to mention that SQLite does have opt-in strict tables

I did not, but probably I did not phrase correctly:

> Strong typed columns are opt-in.

jitl · a year ago
You write:

> 18. I hate that it doesn’t have types. It’s totally YOLO:

In the point where you say that you didn’t mention STRICT mode, which seems to directly address your complaint.

drzaiusx11 · a year ago
I worked with Richard Hipp on a project to integrate his query engine into a custom scripting language with persistent storage for embedded devices (think c#'s linq but backed by flash storage).

He was a pleasure to work with and it seemed he made a decent living just off of support contracts for projects like this. One of the few one-man-shops that really, really worked out.

Tempest1981 · a year ago
I think I would have serious imposter syndrome. What was that like?
drzaiusx11 · a year ago
I was still just a "kid" at the time (early 20s, I'm over 40 now for context) so I was just excited to be working with folks that seemed to know what they were doing (as I clearly didn't.) Every day I was excited to go to work and absorb as much as I could. Richard and the other seniors were never condescending and everyone was able to communicate the inner workings of their systems to a naive kid straight out of college.

The same project (nTAG Interactive LLC) also involved Brian Silverman who famously made a Babbage style mechanical computer capable of playing tick tac toe using only tinker toys for construction while he was still attending university. He also created the original Lego "computing brick" which ran Logo, a lisp-adjacent language, via interpreter/pcode vm he wrote using HC11 ASM (and later he ported to PIC for the "Cricket" robotics controller.) That brick project spun off into what is today Lego Mindstorms. So I've had the privilege of working with some very creative and intelligent folks over the years.

I had only stumbled into the opportunity by way of working as an assistant at my local university's robotics lab (to help pay for undergrad) when my professor thought I would be a good fit for the MIT Media Lab startup opening.

The job was a tremendously fun time and to this day I still think of it as my "favorite" work experience. Sadly, as with most startups, ours didn't make it when funding dried up, so the fun eventually ended. To be honest, I've been involved with a number of other early stage startups (and various larger size orgs) since and none have come close to the experience. There truly isn't anything better than being surrounded by folks who are masters at their craft and are willing to help you learn.

Imustaskforhelp · a year ago
ooh very interesting , could you share the link ?

I am interested in a thing where the whole programming language / program stack and everything is stored in the memory so you can have a language where it can run from where it was paused , inspired by some comment on some other hackernews thread . I had spent some of my weekends trying it but no use

drzaiusx11 · a year ago
What you're describing is exactly how early versions of PalmOS worked as they just kept parts of the OS in static ram so you always continue applications exactly how you left them.
392 · a year ago
Sounds like you'd be interested in flawless.dev
agilob · a year ago
One interesting fact is that for one release of SQLite the team worked on lots of micro-optimisations that resulted in speed up of even 50% https://sqlite-users.sqlite.narkive.com/CVRvSKBs/50-faster-t...
tiffanyh · a year ago
The perf visual, by release:

https://www.sqlite.org/images/sschart20221116.jpg

The bulk of the gains happened between 2013-2017.

didgetmaster · a year ago
Did they stop thinking of performance gains as a priority after 2017? The improvements have been very weak since then. Just wondering if they ran out of low hanging fruit or if they just didn't think it was important anymore.
TekMol · a year ago
My latest favorite fun fact about SQLite is that it is not only my favorite SQL database, but also my favorite NoSql database.

Since 2024, all my new database tables have only one column. Everything just goes into one single JSON column, which I always call "data".

    SELECT 
        cities.data->>'name' city_name,
        countries.data->>'name' country_name
    FROM cities
    JOIN countries
         ON countries.data->'id' = cities.data->'country_id'
I looked around a bit if some NoSql database would make this easier. But it turned out no, even now that I only use Json everywhere, SQLite is still the best tool.

actuallyalys · a year ago
I’m curious what the reasoning behind having no id or key column. Do you use indexed expressions to index JSON fields? Do you use Rowid for certain queries? Or do you not bother with indexes?

My understanding is that NoSQL databases still have indexes and it seems like using SQLite as you demonstrate could be worse in that regard.

TekMol · a year ago

    reasoning behind having no id or key column
The entries in the data column already have an id field. What would be an upside of having another id in a column? It seems that only complicates things and has the potential for invalid states (different id in the id column than in the json field).

So far I have not used indexes because things are fast enough as they are. I would expect that when I need more speed, I can easily add indexes on expressions.

Why do you expect SQLite indexes on expressions to be worse than what NoSQL databases do for indexing?

RadiozRadioz · a year ago
> Since 2024

So you have only just started doing this

breakingcups · a year ago
Well, they did say "latest". 2024 has also been going for 364 days now.
timewizard · a year ago
Have you used indexes on any of these tables? I see that it can be done but I'm curious as to how that plays out. Any hints?
rafram · a year ago
But why?
advisedwang · a year ago
To get the worst of both worlds
TekMol · a year ago
Multiple reasons. Let me start with one: Flexibility.

I can add a new attribute the very moment I create a new row.

When I want to add "not_available_before: 2026" to a car, I can do that right away. No need to alter the table and add a new column.

rob137 · a year ago
What are the most obvious downsides to this approach?
SigmundA · a year ago
> So DRH asked the question: what if the database just worked without any server? This was an innovative idea back then.

Strange my recollection of the time was file based databases were much more popular. FoxPro, Access (jet) and Dbase where all in wide use in 90's and early 2000's and ran a lot of business software using network file shares instead of a database server.

vidarh · a year ago
Indeed, you're right - there was a multitude of products like that, and linked in libraries for managing databases.

That said, I'm not aware of anyone doing that with SQL before SQLite. Though I might well have missed some.

SigmundA · a year ago
The Access database engine used SQL, it's how I got started using the language in the mid 90's.

It wasn't just used by MS Access, its was used from VB and other languages because it was just an ODBC/OLEDB driver.

https://en.wikipedia.org/wiki/Access_Database_Engine

FoxPro looks like it supported SQL in V2 in 1991

https://www.landley.net/history/mirror/collate/foxpro/foxpro...

Kwpolska · a year ago
emmelaich · a year ago
There is/was https://en.wikipedia.org/wiki/MSQL

There were also minimalist SQL interfaces to say BerkeleyDB and DBM around.

It was a rival of MySQL for a while. The article says "mSQL was the first low-cost SQL-based database management system" but notes citation needed. Certainly matches my memory though.

Home page: https://hughestech.com.au/products/msql/

[I thought it could run serverless but maybe that was very early versions if at all]

litoE · a year ago
Unify was also serverless. It handled multiple concurrent writing processes and supported SQL. We were using it in the 1985-1990 timeframe.
beagle3 · a year ago
Borland’s Interbase.

I also vaguely remember an optional SQL interface for Btrieve circa 1990, but I might be mistaken.

whartung · a year ago
GUPTA SQLBase was another popular embedded database.

We had it in an application written in C.

chasil · a year ago
dBase IV had a SQL implementation. I never used it.

https://en.wikipedia.org/wiki/DBase#dBase_IV

danpalmer · a year ago
Yeah this one stuck out to me. I had thought that SQLite was probably inspired by BerkeleyDB which came out in 1994. That’s key value not relational, but the idea of a local, embedded database was not new.