Difference between revisions of "ContentEngine"
Arif Iqbal (talk | contribs) |
Arif Iqbal (talk | contribs) |
||
| Line 2: | Line 2: | ||
Our engine borrows heavily from the concepts of the [http://git.or.cz/ Git - Fast Version Control System]. | Our engine borrows heavily from the concepts of the [http://git.or.cz/ Git - Fast Version Control System]. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
To understand how Content Engine works, lets take an example in which Alex and Bob edit documents in the content engine. Lets say Alex creates a document named "ABC" in the content engine. Lets take the steps through which the Content Engine will go through | To understand how Content Engine works, lets take an example in which Alex and Bob edit documents in the content engine. Lets say Alex creates a document named "ABC" in the content engine. Lets take the steps through which the Content Engine will go through | ||
| − | * Intially, | + | * Intially, Content Engine wont have any name "ABC" that live in the system. |
| − | * By creating the document "ABC", the system will add a name "ABC" in | + | * By creating the document "ABC", the system will add a name "ABC" in the engine and will point this to a vertex i.e. first version of this document. |
ABC ---> ( doc1 ) | ABC ---> ( doc1 ) | ||
| − | * Now Alex edits the document and saves another version. At this stage, our system will add another vertex and will point the name "ABC" to this | + | * Now Alex edits the document and saves another version. At this stage, our system will add another vertex and will now point the name "ABC" to this newer version |
(doc1) -> (doc2) | (doc1) -> (doc2) | ||
^ | ^ | ||
| | | | ||
ABC | ABC | ||
| − | So, now ABC points to doc2 i.e. the new version of the document. | + | So, now ABC now points to doc2 i.e. the new version of the document. |
* Now, another user Bob comes and they both start editing the document pointed to by name "ABC" and Bob creates a new version | * Now, another user Bob comes and they both start editing the document pointed to by name "ABC" and Bob creates a new version | ||
(doc1) -> (doc2) -> (doc3) | (doc1) -> (doc2) -> (doc3) | ||
| Line 31: | Line 20: | ||
ABC | ABC | ||
* Alice and Bob now decides that they have different views on topic "ABC" and they rather have their own versions of this topic. So, they the content engine looks like | * Alice and Bob now decides that they have different views on topic "ABC" and they rather have their own versions of this topic. So, they the content engine looks like | ||
| + | -----> (doc5) <--- ABC | ||
| + | | | ||
| + | (doc1) -> (doc2) -> (doc3) -> (doc4) <--- ABC | ||
| − | (doc1) -> (doc2) -> (doc3) -> (doc4) - | + | so, Alice has her thoughts in doc4 and Bob in doc5. |
| − | + | * Later on, their ideas again intersect and now they would like to have their pages combined again on the topic ABC. | |
| − | + | So, Content Engine now takes the sophisticated union of these documents and merge them in a single document i.e. doc6. | |
| − | + | -----> (doc5) -> (doc6) <---- ABC | |
| − | + | | | | |
| + | (doc1) -> (doc2) -> (doc3) -> (doc4) -----^ | ||
| + | Consider the Content Engine as a graph where | ||
| − | + | Vertex = Particular version of a document | |
| − | + | Edge = Connecting different versions of documents | |
| − | + | Name = Name points to a vertex i.e. document | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Revision as of 08:20, 6 May 2007
The ContentEngine is the foundation on which TopSoil is built.
Our engine borrows heavily from the concepts of the Git - Fast Version Control System.
To understand how Content Engine works, lets take an example in which Alex and Bob edit documents in the content engine. Lets say Alex creates a document named "ABC" in the content engine. Lets take the steps through which the Content Engine will go through
- Intially, Content Engine wont have any name "ABC" that live in the system.
- By creating the document "ABC", the system will add a name "ABC" in the engine and will point this to a vertex i.e. first version of this document.
ABC ---> ( doc1 )
- Now Alex edits the document and saves another version. At this stage, our system will add another vertex and will now point the name "ABC" to this newer version
(doc1) -> (doc2)
^
|
ABC
So, now ABC now points to doc2 i.e. the new version of the document.
- Now, another user Bob comes and they both start editing the document pointed to by name "ABC" and Bob creates a new version
(doc1) -> (doc2) -> (doc3)
^
|
ABC
- Alice and Bob now decides that they have different views on topic "ABC" and they rather have their own versions of this topic. So, they the content engine looks like
-----> (doc5) (doc2) -> (doc3) -> (doc4) (doc5) -> (doc6) (doc2) -> (doc3) -> (doc4) -----^
Consider the Content Engine as a graph where
Vertex = Particular version of a document Edge = Connecting different versions of documents Name = Name points to a vertex i.e. document
