
A version-controlled object database with real-time collaborative editing - ewasylishen
http://coreobject.org
======
JTxt
The collaboration video
[https://www.youtube.com/watch?v=tXWkhLyQm4s](https://www.youtube.com/watch?v=tXWkhLyQm4s)
especially,

reminded me of The Mother of All Demos [https://www.youtube.com/watch?v=yJDv-
zdhzMY&feature=youtu.be...](https://www.youtube.com/watch?v=yJDv-
zdhzMY&feature=youtu.be&t=1h26m24s)

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!

------
pshc
Awesome! This has potential. Strongly typed ADT support would be nice, and it
needs partial download/module boundaries to scale realistically.

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.

------
keehun
This is really cool! I'm not sure if this is true of the library itself, but
in the Typewriter demo app, "merging" basically means "append." There's no
smart diff and merge.

~~~
aardvark179
I've worked on the merging logic in a version managed database and merging
structured data is not an easy problem, especially as consistent output
options tend to lose more data than the user would like or expect, so you have
to write intelligent merging routines that understand the datamodel at a
pretty deep level. I haven't looked at this library yet, but if it does
provide a merging framework then it will still require significant work in
each app to produce good results.

------
rpedela
Who is the target audience? If the target audience is software engineers then
I think the marketing text is okay, but could use some simplification as well
as a brief description of why I would care. In other words, why aren't my
current tools good enough? If the target audience is Google Docs and Word
users who are not software developers, then I think they would be lost. For
example in the main intro video, one of the first things said is "If you kill
-9". I know what that means, but my sales, marketing, etc friends would have
no clue.

~~~
adrusi
The product is an objective c library. So yes, it's targeted at developers.
This blurb is front and center:

> CoreObject is a version-controlled object database for Objective-C that
> supports powerful undo, semantic merging, and real-time collaborative
> editing.

~~~
rpedela
Yes I read that. Then further down I see the following in User Experience:

"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.

~~~
skybrian
I'm not sure where collaboration enters into it, but it appears to be a
storage library for a traditional desktop application that uses a custom file
format, like a drawing editor or a spreadsheet.

~~~
qmathe
Just to explain the collaborative editing a bit…

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](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.

~~~
skybrian
Hmm, interesting.

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?

------
epayne
This is very exciting. Bravo to team Etoile!

I wonder if there are similar version-controlled object databases available
for other environments?

------
samirahmed
i have always wished, google docs, or office's word versioning showed the tree
/ branch view like this does.

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)

------
ing33k
only for mac ?

~~~
jitl
This is from the Étoilé team, who are building an open-source operating system
based on GNUStep. As stated on the project page,

    
    
        > Minimal dependencies (SQLite and EtoileFoundation)
    

As for EtouleFoundation, most of the README treats OS X like a second-tier
platform.

~~~
qmathe
EtoileFoundation is a still a bit work-in-progress, and we include some
features that only work with the GNUstep Objective-C runtime (e.g.
prototypes).

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.

