Home Projects Jobs Clientele Contact


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Versioning

Folks, it is the same post as the previous one, slightly edited.

Ilya A. Volynets-Evenbakh wrote:
Alexey Parshin wrote:

2) what do we do when the new version is produced. My idea is - to
 switch all the object connections to that new version ( edit) or
to produce a new version disconnected, to be used in another parent
 object (clone).

From http://www.total-knowledge.com/wiki/index.php/UU_Tech

When a new version is created, all objects linking to this one are notified. Their action can be one of the following:

* Silently use new version * Use new version and notify owner * Notify owner and keep old version * Silently stick with old version

First of all, there is no such term as "owner" in our specs, ideology,
understanding and so forth. This is one out of few the most important
points, which is essential for the smallest issues/decisions. We have
Author and User. Let us keep it this way.

What specs tell us about versioning thus far?

     2.1.5 Object Versioning-O

Let's say user X creates object O. The user Y uses O in his course. Now
X changes O. Will the course include edited version of O, or original
one? Ideally it should be up to Y to decide that. This leads us to the
concept of object versioning. i.e. each change to an object creates a
new version, and old one stays. When linking objects to each other (i.e.
adding problem to topic) author decides which version to use.

1. Now, suppose the Author (X - here) creates a new version (say, it
could be marked as draft or such like at the first stage, and in the end
gets marked "Final") then all users (Y - here) of the object, EXCEPT the
Author get notified that a new version of the UMO is created by its author.
2. Also, all users (X and Y - here), INCLUDING the author have to have
option at the moment: to put the new version in or not.
3. If a user (it can be the author) chooses to put the new version in,
he states so and:
a) the new version replaces the old one in all THIS USER's UMOs it used
in. OR, as the matter of our decision:
b) he can do it UMO by UMO. In that (preferable) variant he has to have
an option to "Select All", or "Select Marked", or something like this -
UMOs to use the new version of the upgraded UMO.

The important point here is that EACH user of the UMO decides for
himself to use new version or not.

Hopefully, it is more or less clear now, how it should work for UU
users. If there is any vagueness in this respect, let's clarify it first
and then proceed to the object and db design.


Anatoly Volynets, Co-Founder

Authoright © Total Knowledge: 2001-2008