Changes between Version 1 and Version 2 of PRO_CHANGE_MERGING_R0


Ignore:
Timestamp:
01/26/09 17:36:20 (16 years ago)
Author:
gogov
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PRO_CHANGE_MERGING_R0

    v1 v2  
    44 
    55= Analysis = 
    6 ^(Give as much as possible of the needed information for designing and implementing the task in the following sections.)^ 
    7  
    86== Overview == 
    9 ^(Provide a brief overview of the whole task in its first revision. Stick to the current revision of the task, but keep an eye to the whole task progress, and stay alert for possible smells.)^ 
     7The goal of this task is to create a concept on how to deal with online collaboration when multiple users are working on the same thing and some sort of merging their work needs to be done. [[BR]] 
     8In Sophie 2's context, the problems which occur should be described in terms of Changes and ProLib primitives. 
    109 
    1110== Task requirements == 
    12 ^(List the necessary requirements that the task must fulfill.)^ 
     11 * Describe a simplified version of the general situation with online collaboration: 
     12  * there's a server 
     13  * there are two users of connected to this server who are working on a shared resource 
     14  * the server holds a log of changes up to some point of time (a ''synchropoint'') and the two users are synchronized up to this point 
     15  * each user performs his own set of changes 
     16  * both users upload their set of changes to the server so there's a conflict 
     17 
     18 * Some of the problems that arise are: 
     19  * how to express each user's changeset in terms of Changes and ProLib primitives 
     20  * how to implement merging: 
     21   * in what order to merge the subchanges of the two users' changesets 
     22   * how to handle operations from the different changesets which lead to invalid sequence of changes (for instance, one user inserts something in a frame, and the other user has already deleted the frame) 
     23  * how to implement it efficiently 
     24  * what if each user has a view on a model shared on the server and changes affecting this model are merged 
     25   * in what extent are the two views updated? 
     26   * some text, for instance, could be merged 
     27   * the text cursor position shouldn't be changed though, because if you exploit this approach for everything, at the end you are left with multiple users sharing the same view 
     28   * propose an idea how to solve this problem 
     29 
     30 * Provide ideas for solutions for the above problems 
     31 
     32 * Provide rough implementation of merging 
    1333 
    1434== Task result == 
    15 ^(List the end product of the task (for example "Source code", "Wiki page", etc.))^ 
     35 * New code that meets the above requirements 
     36 * Add appropriate tests for the code 
     37 * Proposals for solutions to the described problems 
     38 * Graphic explanation of the general synchronization problem described above 
    1639 
    1740== Implementation idea == 
    18 ^(Provide some rough implementation idea(s).)^ 
     41 * For the graphics, provide a graphic of both users' changesets and the log of changes on the server, viewed as lists of Changes/primitives 
     42 * Think of different schemes how to solve the merging problem: 
     43  * first the entire changeset of the first user is uploaded and then the changeset of the second user 
     44  * the two changesets are merged by sorting all incoming changes by the time of their actual occurrence 
     45  * propose other if you have any ideas 
    1946 
    2047== Related == 
    21 ^(Add links to related tasks that could be useful or helpful.)^ 
     48[wiki:PRO_CHANGE_PRIMITIVES_R0] [[BR]] 
     49[wiki:PRO_CHANGE_UNDO_MANAGER_R0] [[BR]] 
     50[wiki:PRO_CHANGE_TRANSACTION_SAFETY_R0] [[BR]] 
     51[wiki:PRO_CHANGE_COMPOSING_R0] [[BR]] 
     52[wiki:PRO_CHANGE_MANAGER_R0] [[BR]] 
    2253 
    2354== How to demo == 
    24 ^(Provide instructions for demonstration of the task.)^ 
     55 * Show the new code 
     56 * Run the tests 
     57 * Show the explanation graphics for the general problem 
     58 * Explain shortly the problems and discuss the proposed solutions 
    2559 
    2660= Design =