lhermann / langify-docs

Documentation for the open translation system langify
4 stars 1 forks source link

Time to undo and to track edits #9

Open dgilge opened 6 years ago

dgilge commented 6 years ago

I thought about the time a user has to undo (i.e. remove) their changes and when a new historical record is created after several edits because I wasn't satisfied with the ideas so far. Finally I came up with this:

# Time period in which you can
# - edit a segment without creating a new historical record
#   (except you're another user)
# - undo your changes of this historical record
#
# Considerations:
# 1. You should be able to continue the work if you had a short break (15 min)
# 2. continue the work after a meal (2 h)
# 3. continue the work on the next working day (70 h)
# On the other hand
# 4. Others should be able to track changes. Changes should be reconstructable
#    when somebody reads it and comes back later. (30 min)
# Solution: We want to detect incomplete translations anyway. If we detect
# it we give a user 72 h time to complete it. If it is complete we give the
# user 30 min. You can undo your changes in a period of 30 min in any case.

As a result we have two periods. What do you think? (@lhermann I'd insert both expiry dates in the history API and according to the user who requested it if you like.)

lhermann commented 6 years ago

Ahm ... I think I didn't get it. Can you play through an example?

dgilge commented 6 years ago

Sure…

  1. It's Friday afternoon. User begins translating a paragraph. At finishing time he translated 60%. He closes the browser.
  2. After timeout (3 min) the backend unlocks the paragraph, creates a new historical record and marks it as translated incompletely.
  3. The user comes back on Monday morning and finishes the paragraph. The backend updates the historical record of Friday because it's the same user and the paragraph wasn't complete (edit within 72 h).
  4. During lunch the user and a co-worker discuss a difficult phrase in this paragraph.
  5. The user edits the paragraph and continues the work further down.
  6. Another historical record is created because the translation was complete (edit after more than 30 min).
  7. But after all he doesn't like the edit and restores his initial version. The last historical record gets deleted because he restored it within 30 min.

Does that help?

lhermann commented 6 years ago

Okay.

A) When is a translation complete? How can we tell? Do we use an algorithm (probably very hard) oder do we let the user tell us (probably chaos)? My answer: we don't ... we don't want to know if a paragraph is completely translated. The users will vote it, and they only vote for completed translations.

B) Do we really want to make it thus complex? What have we to loose if we set one expiration time (30 min). Once the user is familiar with the concept of our history he will expect that such long periods of inactivity will generate a new record and that's it. In fact, I assume the user would be surprised that the next day his edits will still go to his history record the day before (howbeit, this can be communicated through ui)

C) What I want to say is: If we set only one 30 min time we only loose disc space (and probably not a lot), but we gain a less complex system. I don't see this complexity necessary here.

dgilge commented 6 years ago

A) Actually this is another topic, but here are my thoughts. We plan a status bar and I think it's better to show the completion more accurately than just by "has the translated segment any content". And I think we should ease contributors as much as possible. My plan is to count the words or characters, multiply it with a language specific factor, compare it with the original, admit some tolerance and determine completion.

B) You're probably right. It might not be intuitive.

C) I was thinking about this feature because I don't know any platform where your contributions are "auto commited" and you don't have a chance to change that. I.e. you always decide when to publish something. I don't know how users like our concept. (I personally don't like a half completed contribution to be published.) Therefore I wanted to compensate that somehow. But I think we just use the 30 min for now and we will see how users feel about it. (Maybe we could also implement a feature that you can delete historical records with incomplete translations for contributors how care in the future, we will see.)

lhermann commented 6 years ago

A) That is quite smart actually. B) Yes C) I see your point. That is a user testing issue then. Let's use 30 min and see how people respond.