oneiric: June-August part-time Kovri junior developer
Hello Monero community, I'm oneiric, and I've been working on Kovri since December 2017.
This is my first FFS proposal to the community, and I intend to make many more (if the community will have me). I'm in it for the long haul. Privacy is incredibly important to me, and I want to do everything I can to help Kovri and Monero. These projects are some of the strongest tools the common person will have in achieving freedom and financial privacy.
I am submitting this proposal to continue work with anonimal on bringing Kovri to release and integration, and to be funded as a part-time junior developer.
Over the past few months, I have collaborated with anonimal, rehrar, and others to make contributions to Kovri.
- Identity: use Boost DateTime when creating router keys: replace sprintf and C date functions with Boost DateTime when creating router keys
- Build: fix mingw warnings: resolve Windows compiler warnings
- Configuration::ListParameter unit-tests: unit-tests for class used to parse Kovri configuration
- SSU: support IP address size for peer test packets: get and set IP address size for SSU peertest packets
- Build: fix Doxygen build: small CMake fix for building Doxygen documentation
- AddressBook: Container for host-address entry: first attempt at a container class for an AddressBook hostname-address pair
- AddressBook + HTTP Proxy: store only unique subscription addresses
- AddressBook: add address to file I/O refactor + add exception handling: change how addresses are added to storage, and throw on filesystem errors
- HTTPMessage: refactor jump service parser + add test-cases: change how the HTTP proxy handle jump service requests, and add unit-tests. One of my first contributions, and required a large amount of collaboration with anonimal (many thanks).
- IdentityEx: lowerbounds check on buffer creation: bounds check on the supplied buffer, ensure it is large enough to hold a serialized IdentityEx class
Standing on the shoulders of giants:
- Assistant for Kovri Project Management
- Create End-User Kovri documentation
- rehrar's 2018 Q1 Kovri proposal
- anonimal's Kovri Full Time Development funding thread
- Proposal for Kovri Dev
Milestones & Proposal
In collaboration with anonimal:
- Create an enhanced form of the Kovri testnet
- Integrate Kovri testnet with live tests
- Write tests for 100% coverage on new and existing stable code
- Remaining 0.1.0-alpha release milestones
- Other tasks anonimal assigns
Compensation & Time Estimates
Amount: 27 XMR (0.225 XMR/hour * 40 hours + 0.45 XMR/hour * 40 hours)
The amount I am requesting is based on similar FFS proposals, and average base-pay for a junior developer.
In order for the community to get to know my work, I am willing to give a discounted (50%) rate for the first 40 hours (1 month @ 10 hours/week) of paid work.
The goal is to complete the milestones by DefCon 26, whatever it takes.
Any time more than 10 hours/week, I will volunteer to achieve the stated goals.
To get an idea of my dedication to accomplishing these goals, average time spent on Kovri in April-May was ~50-60 hours/week.
I am new to the project and community, and welcome feedback on this proposal.
Your friendly neighborhood oneiric here,
Since the last update to my FFS, I have replaced cpp-netlib with Boost.Beast, implemented converting fuzz tests to use clang's builtin fuzzer (based on work by MoroccanMalinois, many thanks), implemented integration tests (based on Boost.Python work by anonimal, many thanks), and removed unnecessary signature types.
After discussion in IRC, and a number of my PRs closed by anonimal, unit-tests/test coverage are no longer a milestone of this FFS. Test coverage percentages are a bad metric for test usefulness/effectiveness, and should have never been part of this FFS. The only remaining milestone is replacing cpp-netlib with Boost.Beast, which I have completed.
It's been a learning experience in writing effective tests, and I continue to strive for improvement, as can be seen in my LeaseSet unit-tests in #1023, URI unit-tests in #1033, and Stream API unit-tests in #1040.
Here is a list of my open work:
- #1033: Beast: replace cpp-netlib with Boost.Beast
- #1023: Tests: Fuzz: use single drivers for fuzz tests
- #1024: Tests: ClientDestination unit-tests
- #1034: Crypto: remove signatures except for Ed25519, RSA-SHA512 raw verifier, and DSA verifier
- #1037: Tests: Integration: initial support for integration tests
- #1040: WIP: Tests: Integration: Stream API refactor w/ unit and integration tests
- #1015: AddressBook: move subscription saving to storage
- #1025: Instance: separate client code from core startup
- #1039: Transports: add atomic state variable to Peer
- #1038: Tunnel: remove dead code
I will update the list if/when my work is merged.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
I approve of this proposal at 00:39 UTC 12-Jun-18 https://forum.getmonero.org/6/ideas/90300/oneiric-june-august-part-time-kovri-junior-developer
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEEhhics1I4lOeLdKbZqduz5FECfEFAlsfFk4ACgkQZqduz5FE CfFG5BAAuqbM/mTQep0uGpHF6z+oSH66zsvS7nDMuHAIxzm70zymg7q+S9rdU+fw OyMYCjJhtfus3FX7A2CE/yXA0PWL7YAs6LIb8vT9gJs9A/g/vzIvWt2DhrvrmYsM 5VK8TFigCNoiR2gvXloxBKzUQesKl1zMCnAZSH2j4W+I/WIcofvuPn4dv/ULbyYe vIr+UpWf9VGg8ehfrMxjc57yykGweZDvQZlnzropRP28+VjAiHfIXsmA/LZ8s3pU XysNsuhYkpLy44eEp4Pj5t9eMSvsUE93FNycSQwlXy7b0l3qnQ03H1taiA9GKZEZ eJD7glr6kU5LYY/EQo0MG4Z2e3Gvb4/IJdZX0JVQ0iJTeFF6GRrpwtBe82kMaJyR r+Iw/47F41+1Dl8gVG/2BJUyVTS8dWjNS6FyfdJ62+C+ZJ9iO8thlxq5UppVhRBR iK7YVQDleJovW8bJXwS8Cf2hYvqLIPORlj50sbdZztodaemjDOYvhTiFWKJLc0GE dKJmzjcYlqSKZ0heBi5DmxCWZSAWWqNbiecjkpLJpfBogRo2pOku5eaMFCrs0jN3 PZr2reuq1sF1X32Lu4b+Z+izyzxKvxLGAxjW1SixAIW0xtADvs1IEPg88W6buBKC pkuXO6saOfAJa9AK2gqV269s+QK5fL7YbEDN8YunDUVZ0yylRMA= =uhFX -----END PGP SIGNATURE-----
This is oneiric checking in on FFS progress for June and 3/4 of July.
Over the past couple months, I have been collaborating with anonimal on alpha release milestones and bugfixes.
Here is a list of my merged work over July and June:
- #979 - Build: set make shell to bash
- #978 - Readme: updates for alpha release wording & build documentation
- #972 - SOCKS: separate declarations from definitions
- #956 - Bytestream: data pointer refactor, add tellp + related SSU refactor
- #951 - Stream: default construct current remote lease
- #943 - Build: add kovri_python cotire build
- #938 - HTTPProxy: improve HTTP error reporting
- #931 - Kovri: implement requisites for 0.9.32 + bump I2P router version to 0.9.32
- #925 - Testnet: refactor testnet script and Dockerfiles
- #922 - Tests: fix BookEntry naming warning
- #917 - RouterInfo: refactor signature creation and verification
- #914 - AddressBook: create multiple subscription map
- #910 - NetDb: refactor getting closest routers
- #896 - InputByteStream: checks for null source buffer when reading
- #894 - Tag: getter for tag size
- #882 - Identity: refactor routing key creation
- #881 - Build: fix mingw warnings
My focus from now until August 1st will be on writing tests for untested modules, running live tests, and fixing bugs as they arise.
Progress on the GUI for testnet has been postponed to find a Qt developer able to take on UI work. Some progress has been made on the current testnet, and Boost python hooks are now functional.
Alpha milestones are all but complete, and this makes testing / bug-fixes the top priority until Alpha release.
A note to the reader: if you look at the links you'll see that I had to do a lot of fixing, patching, and code additions to a majority of oneiric's PRs; more-so than any other contributor. But, on the other hand, oneiric is proving to be a model for all other contributors and I am thoroughly impressed with oneiric's tenacity, dedication, and ability to LEARN from mistakes: this is huge, and not to be understated. As I've said before, oneiric has made massive progress in a short amount of time and I look forward to seeing more of their work in the future.
oneiric is also making a solid notch in the community and this is very important to the project and community at large. My only complaint is that, in terms of assisting, I would hope to see more follow-through with things that I ask. In particular, leading the migration to boost.beast instead of working on other things. I don't expect immediate results and I know that research takes time so don't worry about feeling like you're not being productive (if that's what you're feeling). Aside from that, keep up the good work.
>Alpha milestones are all but complete, and this makes testing / bug-fixes the top priority until Alpha release.
All milestone issues were resolved yesterday (July 25th) for rc3: https://github.com/monero-project/kovri/releases.