Please login or register.

anonimal's Kovri Full Time Development funding thread

Monero and Kovri

From crypto-currency to simple message exchange, we rely on hardened privacy systems to guarantee that our transactions are anonymous and secure.

As Monero is a leader in both privacy-aware currency and community, the logical response to Monero's anonymity question is to implement a decentralized, anonymous internet.

The solution? Kovri.

The Kovri I2P Router Project aims to integrate I2P technology into Monero to ensure that every transaction and communication meets the highest standards of anonymity possible.

The Importance of Kovri

I cannot reiterate enough the importance of Kovri as both an implementation of a viable anonymous network and as an alternative to Tor.

Tor has an annual multi-million USD budget with a multi-million number user-base. Tor is well-researched and continues to garner massive media attention. While I love Tor tremendously and will defend her with tooth and nail, at this time of writing there are two issues that concern me the most with regard to the Tor project:

  1. With new management, the current state of the project is in questionable flux: core volunteers who have been with the project since its very early years are uprooting and leaving, there are publicly known conflicts within the organization, there are many rumors (both founded and unfounded) about U.S. government infiltration
  2. Tor's Achilles's heel: authorities, consensus, and flow-based onion-routing (as current implemented in Tor): they are not truly decentralized

While the issues in point 1 may be temporary or purely tin-hat, it's unfair to both the project and the entire planet to have a majority of the world's anonymity-needs resting on the shoulders of a single project; not to mention, the mere idea is very dangerous.

The issues inherent in point 2 are not easily addressed nor may they ever be addressed. Attempting to decentralize Tor by removing Directory Authorities and other technical aspects of current Tor design would be like genetically modifying an apple to become an orange after the apple has been fully formed. As interesting as that may be, why do such a thing when one can simply eat a natural-born orange?

How Kovri will improve the I2P experience

The Java implementation of I2P is the known worldwide. It is the original implementation and standard of which all other Garlic Routing implementations have followed and continue to follow. Over the years, there have been several notable complaints about the java I2P project with the biggest being: it's in java, and it's not easily usable.

Kovri aims to address these issues by implementing I2P entirely in C++ and, in addition to providing extensive & easy-to-understand documentation, implementing user-friendly interfaces.

