Beste oplossing
4.2 Welke features zijn gewenst voor de comments?
4.3.1 Wat moet er gebeuren als een comment de server niet bereikt?
Als een comment de server niet bereikt is het belangrijk om een duidelijk bericht naar de user te sturen dat er iets fout is gegaan. Ook moet er hierbij een verontschuldiging komen naar de gebruiker (Rowe, 2012). Verder moet er worden uitgevoerd wat staat beschreven in 4.3 van dit rapport.
Zodra een server niet beschikbaar is terwijl een gebruiker een comment probeert te versturen, moet er een time-out komen om de client te stoppen met het versturen van de opmerking. Deze time-out mag niet te lang zijn, maar ook zeker niet te kort. Volgens Martin moet het plaatsen van een opmerking bijna direct gebeuren. (M. Middel, interview, Februari 21, 2017)
4.4 Wat moet er gebeuren als er meerdere comments op dezelfde plaats
en tijd worden geplaatst?
In de meest ideale situatie zou het niet uit mogen maken dat een comment op dezelfde plaats en tijd wordt geplaatst. Dit zou geen effect mogen hebben op het systeem. Helaas is dit niet mogelijk voor alle mogelijkheden die worden beschreven in hoofdstuk 4.1 van dit rapport.
De algoritmes Operational Transformation, Differential Synchronization en Conflict-free Replicated Data Types hebben moeite met de oplossing in een situatie als er een comment op dezelfde tijd en plaats wordt geplaatst. Dit heeft te maken met het feit dat deze algoritmes wijzigingen aanbrengen in een document, waarna deze nieuwe documenten naar de
gebruikers moeten worden gestuurd.
Een externe service met een database zou beter bestand zijn tegen het plaatsen van comments op dezelfde plaats en tijd. Als voorbeeld is er binnen SQL Server een maximum van 32.767 connecties mogelijk (MSDN, 2016), dit houdt in dat er veel users op hetzelfde moment actief kunnen zijn. Het aantal actieve gebruikers kan nog hoger liggen dan het getal wat hier wordt genoemd, doordat niet alle users op hetzelfde moment de comment zullen versturen.
5. Conclusie
Om antwoord te kunnen geven op de hoofdvraag die gesteld is aan het begin van dit onderzoek, moet gekeken worden naar de verschillende methodes die staan beschreven in hoofdstuk 4.1 van dit rapport.
De hoofdvraag van dit onderzoek luidt: “Wat is de beste manier voor FontoXML om comments real-time te plaatsen?” Om dit vast te kunnen stellen zijn er vooraf een aantal criteria opgesteld. Deze criteria worden nu behandeld, om zo de hoofdvraag te kunnen beantwoorden.
Binnen het laatste deel van hoofdstuk 4.1 worden de verschillende methoden uit dit hoofdstuk vergeleken met elkaar door middel van de criteria die in hoofdstuk 3.2 zijn opgesteld. Bij de vergelijking met de criteria is uiteindelijk een oplossing met een database het beste uit de bus gekomen. De implementatie is het minst complex en het voldoet een de gewenste features, maar er zit wel een grote complexiteit in het bepalen van de juiste positie van een opmerking als het document wijzigt.
6. Discussie
Er is altijd ruimte voor verbetering, ook binnen dit onderzoek. De hoofdvraag wordt voornamelijk behandeld in hoofdstuk 4.1 van het rapport. Dit had meer verspreid moeten worden over verschillende deelvragen.
De overige deelvragen hebben alleen bepaalde wensen en vragen voor het systeem behandeld. Deze vragen zijn gebruikt als onderbouwing, maar komen meer tot hun recht in de requirements. De requirements zijn dan ook tijdens dit onderzoek opgesteld door de overlap tussen dit onderzoek en de requirements.
Referentielijst
Day-Richter, J. (2010, November 23). What’s different about the new Google Docs: Making collaboration fast [Blog post]. Verkregen van
https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs.html Fraser, N. (2009, Januari 10). Differential Synchronization [Video file]. Verkregen van
https://www.youtube.com/watch?v=S2Hp_1jqpY8 Fraser, N. (2009). Differential Synchronization. Verkregen van
https://neil.fraser.name/writing/sync/
Martin, S. Urso, P. Weiss, S. (2010). Scalable XML Collaborative Editing with Undo. Verkregen van
https://arxiv.org/pdf/1010.3615.pdf
Kleppmann, M. Beresford, A.R. (2016). A Conflict-Free Replicated JSON Datatype. Verkregen van
https://arxiv.org/pdf/1608.03960.pdf
Shapiro, M. Preguica, N. Baquero, C. Zawirski, M. (2011). A comprehensive study of Convergent and Commutative Replicated Data Types. Verkregen van
http://hal.upmc.fr/inria-00555588/document
Shapiro, M. (2011, Augustus 29). Strong Eventual Consistency and Conflict-free Replicated Data Types [Video file]. Verkregen van
https://www.youtube.com/watch?v=oyUHd894w18
Gentle, J. (2011, November 6). ShareJS – Live concurrent editing in your app. Verkregen van
https://web.archive.org/web/20151003142255/http://sharejs.org/ Nusnus. (2009). Basic idea behind OT. Verkregen op 15 februari 2017 van
https://en.wikipedia.org/wiki/Operational_transformation#/media/File:Basicot.png Operational transformation. (2017, Januari 31). Verkregen op 15 februari 2017 van
https://en.wikipedia.org/wiki/Operational_transformation
Spiewak, D. (2010, Mei 17). Understanding and Applying Operational Transformation [Blog post]. Verkregen van
http://www.codecommit.com/blog/java/understanding-and-applying-operational- transformation
Kumawat, S. Khunteta, A. (2010, Juli). A Survey on Operational Transformation Algorithms: Challenges, Issues and Achievements.
doi:10.1.1.206.5543
Google Wave. (2017). Frequently Asked Questions. Verkregen van http://www.waveprotocol.org/faq
Yigitbasi, N. (2015, Augustus 19). A Look at Conflict-Free Replicated Data Types (CRDT) [Blog post]. Verkregen van
https://medium.com/@istanbul_techie/a-look-at-conflict-free-replicated-data-types- crdt-221a5f629e7e#.d8htpuco8
Davis, A.H. Sun, C. Lu, J. (2002). Generalizing Operational Transformation to the Standard General Markup Language. Proceedings of CSCW 2002.
doi:10.1.1.100.74
xkcd. (2007, Oktober 10). Exploits of a Mom. xkcd. Verkregen van https://xkcd.com/327/
Rowe, B. (2012, December 09). The 4 H’s of Writing Error Messages [Blog post]. Verkregen van
http://uxmas.com/2012/the-4-hs-of-writing-error-messages
MSDN. (2016, Juli 6). Maximum Capacity Specifications for SQL Server. Verkregen van https://msdn.microsoft.com/en-us/library/ms143432.aspx