weScribble - a Collaborative Drawing EditorBack in the spring of 2011, being in my first year of Master's, I enrolled in a seminar called Software Distribution and Mobility Seminar. During this seminar, we got hands-on experience with guards, asynchronous message passing, distributed programming with tuple spaces, and peer-to-peer networks. The final project of this seminar comprised of implementing a collaborative drawing editor called weScribble. weScribble allows multiple users to collaborate with each other for sharing and editing shapes on a common canvas. Users can also select one or more shapes and group them together. Shapes are shared among all users within the same communication range in a peer-to-peer manner.
The requirements regarding the distribution design of weScribble are the following: weScribble should operate in a peer-to-peer manner, imposing that there is no central server to coordinate the drawing sessions and to discover new participants. This means that it should be taken into account that every computational unit in the network can fail at any point in time. Users may enter and leave the network at any point in time and disconnections should not hamper the drawing session.
As we were given the choice between either an academic approach or a more applied solution in Android, I opted for the academic approach and decided to implement a desktop application -called weScribble Pro- that enables to emulate several weScribble instances through a graphical user interface. When starting the application, a map appears on which markers can be added and dragged around. Each marker represents a user and a circle around the marker image indicates its connection range. Two users are connected to each other if their ranges overlap. When double clicking on a marker image, a popup window opens which shows the canvas from the perspective of the selected user.
From a technical side, my weScribble Pro application is developed using the AmbientTalk programming language. As for the distribution design, I chose to rely on a TOTAM tuple space because tuples intrinsically impose one-to-many communication. Another advantage is that tuples are propagated across all users in the tuple space, i.e. when user A is connected to user B, and B is connected to a user C which is not connected to A, then A and C can still receive each other's tuples via B.
The Software Distribution and Mobility Seminar was taught by Prof. Dr. Wolfgang De Meuter and teaching assistant was Dr. Elisa Gonzalez Boix. Below you can find a demo video of my final version of weScribble Pro.