While it's too soon to discuss details of GUI integration, Kovri will have an easy-to-use interface integrated with Monero's GUI in addition to being a stand-alone I2P router (so you don't need Monero to use it). This will be all-around useful to both I2P and Monero as it will increase XMR transaction obfuscation while strengthening the I2P network.

How Kovri will increase Monero's market value

It's simple: more users, more trust, more value.

Kovri + RingCT technology will guarantee confidence with every transaction; ensuring that they stay private and anonymous. By integrating Kovri by default, every user will benefit from an the extra layer of I2P anonymity.

In the future, after a beta release, we plan on having Kovri 'on' by default. Until then, Kovri will be optional (though you can use the stand-alone router now).

Why I should be funded for this project

I've been with the project since before the beginning and, with the help of key contributors, led the project to its birth. I'm proud and fortunate enough to say that one year ago (soon before Kovri was born), I had told fluffypony that I would here "for the long haul" - and here I am today. I have spent all my free time over the past year on Kovri and have lost much sleep as a result - all without asking for any donations or payments in return (though I do appreciate the donations that I have received).

I've gained relationships within the Monero community and a wealth of knowledge that comes with developing an I2P implementation in C++; so there has been that reward, but I'm currently at the point where I won't be able to meaningfully contribute to Kovri unless I start to receive full-time (or at least part-time) funding.

Funding will allow me to continue to lead the project and to do what I've been doing - but much more of it.

The current state of Kovri is not in the same state as Monero. Kovri needs a lot of work in order to be brought into beta and an eventual stable release. I2P specifications do not cover every aspect I2P or implementation and the documentation itself could be rewritten in key areas to better aid developers. Since Kovri was originally forked from i2pd, much of the present code-base was poorly designed and poorly written; so this makes development more difficult than it should be (we've been able to fix many of the issues but many still remain (see the issues tracker)).

In addition to resolving bugs and missing implementation, funding will allow me to:

  • Code, code, code!
    • We have many issues that need to be fixed
    • We have many features that need to be implemented
    • I repeat: Kovri is not in the same place as Monero was when Monero was first born
  • Guarantee Kovri/Monero integration
    • Integration with monerod
    • Integration with GUI
  • Building/releasing on same platforms as Monero
    • Linux/OSX/Windows
    • i686/amd64/armv7/armv8
  • Project management
    • Ensuring that we set and meet release deadlines
    • Preparing and leading bi-weekly meetings
    • Implementing Quality Assurance
  • Address the massive amount of technical details that come with implementing I2P
    • Research improving I2P and overlay-network security
    • Crypto research/implementation
    • Creating/improving documentation
    • Contributing to existing proposals
    • Opening new proposals

...and much, much more.

To gain a sense of how development has functioned, you can:

Payout proposal

  • 5 XMR/hour
  • 1449 hours / 30 hours per week
  • 16 milestones every 90 hours
  • Total cost: 7245 XMR

The amounts posted here are motivated by current market volatility but will guarantee another year's work on the project. To work on Kovri full-time is a gamble but, like everyone else here, I believe in Monero and believe that Kovri will have a positive impact on Monero's value.

Securing Monero's future

If Kovri doesn't get more attention and development, Kovri will be Monero's weakest link. We cannot let that happen. 30 hours is not enough to make this happen, so I will have to volunteer more than that in order to meet our goals (12 hour Kovri days are not unheard of). I must reiterate that even if full-time, we need more developers in order to fullfill Kovri's vision.

Funding will also allow me to reach out to other developers, continue to aid in upstream library development/bug fixes when needed, and become more engaged with EinMByte (an experienced, invaluable core contributor), zzz (lead dev for java I2P), and the I2P community at large in order to make Kovri happen.

Everyone is welcome to visit #kovri and #kovri-dev and ask as many questions as you'd like. I'll do my best to respond quickly and informatively.

Replies: 46
ArticMine posted 7 years ago Weight: 0 | Link [ - ]

Donated 650.00 XMR

droffel posted 7 years ago Weight: 0 | Link [ - ]

Donated 100 XMR. Anonimal is awesome.

putridisk posted 7 years ago Weight: 0 | Link [ - ]

just sent my little contribute.

pwrz posted 7 years ago Weight: 0 | Link [ - ]

Donated!

Bitconix posted 7 years ago Weight: 0 | Link [ - ]

Done

snakes posted 7 years ago Weight: 0 | Link [ - ]

Donated. XMR+Kovri FTW! 8-)

anonimal posted 7 years ago Weight: 0 | Link [ - ]

Hi everyone. Because I was unable to gain entry into the forum until very recently (the forum wasn't enjoying Tor), I had posted a response here and hoped that the message would've reached you all by now. If not, then I want to extend my deepest thanks to all of you. Meeting our goal this quickly was truly quite an achievement for the community and for Kovri. Thank you all for making this happen!

As a general note, I intend to start official billing for this prop starting November 1st. I'm still very active with Kovri at the moment in other areas - but I'm also enjoying the calm before the storm; so, no intense work for the time being.

Please feel free to attend the meetings and to become more involved if you currently aren't that much involved. You don't have to be a developer to help out; just visit #kovri on IRC or Slack and we'll be happy to help you get started. Your input throughout development is valuable and we need as many voices involved as possible!

I will update this thread regularly with status updates for each milestone. Thanks, everyone :)

anonimal posted 7 years ago Weight: 0 | Link [ - ]

Hello again,

The first milestone was reached last week but I've delayed a payout because of the amount of non-code work that needed to be resolved first (and I wanted to feel more comfortable with where we stood before moving onto the next milestone).

Complete progress summaries of the first milestone are posted at the beginning of the following meetings logs (not including work done in late October):

Summary on 2016-11-13

Summary on 2016-11-27

My many thanks to everyone for your continued support! All of you certainly makes the experience more enjoyable :)

anonimal posted 7 years ago Weight: 0 | Link [ - ]

Hi everyone, just for the record, I'm donating 45.6 XMR of which will be taken out of my milestones and given to the Monero dev fund. This will even-out the oddness/spillage of payouts and will help fund other great Monero projects.

