Also, there is the possibility of having to go though the conflict resolution screen multiple times if, whenever trying to finish it and press save, a new change was done in the background user, generating a conflict with the version you have just resolved. If it's a very popular page that users are constantly editing generally on the same places of the document, this could get a bit annoying the more time you spend in edit mode :)
On Mon, May 27, 2019 at 5:25 PM Eduard Moraru <enygma2...@gmail.com> wrote: > Hi, > > I feel we're over-engineering things a bit, at least for a fist version. > My feeling is that the approach is to go with an UI-first version (the > whole talk about being able to choose "mine" vs "their" versions) and only > then, at a later point, coming back to a text-based version that allows you > to fix the details. Why not go the other way around, in a simpler and > already familiar (to some at least) yet flexible solution of starting with > the text-based version, since we are editing wiki syntax after all? > > IMO, the easiest thing we could do is that, when a save is attempted, a > merge should be attempted first. If no conflict occurs and the merge can be > done automatically, the save should be done on the DB as well and the user > should not perceive anything, thus not affecting his flow. > > Note: I hope we are all on the same page when I say that the merge > conflict resolution should target/work on wiki syntax in the UI as well. > > If, however, conflicts do occur, the save does not go to the DB. Instead: > * If it was a save&continue, the UI should inform the user (popup/bottom > screen notification) that the save failed because of a conflict and offer > the possibility to keep editing or resolve the conflict > * If it was a save&view (or if the user clicked "resolve conflict" after a > failed save&continue), the UI should reload the (wiki) editor with the > entire merged content that will include the conflicts in a way that is (at > least in the first implementation) similar to how git conflicts are > displayed in a file, i.e. clearly marked in the content (where the conflict > starts and ends), showing your version vs the version that is currently on > the server (in the DB). Example (with html, but imagine wiki syntax here > and we could use something better than "HEAD", etc.): > https://d33v4339jhl8k0.cloudfront.net/docs/assets/55c3b5cae4b01fdb81eb1259/images/569e7be1c697914361560809/file-AzxXs4HkkG.png > > An improved version (iteration) of this could then be to use something > like CodeMirror's "merge" addon (since we already use CodeMirror in the > syntax highlighting application). It supports 2-way or 3-way display and > live diff computation between the versions, synchronized scrollbars, and > other neat stuff: https://codemirror.net/demo/merge.html We could decide > if in "our" version we include the user's original version OR if we put > directly the merged version (where the auto-merges are already applied) OR > if we have a button under the user's original version to perform auto-merge > on request, leaving just the remaining conflicts to be handled by the user. > Finally, when save&view is pressed in this mode (note: probably we need to > disable save&continue so that the "conflict resolution" action is "atomic", > i.e. without leaving the content in an unfinished merge state), whatever > the edited version is will overwrite the DB version of the document (i.e. > force with whatever it contains). > > WDYT? > > Thanks, > Eduard > > On Fri, May 24, 2019 at 2:53 PM Ecaterina Moraru (Valica) < > vali...@gmail.com> wrote: > >> On Thu, May 23, 2019 at 6:33 PM Simon Urli <simon.u...@xwiki.com> wrote: >> >> > >> > >> > On 23/05/2019 16:00, Ecaterina Moraru (Valica) wrote: >> > > On Thu, May 23, 2019 at 12:10 PM Simon Urli <simon.u...@xwiki.com> >> > wrote: >> > > >> > >> So trying to sum up the discussion to see if we all agree. >> > >> >> > >> All the above is in the case of a save conflict: >> > >> >> > >> 1. Default behaviour for all users is to try an automatic merge, and >> to >> > >> display a window conflict resolution in case of merge conflict. The >> > >> conflict resolution is an all-or-nothing based, allowing to choose a >> > >> version over another. >> > >> >> > > >> > > I don't agree about the all-or-nothing, since I would prefer to accept >> > what >> > > we can, warn on conflicts. >> > > We should show a resolution conflict when the conflict is on the same >> > line. >> > > Auto-merge the rest. >> > >> > Apparently I wasn't clear about my "all or nothing" feature. For me it >> > only concern the resolution of the merge conflicts, but the choice made >> > apply to ALL conflict of the document. That's what I meant. >> > >> >> Here it was the confusion, since in my mind, I though we were going line >> by >> line. You said that in the first version we won't have this, but ideal >> implementation it should go like that (and even at the word / character >> level for realtime-editing). >> >> >> > > >> > > >> > >> >> > >> 2. There is an option in the user profile to be able to always see >> the >> > >> diff in case of save conflict, to accept or not the merge, even when >> > >> there's no conflict. >> > >> >> > > >> > > I don't like the option in the profile. IMO we should decide on the >> > > behavior and apply it for all users. Edit is a core feature, conflicts >> > > again are part of this kind of interaction. >> > > >> > >> > So you'd go with a -1 for this option? >> > >> >> We should add a new configuration only if it's needed. Again, I think we >> are introducing a lot of things (parent/child relation, accessibility >> options, etc.) that we never test. We don't reach a conclusion by >> ourselves, so trying to make everyone happy, we are just increasing the >> complexity of selection for the user and for the testers. >> >> >> > > >> > >> >> > >> 3. When a user save with a merge, the notification message displays >> that >> > >> it's a merge save. It means that user clicking on "save&view" might >> miss >> > >> it. >> > >> >> > > >> > > On "Save&View" we can increase the timeout for the notification. >> > > The notification could mention also the magnitude: "Saved. >> Auto-merged 10 >> > > conflicts." >> > > If cannot save, show the conflict modal. >> > > >> > >> > How would you quantify this magnitude? The number of versions between >> > the two saves? What about minor/major versions? It looks a bit fuzzy to >> me. >> > >> >> The magnitude I had in mind applied for the line by line case. If you look >> at the image >> >> https://design.xwiki.org/xwiki/bin/download/Proposal/EditConflict/linescolor.png >> , 3 lines were successfully merged, while having conflict on 1 line. So we >> were tacking about different things. >> >> >> > >> > About increasing the notif timeout in case of Save&View I'm not >> > convinced: you're suppose to be immediately redirected to the view page >> > in case of Save&View, so making the user wait on a notif doesn't look >> > very nice. >> > >> >> The idea was to redirect the user as soon as possible in the View mode, >> just display the bottom page notification a bit longer (or add a >> notification display for the View step). >> >> Thanks, >> Caty >> >> >> > >> > Simon >> > > >> > >> >> > >> Those are the first three priority points. The following points are >> > >> important too, but might not be finished in 11.5. >> > >> >> > >> 4. If another user saved a document that I'm editing, I have a >> > >> notification in the editor and I can click on it to see the >> > diff/conflicts >> > >> >> > > >> > > This mockup might not help, but is something I had in mind that I >> want to >> > > share: >> > > >> > >> https://design.xwiki.org/xwiki/bin/download/Proposal/EditConflict/linescolor.png >> > > >> > > Ideally I would like to see real time, if not the exact changes, but >> at >> > > least the lines affected by the current editor. >> > > >> > > Thanks, >> > > Caty >> > > >> > > >> > >> >> > >> 5. The conflict resolution is line-by-line based. >> > >> >> > >> WDYT? >> > >> Simon >> > >> >> > >> On 23/05/2019 10:00, Vincent Massol wrote: >> > >>> >> > >>> >> > >>>> On 23 May 2019, at 09:43, Simon Urli <simon.u...@xwiki.com> wrote: >> > >>>> >> > >>>> >> > >>>> >> > >>>> On 23/05/2019 09:31, Vincent Massol wrote: >> > >>>>>> On 23 May 2019, at 09:25, Simon Urli <simon.u...@xwiki.com> >> wrote: >> > >>>>>> >> > >>>>>> Hi Caty, >> > >>>>>> >> > >>>>>> On 22/05/2019 14:51, Ecaterina Moraru (Valica) wrote: >> > >>>>>>> I'm not sure I agree about this profile option. >> > >>>>>>> Indeed we want to make things as simple as possible and having >> > >> conflict >> > >>>>>>> resolutions can be scary, still, there is no way an user could >> take >> > >> this >> > >>>>>>> decision in advance. >> > >>>>>>> Users will want to have control over what they do and at least >> know >> > >>>>>>> something went wrong. We cannot automatically merge, without any >> > >> warning, >> > >>>>>>> since users will immediately see that their work was changed. It >> > >> will be >> > >>>>>>> reported as a bug (in case they notice it) and they will expect >> to >> > >> be able >> > >>>>>>> to recover the work. >> > >>>>>>> I can't think of a case when an user would not care about the >> > >> changes and >> > >>>>>>> the result. >> > >>>>>> >> > >>>>>> Let say that a document has 2 sections, and a user is editing >> > section >> > >> 1, while the other is editing section 2. The merge should work >> properly >> > >> without any conflict. >> > >>>>>> I don't really see the point of asking by default the second >> user if >> > >> he's ok to merge his work on section 1 with what has been saved on >> > section >> > >> 2. >> > >>>>>> On the contrary I feel it could be scary for the basic users to >> see >> > >> this kind of message and it decreases the easiness of using XWiki >> IMO. >> > >>>>>> >> > >>>>>>> Also the options are not clear to me: like 2: automatically >> merge, >> > >> but ask. >> > >>>>>>> Well is automatically or not? >> > >>>>>> >> > >>>>>> It's automatic but as you mentioned just after, in case of >> changes >> > >> are made on the same line there is a conflict that needs to be >> solved. >> > >> That's what I meant by "ask in case of merge conflict". >> > >>>>>> >> > >>>>>> On the contrary option 1 was a fully automatic merge, with a >> > >> predefined strategy to choose one version over another in case of >> > conflict. >> > >>>>>> >> > >>>>>>> We need to ask for resolution only if the changes are on the >> same >> > >> line, >> > >>>>>>> besides this, we should try to automatically merge, but provide >> the >> > >> info to >> > >>>>>>> the user that we did that. Instead of the normal Save message, >> we >> > >> could say >> > >>>>>>> that we performed a Merged Save. And in the history I would >> expect >> > >> to be >> > >>>>>>> able to see what lines were added by what users, just in case >> > >> something >> > >>>>>>> went wrong. We are lucky that we have the Blame view :) >> > >>>>>>> So not sure we need a configurable option in profile. We just >> need >> > to >> > >>>>>>> decide on the 'default' and implement that. We keep adding >> options >> > >> that >> > >>>>>>> only increase the complexity of the product and we never get to >> > test >> > >> all >> > >>>>>>> the possible mixes and configurations. >> > >>>>>>> So what are the use cases when we would need this option in the >> > >> profile? >> > >>>>>> >> > >>>>>> As I said above I personally don't see the point of always >> > displaying >> > >> the merge diff especially for basic users when there's no conflict. >> > Now I >> > >> really think that some users would want that, that's why I proposed >> the >> > >> profile option. >> > >>>>> I agree that option 3 is not great as it gets in the way. Now it >> > could >> > >> be interesting for the user to know it happened. Maybe some fleeting >> > >> notifications at the bottom of the screen or some info added to the >> > commit >> > >> message or some visual info when you’re in edit mode and before you >> > press >> > >> save. >> > >>>> >> > >>>> So in case of "Save&Continue" it's quite easy to change the "Saved" >> > >> notification message by another one. I'm not quite sure how to inform >> > the >> > >> user about the merge if he cliks on "Save&View”. >> > >>> >> > >>> By implementing the part below :) ie by providing this info >> > continuously >> > >> before he clicks any save button. >> > >>> >> > >>>> >> > >>>>> Ideally I’d like that we poll regularly to see if there have been >> > >> changes and display some icon if there are with the ability for the >> > current >> > >> user to click and see the diffs with his version, and if there’s a >> > >> conflict, that a visible message is displayed on the screen (but >> without >> > >> interrupting of his typing). >> > >>> >> > >>> More details: when there’s a conflict, clicking the message/button >> > would >> > >> show the diff and the conflict. >> > >>> >> > >>>>> And when he saves, the merge is done then. >> > >>>> >> > >>>> I like the idea, now would that be enough to inform about the >> > performed >> > >> merge? If we go in that direction I'd need some design proposal for >> the >> > UI >> > >> @Caty :) >> > >>> >> > >>> Yes we need to find where to put that information. >> > >>> >> > >>> BTW, even better, we should ideally also display the icons of the >> users >> > >> who are editing the same doc and/or who have saved content after the >> > >> current user started editing. >> > >>> >> > >>> And we already have a design page for this ;) We called it >> > >> “collaborative editing”: >> > >>> >> > >> >> > >> https://design.xwiki.org/xwiki/bin/view/Improvements/CollaborativeEditing >> > >>> >> > >>> Thanks >> > >>> -Vincent >> > >>> >> > >>>> >> > >>>> Simon >> > >>>> >> > >>>>> WDYT? >> > >>>>> Thanks >> > >>>>> -Vincent >> > >>>>>> >> > >>>>>> Simon >> > >>>>>>> Thanks, >> > >>>>>>> Caty >> > >>>>>>> On Wed, May 22, 2019 at 12:04 PM Vincent Massol < >> > vinc...@massol.net> >> > >> wrote: >> > >>>>>>>> Hi Simon, >> > >>>>>>>> >> > >>>>>>>>> On 22 May 2019, at 10:45, Simon Urli <simon.u...@xwiki.com> >> > wrote: >> > >>>>>>>>> >> > >>>>>>>>> Hi everyone, >> > >>>>>>>>> >> > >>>>>>>>> I'm working on the merge on save for the roadmap of 11.5 and I >> > >> need some >> > >>>>>>>> decision to be taken. >> > >>>>>>>>> >> > >>>>>>>>> The main idea of the merge on save, is to try to merge users >> work >> > >> in >> > >>>>>>>> case of save conflict. Knowing that the merge might led to >> merge >> > >> conflict >> > >>>>>>>> in case of edits on the same places. Those merge conflict can >> be >> > >> tackled >> > >>>>>>>> automatically, but a priority will be then given to one version >> > over >> > >>>>>>>> another. >> > >>>>>>>>> >> > >>>>>>>>> I first propose to add an option in user profile, so users >> would >> > >> have >> > >>>>>>>> the possibility to choose between: >> > >>>>>>>>> 1. Always merge automatically the work, even in case of >> merge >> > >> conflict >> > >>>>>>>> >> > >>>>>>>> I don’t understand this part. If there’s a conflict it means it >> > >> cannot be >> > >>>>>>>> merged… So would it do? Take latest version and overwrite >> previous >> > >> version? >> > >>>>>>>> >> > >>>>>>>>> 2. Always merge automatically, but ask what to do in case >> of >> > >> merge >> > >>>>>>>> conflict >> > >>>>>>>>> 3. Always ask what to do in case of save conflict >> > >>>>>>>>> >> > >>>>>>>>> Now the question is: what should be the default option? >> > >>>>>>>> >> > >>>>>>>> Certainly not 1! 2 is really the best to me. >> > >>>>>>>> >> > >>>>>>>> Thanks >> > >>>>>>>> -Vincent >> > >>>>>>>> >> > >>>>>>>>> Option 1 looks like a good fit for decreasing the number of >> > clicks >> > >> to >> > >>>>>>>> do, but I'm a bit afraid that in case of conflict they would >> have >> > >> the same >> > >>>>>>>> feeling as before the warning conflict window: i.e. to loose >> some >> > >> part of >> > >>>>>>>> their work. >> > >>>>>>>>> >> > >>>>>>>>> WDYT? >> > >>>>>>>>> >> > >>>>>>>>> Simon >> > >>>>>>>>> >> > >>>>>>>>> -- >> > >>>>>>>>> Simon Urli >> > >>>>>>>>> Software Engineer at XWiki SAS >> > >>>>>>>>> simon.u...@xwiki.com >> > >>>>>>>>> More about us at http://www.xwiki.com >> > >>>>>>>> >> > >>>>>>>> >> > >>>>>> >> > >>>>>> -- >> > >>>>>> Simon Urli >> > >>>>>> Software Engineer at XWiki SAS >> > >>>>>> simon.u...@xwiki.com >> > >>>>>> More about us at http://www.xwiki.com >> > >>>> >> > >>>> -- >> > >>>> Simon Urli >> > >>>> Software Engineer at XWiki SAS >> > >>>> simon.u...@xwiki.com >> > >>>> More about us at http://www.xwiki.com >> > >>> >> > >> >> > >> -- >> > >> Simon Urli >> > >> Software Engineer at XWiki SAS >> > >> simon.u...@xwiki.com >> > >> More about us at http://www.xwiki.com >> > >> >> > >> > -- >> > Simon Urli >> > Software Engineer at XWiki SAS >> > simon.u...@xwiki.com >> > More about us at http://www.xwiki.com >> > >> >