Changes between Version 1 and Version 2 of PRO_CHANGE_MERGING_R0
- Timestamp:
- 01/26/09 17:36:20 (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
PRO_CHANGE_MERGING_R0
v1 v2 4 4 5 5 = Analysis = 6 ^(Give as much as possible of the needed information for designing and implementing the task in the following sections.)^7 8 6 == 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.)^ 7 The 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]] 8 In Sophie 2's context, the problems which occur should be described in terms of Changes and ProLib primitives. 10 9 11 10 == 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 13 33 14 34 == 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 16 39 17 40 == 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 19 46 20 47 == 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]] 22 53 23 54 == 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 25 59 26 60 = Design =