anonimal edited 7 years ago Weight: 0 | Link [ - ]

2nd milestone completed. As usual, I've worked more than paid hours but, because of several blocking upstream issues (and me not satisfied with where we were by the time the hours were completed), I've held out until now (also, holidays etc.). Ideally I wanted to announce an alpha release but new issue after new issue kept piling up to the point where we're still only inches away from nightly releases.

Stay tuned for nightly releases and the alpha release (nightlies will be ready very soon, alpha will be available soon'ish).

Some highlights of work completed:

  • Kovri bug fixes, new features, improvements, and issue resolution (all visible on GitHub)
  • App/Client: fixes + features + unit-tests + refactoring + documentation
  • Client/Tunnels config features + fixes + refactoring
  • Crypto work + fix dangerous crypto rand implementation
  • New logging implementation
  • Address Book development
  • Core tunnel development
  • NTCP development (ongoing in my fork)
  • Strengthen HTTPS client's cipher usage/TLS version
  • Active kovri run-time testing on all platforms for all development
  • Fix + finalize fully static builds for all platforms (this included static OpenSSL which had various upstream CMake issues to tackle before this was resolved)
  • Upstream dependencies development (cpp-netlib fix/dev feature, CMake)
  • Monero development (discovered security issue with static release builds and libunbound: Monero didn't adjust for OpenSSL releases/hotfixes)
  • Meta repo work for Monero and Kovri / project management
  • Mentoring/education + much #kovri/#kovri-dev support: visible on GitHub and IRC
  • Salti development, discussion
  • Setting up kovri-relay for when fluffypony couldn't manage i2p-relay because of traveling. kovri-relay now relays OFTC to Irc2P/Freenode
  • Kovri platform packaging research and testing (including Windows)
  • API research for Kovri
  • Working with nm90 on /r/Kovri
  • Various kovri repo work (submodule/deps, new reseed servers, docs, issue maintenance, etc.)
  • Other (minor) Monero development (monero, monero-forum, monero-site)
  • More...

Note: I don't know why my previous post says "1 month ago" when that was almost 2 months ago (forum rounds down?).

anonimal edited 7 years ago Replies: 1 | Weight: 0 | Link [ - ]

3rd milestone completed

Disclaimer

Again, I've worked more hours than what I would ask to be paid for. fluffypony has asked me to not do this so I will be better about simply doing what I can during the time alotted.

I must also note that because of various personal events over the past month, I was forced to periodically stop working since the previous milestone. This should be factored into the timeframe of work completed.

3rd milestone goals

Building strong foundations. Building for project longetivity. Building relationships and community.

Summary of work completed

I'll try my best to try and summarize what's been completed since the previous milestone:

Collaboration

  • Docker work with lazygravy
  • Android NDK work with moroccanmalinois
  • Snapcraft packaging work with elopio
  • Collaboration with #OpenHours 96boards.org / preparations for livestream showcase https://github.com/monero-project/meta/issues/46
  • Kovri IRC server work with ajs
  • As usual, lots of work with pigeons for our various build environments

Repo / Project

  • HackerOne
    • Create Vulnerability Response Process
    • HackerOne work + correspondence + update VRP + update contact info
    • Officially launch on HackerOne
    • Opened FFS request + reddit for HackerOne bounty funding account
  • Inherit all of fluffypony's assigned issues (he has more important things to do!)
  • Documentation updates
    • add snapcraft + tunnels setup + basic opsec documentation to user-guide
    • add eepsite registration process to user-guide
    • add Base64 + links to user-guide tunnel setup
    • various other updates to build instructions, FAQ, and contributing guide
  • Project public relations review/cleanup: remove quitter account, etc.
  • kovri-relay maintenance (now relays to #monero-otc and #monero-pools on freenode)
  • Website: initialize anonimal/kovri-site + add legal files
  • Various Reseed + SSL + cert updates and maintenance
  • Regular live testing on all supported platforms
  • PR review for all contributors
  • Mentoring/education when called upon by fellow contributors
    • support for #kovri/#kovri-dev
    • guzzi FFS progress report review and feedback

Code

  • Create/implement new exception dispatcher
  • Feature: write client/server local base32/base64's to text file(s) + improve private keys impl
  • Refactor + cleanup Makefile
  • Crypto++ 5.6.5 post-tag master branch research, update submodule for fixes/features
  • Coverity maintenance (devops + code)
  • Build: implement version handling with CMake + update definitions
  • Learn all clang-format options, implement new style + docs, add cpplint filter
  • Debug + fix filesystem-related for #519/#520
  • Fix NetDb/RouterProfile loading/saving/deleting implementation
    • Fixes impl on case-insensitive filesystems (OSX/Windows)
    • Related refactoring + impl cleanup
  • Resolve clang build warnings for binary and tests
  • TunnelBase: fix datatype/impl for creation time + related refactoring
  • Review + fix MoroccanMalinois' HTTP client PR and utility binary PR's
  • Cherry-pick monero-project/meta#36 monero-project/meta#50 + move to Kovri repo + more development on installer/packager
  • More NTCP work, fixes + refactoring / spec review

Build / Packaging

  • Introduce DragonFly BSD support
  • Introduce OpenBSD support
  • Debugged + fixed FreeBSD static build due to system update issue
  • Fix snapcraft build
  • AUR research
  • Introduce + develop/fix new installers / packager for nightly builds on all supported platforms
    • Packager works on Linux/OS/MSYS2/and all supported BSD's
    • Installer works on all supported platforms
    • Add install/uninstall to Makefile and installer
    • Related improvements/fixes
    • Finalize nightly builds!

Monero

  • dns_utils: fix infinite recursion when distributing empty dns_urls
  • Minor code fix/review for 0.10.2 release, other contributions/collaboration
  • Resolve open issues (ones I opened)
  • Minor updates to monero README and monero-site contributor's page
  • Update monero AUR package, debug failed serialization unit-test

Research

  • Monero GUI + Qt research for Kovri
  • Preliminary LMDB/lmdb++ research

...and more! Please review git-log, the monero-project/kovri and monero-project/meta repo issue tracker for more details

Note: the Alpha release will be here soon :)

Reply to: anonimal
lethos3 posted 7 years ago Weight: 0 | Link [ - ]

great job anonimal, thanks for the updates.

anonimal edited 6 years ago Weight: 0 | Link [ - ]

4th milestone completed

Preface

This milestone covers full-time work from March 27th through May 3rd (May 4th if you count the writing of this report).

4th milestone goals

Code. As much as possible.

Flow summary

After an analysis of java I2P's NTCP implementation came 33 bulleted point notes and TODO's regarding regarding both java I2P's and kovri's NTCP implementation.

which then lead to

  • #627 RouterInfo rewrite: fixes/additions/refactoring

which may lead to a

  • NetDb rewrite/refactor

which will lead to an

  • NTCP rewrite/factor

    • which should provide better solutions (either explicit or implicit solutions), for NTCP and #187

which will lead to an

  • Alpha release.

My ideal scenario

Every router issue will be resolved so I can work on Monero integration.

Reality

It's quite possible that I would need to devote most milestones to fixing/rewriting all remaining core areas. Regardless if that's necessary, I do intend on fulfilling every goal in this FFS.

Summary of work completed

Code

  • PR's #617, #620-621, #625-#634
  • RouterInfo spec study, rewrite/refactor #627. A work in progress, currently 6 merged PR's = 44 commits
  • Java I2P NTCP implementation study / spec study /
    • As noted above, 33 bulleted point note analysis and TODO's regarding both java I2P's and kovri's NTCP implementation. These are private notes but can be made available upon request
  • Crypto++ master branch review for various submodule bumpings

Build / Packaging

Collaboration

  • PR review + fixes / collaboration with moroccanmalinois, selene, and rakhimov
    • #608 through #616, #622-#623
  • Work with rehrar on logo + website
  • Work with Jeff at crypto++ for cryptopp#398
  • nanoakron discussion about replacing eepsite keys with monero keys
    • related research

Repo / Project

  • H1 correspondence = hackerone.com/monero created, kovri moved to hackerone.com/monero
  • Various monero/meta github issues/PR, monero/kovri issues discussion

Monero

  • Create Monero VRP review discussion/workarounds
  • Various monero/meta github issues/PR

Research

  • Mnemonic seed for privkey recovery (#619)

Note: the Alpha release is 99% ready. The remaining 1% requires more work and more hands/eyes are needed (RouterInfo/NetDb/NTCP are core areas and cannot be ignored for this release).

anonimal posted 6 years ago Weight: 0 | Link [ - ]

5th milestone completed

Preface

This milestone covers the usual above-and-beyond full-time work from May 4th (after posting the previous milestone) through June 22nd (with the exception of a few intermittent weeks due to unavoidable personal matters).

5th milestone goals

Project collaboration, website development, core code development.

Summary of work completed

Notes

  • Most of the WIP as stated in the previous milestone was put on the back-burner because of this milestone - which was spent almost entirely on collaboration. My next milestone will focus on resolving the issues presented in the 4th milestone as well as other code issues (so we can release a.s.a.p).

  • What's not been noted in my milestone reports (but noted in my original FFS) are the preparation, leading, and follow-up work of every meeting. Most recent meetings can be seen here.

  • For github-recorded details, please see commits, pull requests, and issue discussion on my activity page at https://github.com/anonimal.

Collaboration

Because of the amount of collaboration which was covered over this milestone, I have found it futile to link every related page, pull request, code commit, IRC log, forum post, reddit post, and GitHub issue across the various monero-project + related repos. If anyone requires specific details, please feel free to ask. Note: backend work is not publicly documented but can be verified by fluffypony and/or pigeons.

  • rehrar: mentoring + web development
  • MoroccanMalinois: mentoring + code development, PR review
  • sdrobertw at 96boards.org: OpenHours collaboration / preparation
  • pigeons: various backend-related (more OpenBSD, website-related)
  • Dealing with, and resolving, guzzi drama (MM has picked up guzzi's abandoned FFS)
  • Various IRC collaborations / discussions with other contributors, both public and private
    • philkode: discussion/mentoring as new developer
    • gingeropolous, knaccc, ArticMine: condensed Monero/Kovri CV
  • PR review for all kovri repos + monero repo from various contributors

Code / Project

  • RouterInfo, NetDb, I2NP work
  • cryptopp work (kovri#639)
  • Vulnerability Response Processes made for all monero subprojects. HackerOne/monero updated
  • Setting up related environments for backend dev, bringing check.kovri.i2p back online

I repeat, for github-recorded details (there are many), please see commits, pull requests, and issue discussion on my activity page at https://github.com/anonimal. Thank you!

anonimal edited 6 years ago Weight: 0 | Link [ - ]

6th milestone completed

Preface

June 23rd through August 5th: this milestone covers 105 billable hours (does not include all my time working toward this project) and also covers ~2 weeks prep/travel/doing/wrap-up of Kovri promotion at DefCon25 + the Monero L.A. meetup. The promotion work is not officially covered by this FFS proposal though I've included it in this milestone because it's what I've also been busy with but I am not billing for the promotion work.

In the future, I would like to include any in-person promotion work to my FFS since fluffypony is, to my knowledge, the only other IRL person doing such consistent work with enough kovri/i2p knowledge to boot. If the community wishes not to fund me for promotion work through this FFS, then I will open up new FFS proposals as needed. Note: IRL promotion work was not originally included in this FFS because I was completely anon but, as of July 29th, 2017, I began formally de-anoning for various reasons - the biggest reason being to better facilitate project awareness.

Summary of work completed

Note: I have detailed, down to the second, time-tracking of all my work (via Kimai), complete with detailed descriptions of every activity (141 entries for this milestone). I'm reluctant to ever post these timesheets publicly because of privacy concerns but I will make them available to the core team upon request.

  • Code/Project collaboration/PR review/Mentoring of MoroccanMalinois, rehrar and other contributors
  • kovri-site + kovri-docs + meta + monero development
  • Testnet development, new Win installers, code R&D for MM's PR's
  • All the usual work that comes with leading this project (providing support, leading meetings, project management, etc.)

For GitHub-recorded details (commits, pull requests, issues, discussions, etc.) see my activity page: https://github.com/anonimal