A version-controlled object database with real-time collaborative editing
coreobject.org
coreobject.org
reminded me of The Mother of All Demos https://www.youtube.com/watch?v=yJDv-zdhzMY&feature=youtu.be...
We're still trying to get this out of the genetic soup stage.
CoreObject looks like a great stab at it with a great name!
Imagine putting code AST in this DB, using reference-values for variable bindings and function bindings (rather than string-based resolution). Then editing the AST in a structural editor with nice code views. The Light Table people seem to be trying to do this now with Aurora. I want to do it too, but damn is it hard.
We also give a brief overview of the Diff/Merge model here: http://coreobject.org/technotes/#diffmerge
> CoreObject is a version-controlled object database for Objective-C that supports powerful undo, semantic merging, and real-time collaborative editing.
"Collaborative editing on any document, Easy data sharing between applications, Everything is searchable, past and present"
"On any document" doesn't sound like Objective-C any more. One of the videos shows drawing shapes not source code. If it had "library" in big and bold somewhere then I would probably be like "Ah I see". But the word library is not found on the page except in the description of a minor feature.
Bottom line: I was (still am) confused what this thing is other than it does some cool version-controlled, collaborative editing.
For every commit on a versioned document (or branch more precisely), CoreObject will compute an object graph diff, and save it as a new revision in the store.
For the collaborative editing, we have a distinct and optional synchronization layer, that can observe in-memory changes to versioned documents, and push the latest object graph diffs over XMPP, between a server (the person sharing the document) and some clients (the invited persons).
For some more explanations, you can check: http://coreobject.org/technotes/#collaborative-editing
Also CoreObject is not strictly limited to GUI or traditional desktop applications, we plan to port it to iOS, and nothing prevents you to use it in a command-line application.
I think many programmers in the open source world are put off by custom file formats and custom network protocols that are only supported by one library. Of course, basing the file format on SqlLite certainly helps, but that's only the bottom level.
It would be nice to have a design doc that explains the SqlLite schema and network protocol, and least a proof of concept for another library that speaks the same protocol that's not written in Objective C. Perhaps this would be the start of a standard that more people would use?
I wonder if there are similar version-controlled object databases available for other environments?
it would be great to see other peoples work and how the auto merges are made and can be restructured.
Its a real shame that it is not exposed in two most popular editors (gdocs and word)
> Minimal dependencies (SQLite and EtoileFoundation)
As for EtouleFoundation, most of the README treats OS X like a second-tier platform.But beside this, it is well supported on iOS and OS X. The test suite runs on our three target platforms: GNUstep, Mac OS X and iOS, and we use it daily on both OS X and GNUstep.
The EtoileFoundation version bundled with CoreObject is also a special snapshot just for the CoreObject release.