I see references to a “core” in the code, what is that?
The core is referring to our internal C++ storage engine. It is not currently open-source but we do plan on open-sourcing it also under the Apache 2.0 license once we’ve had a chance to clean it up, rename it, and finalize major features inside of it. In the meantime, its binary releases are made available under the Realm Core (TightDB) Binary License.
It's a LOT of work to open-source something which has been evolving at a huge pace and is as complex as the Realm core.
Even just announcing the work of the Xamarin C# team that I'm on got some complaints from the public about this representing a "loss of focus". So yes, you could say there was a "business reason" of protecting the core team whilst they got to 1.0.
If you look at the C++ portions included in most of the Realm open source you can see we have moved code gradually into the open source codebase. There's not yet an official C++ API either for the same reason - it would lock in too many decisions and tie up the team.
(disclaimer - these are opinions and observations from a remote contractor, not Realm management!)
I don't believe that complexity or size of code really affects the difficulty of open sourcing a project. Its more likely the culture and daily development practices that are difficult to change, but probably not as difficult as the business strategy we're all wondering about.
https://github.com/realm/realm-cocoa https://github.com/realm/realm-java https://github.com/realm/realm-js https://github.com/realm/realm-dotnet
Edit: Apparently not the guts of it, my bad :(