Wiki vs. deleting/#7547

Jan 18, 2009 / pixtur
Jun 22, 2009 / pixtur
 

Attached files

No files uploaded
 
Since there have been requests and questions about how deleting of team-members and people works in streber, this topic gives some background information.

Wiki vs. deletingπ

Streber is intended to be wiki-driven: Every change should be revertable. This is more complex than you might think, because it means that reverting something, too, should be revertable: To do this streber keeps track of almost every item-attribute and stores every little change in a table called itemchange.
History also includes "deleting" something. You might argue that a Project Manager should know what she is doing. But that argument is weak: The whole idea of wiki is:

  "Don't be affraid. Whatever you do, it can be undone."

This means that items (in the streber almost everything is an item) never get deleted. They have an attribute called state with which they are marked as being deleted. The modification of the state-attribute is logged, and thus can be reverted.

A person is an item. Therefore she can't be deleted from the database. She can only be marked as "no longer active".

A team-member is an item. Removing team-members from a project is essentially the same as marking the item as deleted. Readding a team-member changes the state-attribute and reverts the deletion.

Partially storing history is complexπ

Reverting to any state of the database or an item becomes extremely tricky if there are dependencies. If a team-member modifies an item, we have such a dependency. If you would delete the person completely from the database, how could you revert to this specific version? What would you display in the change log? The partial history would be inconsistent and useless.

Storage is for freeπ

Start of 2009, the size of the complete database of streber-pm.org was about 50mb. This includes a lot of changes. With modern hardware, 50mb is nothing (just imagine the capacity of you mp3-player). With
modern databases the number of rows in a database has virtually no affect to the speed.

Storing history is cheap.


File uploadsπ

A lot of people ask how to delete files. Well: Files are items and thus they can't be removed from the database or from the harddrive. Uploaded files will stay there forever.

There is a feature request (clear removed files from server (as function for admins)) to clear files marked as deleted from the server. If you believe this feature is essential, you can add a comment to this task.

also read: File uploads




5 Comments

ifreeman:Perhaps I'm uninformed

10 months ago

But I do not see how you can restore to a previous version of a wiki document. I can perform a highlighted diff between versions, which is nice, but I still have to copy and paste code if I want to revert to a previous version.

See feature request Revert to previous version of wiki document

kuzmichev:Restored versions sequence.

10 months ago

I think, I understand you. You would like to be able to roll back to one of the previous versions of an item and restore it completely, in other words, make it current or most recent version. In Streber, doing so creates a new (next) version of an item. Why? As it is properly pointed out by Pixtur in the first paragraph of this topic:

Streber is intended to be wiki-driven: Every change should be revertable. This is more complex than you might think, because it means that reverting something, too, should be revertable: To do this streber keeps track of almost every item-attribute and stores every little change in a table called itemchange.

What Pixtur doesn't tell there is that Streber records every change in the linear sequence, so reverting becomes revertable too. Do you understand? I ask because it took me a few endeavors of my own and my teammates to comprehend.
As for your feature request, it'd be nice to have a link or a button "Make this version current" in the version comparison viewer.

ifreeman:I understand...

10 months ago (3. update 10 months ago)

...what the intent is, I just do not see a way of actually performing the action of reverting wiki entries.

kuzmichev:Reverting should create a new version of an item.

10 months ago

What I meant by "Make this version current" link or button was the action of selecting one of the previous versions and automatically making it the most recent version. This way the wiki-driven architecture of Streber would not be affected. Thanks.

pixtur:you are right...

9 months ago

This is a missing feature. Actually it has already been implemented but the link is missing in the diff-view.

Follow-off task: add link to revert to item to wiki-version