(This entry is part of a series. The audience: SQL Server developers. The topic: SQLite on mobile devices.)
Ever used iTunes for Windows?
Or Microsoft Office on a Mac?
You can usually tell when a piece of software was
ported from another platform.
Everything is a little slower.
Keyboard shortcuts don't follow the conventions.
The menu item is called Preferences instead of Options.
Maybe the software works. Maybe there's nothing really wrong with it. But
things just don't feel quite right.
And even if the app feels okay to you, your
dog knows that something is a bit off.
Sometimes the situation improves 2 or 3 releases later. But not always. And
even if it does, the truth is that a cross-platform app may never
feel like one which was written by a true disciple of the religion.
Evernote will never feel as Deeply iOS-ish as Vesper.
But this is a conscious tradeoff. Vesper will never be as ubiquitous as Evernote.
That's important too.
The wind has shifted
If you have self-identified as a "Microsoft-centric developer" for more than,
say, four years, then you are probably experiencing a lot of uncomfortable change.
Not that long ago, all your tooling and platforms just felt right. The line
between Microsoft Stuff and Other Stuff was pretty clear. As long as you
stayed with solutions provided by Microsoft, you generally knew what to expect.
Somewhere along the way, all that got fouled up.
Microsoft contributed a ton of code to make node.js run natively on Windows.
Without forking it.
Azure supports Linux, Java, PHP and Ruby.
Git ?!? Really?
Microsoft is embracing outside stuff like never before. The world is
different. (Like everything else coming out of Dev Div, if you don't like
it, blame Steve Ballmer, and if you do like it, credit ScottGu.)
Some of these technologies got a nice makeover from the folks in Redmond.
Others just suddenly appeared in the Microsoft ecosystem without
much prep. Showing up at a nice club in jeans and sneakers. Sitting around looking
When considered as part of the Microsoft ecosystem, as a possible
replacement for SQL CE, this awkwardness is the current status of SQLite.
It just doesn't feel right.
People have been asking me to cite an official source for my claim that
"Microsoft apparently considers SQLite to be the replacement for SQL Server
Compact". But I don't really have one.
On the status of SQL CE itself, there is this comment
on a Connect item, written by somebody named "Microsoft":
compact edition is in deprecation mode with no new releases planned near
But that remark doesn't mention SQLite.
If you Google (or Bing) around a bit, you'll find more "evidence" that would be described as informal or anecdotal.
Why isn't Microsoft making a clear statement on this?
I assume it's because
SQLite hasn't had its makeover. Maybe one is coming. Heck if I know. I've got
no inside info. I just think it's likely that somebody inside Microsoft has
a work item entitled "Make the situation better for people using SQLite".
In the meantime,
using SQLite feels like you're using something that didn't originally come from Microsoft.
Because it didn't. SQLite's core API is in C, and all the function names are
lower_case_with_underscores(). Jeans and sneakers.
Why use SQLite if it's so awkward?
Because SQLite is the best available option for SQL on mobile. That's why
it is installed on over a billion devices.
And that's why it's gaining traction in the Microsoft community, despite its
Microsoft isn't an island anymore. Get used to it.
And it's not as bad as all that
Actually, lots of people have done cool stuff to help SQLite shed its awkwardness.
Packages with nice installers.
ADO.NET support. C# wrappers with MixedCaseIdentifiers.
I'll be delving into some of these things later.