(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. Like node.js.
Others just suddenly appeared in the Microsoft ecosystem without much prep. Showing up at a nice club in jeans and sneakers. Sitting around looking awkward.
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":
"SQL Server compact edition is in deprecation mode with no new releases planned near future".
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 non-Microsoft-ish feel.
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.