Hey,
Cool project.
Yes... write unit tests with pytest. Sounds good but I would suggest writing tests earlier in the development process next time.
Does your project have a specification for this software? Otherwise I have to read the code to learn how it works.
Using automat for the fsm sounds like a great idea. You probably will end up making several finite state machines and connecting them together in a graph. If you end up doing that you should probably first draw a picture... it helps to clarify.
I've recently started to experiment with automat myself and I've heard good things about it from my associates.
also you could add :
- hypothesis tests (fuzzing/property based tests) https://hypothesis.readthedocs.io/ - changes to setup.py and add a requirements.txt - use python attrs to eliminate boiler plate code in your classes https://attrs.readthedocs.io/
as an example here's my fork of sphinx, a mixnet crypto library with 100% unit test coverage, hypothesis fuzzing, usage of attrs and a proper setup.py and requirements.txt file:
https://github.com/applied-mixnetworks/sphinxmixcrypto
I'd be interested in collaborating with you and mentoring this project. I'm not sure how much time I'll have in the coming months... we'll see.
Cheers,
David
On Tue, Mar 28, 2017 at 07:23:16PM +0000, Felipe Dau wrote:
Hello,
I am a Computer Engineering student at the Federal Technological University of Parana in Brazil and I would like to present you a peer-to-peer privacy enhanced instant messenger called unMessage [0]. I have been working on it for a while with David Andersen [1] (my advisor) and we have recently released an alpha version which should be easy for developers to install and test.
It uses the Double Ratchet Algorithm [2] for encryption, Onion Services for transport metadata minimization, its own protocol for application metadata minimization, and as a result, provides private and anonymous conversations. It currently has basic features such as message exchange, user authentication and we very recently enabled voice chat using the Opus codec [3] for constant bitrate encoding. unMessage is a Python application that mainly uses pyaxo's [4] implementation of Double Ratchet Algorithm and txtorcon's [5] implementation of the Tor Control Protocol.
Since its current (alpha) release, we have been discussing it with Patrick Schleizer [6] and HulaHoop [7] from Whonix [8], who are making great contributions to help us test it, as well as suggesting new features and improvements. We are also working to run it on Whonix (which will also allow it to be run on Tails) with help from meejah [9] by adding a new feature to txtorcon to make unMessage (and all the apps that use txtorcon) "Control Port Filter friendly".
As we believe unMessage has potential to become a great privacy enhancing app with a code that is simple, readable and therefore easy to maintain, Patrick suggested that I submitted a proposal to have unMessage as one of the GSoC projects. We expect to implement fixes, improvements and features from our discussions in order to turn it into a maintainable, feature-rich and useful app which the community can benefit from.
There are currently some "developer centered" tasks I can work on such as:
- Create a test suite (with pytest)
- Make unMessage's own functions/methods behave like a Twisted API should
- Use automat for its finite-state machines
- Make use of a logging tool
- Improve comments/document the code
As well as some "user centered" tasks:
- Whonix/Tails support
- Improve the GUI and CLI
- File transfer
- Use a friendlier approach for users to handle keys instead of the current base32/64 encodings
- Connect/launch Tor automatically depending on what is available
- Offline messages
(All the other ones can be found in the issue tracker [10])
My intention with this post is not only to present unMessage to tor-dev but also see if someone is interested in mentoring me as it is not one of the official ideas but hopefully sounds like a good project. If someone gets interested, please let me know so that we can discuss which tasks would be interesting for this project and I am able to write a proposal.
Thanks! -Felipe
tor-dev mailing list tor-dev@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev