Difference between revisions of "ContentEngine"
Arif Iqbal (talk | contribs) |
Arif Iqbal (talk | contribs) |
||
| Line 9: | Line 9: | ||
Name = Name points to a vertex i.e. document | Name = Name points to a vertex i.e. document | ||
| + | |||
| + | Lets consider someone who creates a document with a name "Alex". Alex name points to a particular version of | ||
If a single name points to multiple vertices(documents) then we have ambiguity for choosing a document based on its name e.g "cricket" name can actually point to the bug cricket and game cricket. | If a single name points to multiple vertices(documents) then we have ambiguity for choosing a document based on its name e.g "cricket" name can actually point to the bug cricket and game cricket. | ||
| + | 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" and any such document in the system. | ||
| + | * By creating the document "ABC", the system will add a name "ABC" in our 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 point the name "ABC" to this new version | ||
| + | (doc1) -> (doc2) | ||
| + | ^ | ||
| + | | | ||
| + | ABC | ||
| + | So, now ABC 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 | ||
| + | |||
| + | (doc1) -> (doc2) -> (doc3) -> (doc4) -> (doc5) <--- ABC | ||
| + | ^ | ||
| + | | | ||
| + | ABC | ||
| + | so, Alice has a version of doc4 and Bob has doc5. | ||
Revision as of 07:53, 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.
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
Lets consider someone who creates a document with a name "Alex". Alex name points to a particular version of
If a single name points to multiple vertices(documents) then we have ambiguity for choosing a document based on its name e.g "cricket" name can actually point to the bug cricket and game cricket.
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" and any such document in the system.
- By creating the document "ABC", the system will add a name "ABC" in our 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 point the name "ABC" to this new version
(doc1) -> (doc2)
^
|
ABC
So, now ABC 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
(doc1) -> (doc2) -> (doc3) -> (doc4) -> (doc5)
