I need the help of any kind volunteers who are willing to test drive Gobble, an API generation and translation tool that I'm developing as part of the work on my Master's thesis in Software Development at the University of Glasgow.
To help out, all you need to do is complete a simple programming challenge that involves using an experimental Go API and then fill in a short questionnaire letting me know what you think of it.
The subject of the evaluation, Gobble, is a productivity tool designed to help Go programmers write safe, deadlock-free communication code quickly and easily.
Gobble works by using session types, that is by representing each step in a communication protocol as a unique "object" composed of a struct and its associated methods. E.g. the first step in communication protocol between a Server and a Client could be represented as a "Client1" struct with an associated ".Send_string()" method that takes a string parameter representing the data to be communicated. The return values for "Client1.Send_string(myString)" will then be a new struct representing the following step in the communication protocol, any returned values and an error message. E.g. "Client2, err := Client1.Send_string(myString)". Similarly, the return values for "Client2"'s method could be "Client3, receivedString, err := Client2.Receive_string()", etc.
There are three main advantages that accrue from using session types in this way:
Go's static type checks will check protocol validity for you: if you try sending the wrong data types or sending messages in the wrong order your code won't compile and you'll get an error message explaining why.
Further dynamic checks are included in the API which mean that a runtime error will occur if you try repeatedly sending the same message or selecting multiple choices when the protocol allows only one.
Your IDE or text editor auto-complete will do the work of remembering the protocol structure for you: all you need to do is generate the first protocol struct and auto-complete will do the tough work of telling you how to continue implementing the protocol from there.
Thanks in advance for your time and wisdom.
