SQLite briefing for Linux kernel hackers (2019)
So the os is providing an abstraction so you don&#x27;t need to know the underlying hardware, filesystems etc. Sqlite is all like, &quot;yeah but we need to know what you&#x27;re abstracting or everything is terrible.&quot;<p>This seems like a common problem in general.<p>Abstraction to a common interface is fine so if you don&#x27;t care what the abstracted thing is you don&#x27;t need to. Great. Read a basic file off spinning disk, ssd, cdrom, nfs - all the same, all good.<p>But if you do care you can&#x27;t know what it really is because they&#x27;ve abstracted the underlying away with whatever layer(s) sit on top.<p>Should it be a question we need to consider when writing libraries, or any other abstraction, how does one penetrate your abstraction if they need to? Are you really, completely 100% sure they don&#x27;t and shouldn&#x27;t?<p>There&#x27;s a kind of arrogance that we fall into making decisions for others when we design APIs, library interfaces, etc where we know what we&#x27;re exposing and users don&#x27;t know what&#x27;s good for them. Maybe that&#x27;s right sometimes, i don&#x27;t know?<p>This sqlite paper casts some pretty strong doubt on that as an approach, imho.<p>What do you think? Have we all been missing something like this in api design?