Hereby I present to you the result of my first 1.5months of being a paid part-
time developer for Freenet: Web Of Trust build0013.
Consider it as a bugfix build to catch up with the lack of maintenance for 1 
year. Therefore, it will not fix the severe performance issues of WOT yet.
Even though my primary goal of being a paid developer IS to fix the performance 
issues, it was a good idea to do this maintenance build first:
There was a large backlog of issues on the bugtracker. I've done 162 commits 
for this build to fix that backlog, which is quite a lot.
Now the bugtracker and its roadmap is well organized again. I still use it as 
my primary tool for managing TODOs so please use it.
Also, working for 1.5 months on maintenance has brought me to a point of 
feeling like I now know the code base of WOT rather well again. Not having 
worked on it for a year of course had caused me to forget stuff.

My next step will be to finish the event-notifications branch. This will ease 
WOT client development a lot and also be a huge performance gain: WOT clients 
won't have to periodically poll WOT for changes anymore. They will get notified 
automatically when changes happen. No database traffic will happen when there 
are no changes.
Further, after event-notifications works, I will implement code which allows 
client applications to use the captcha service of WOT for their own purposes. 
This will allow Freemail 0.2 to become feature-complete finally: It will be 
able to use captchas to protect against spam.

Its difficult to sum up 162 commits but here is the most important stuff:
- Add Russian translation. Credit goes to wannamore - thank you very much!
- Review / rewrite the functions for restoring and deleting own identities. 
The old code was rather buggy. This gives the following benefits:
* For creating/restoring own identities, only require an insert URI. The old 
code would need both a request and an insert URI. Thanks very much to 
TheyShootHorsesDontThey from Freetalk for the code!
* Fix privacy issues of deleting an own identity: The old code would delete 
any trust values to to the deleted identity which were owned by other own 
identities. The new code converts the own identity to a surrogate non-own one 
and preserves everything.
* Fix restoring identities for SSKs which do not contain an edition number or 
even not a doc-name. In general restoring is now a lot more robust against 
wrong syntax of URIs. Thanks to TheSeeker for the bug report.
* Show that an identity is in progress of being restored on the web interface. 
Disallow modifications of the identity while restoring has not finished to 
prevent the changes from getting overwritten by the data which will be 
imported from the network.
* Speed up restoring and deletion.
* Add very sophisticated unit tests for restoring / deletion of own 
identities. I think lack of tests and documentation is a plague of open source 
code and therefore plan to write unit tests and documentation for most code 
which I produce from now on.
- Implement new statistics: Count of fetched identity XML files, Average 
fetched identity XML files per hour, Average seconds for importing one identity 
XML file. Especially the amount of average XML files per hour will allow us to 
measure the following performance optimization of a future build: To NOT 
always insert a new XML when anything changes but only when important changes 
happen such as decrease of trust values.
- Disallow access to the web interface for users who don't have full access to 
the node's web interface. Now WOT can be used with a node which is in public 
gateway mode: It isn't possible anymore to use the lack of access control on 
WOT for DoSing the node by creating millions of identities. Of course this 
means that WOT isn't publicly accessible at all but thats the easiest solution 
for now. Thanks to TheSeeker for the bug report.
- Show trustee count on the "Own identities" page of the web interface.
- Update seed identity edition numbers which should speed up bootstrapping 
quite a bit.
- Temporarily disable the seed identity of TheSeeker as requested. New seed 
identities would be welcome.
- Fix DoS bug 0004723: Set maxArchiveLevels to 0 on all fetches.

Changes only interesting to developers:
- FCP: Add 0-suffixed fields to GetIdentity to allow re-use of parsers which 
have 
been written for the other FCP functions. Credit goes to Thynix / operhiem1 - 
thank you very much!
- Use JUnit4 instead of JUnit3
- Compile for java 1.6, not 1.5 as toad said we use 1.6 now.
- Add Debugging.txt to developer documentation: It explains which functions 
should be used periodically by developers to check for bugs. Those are 
functions which cannot be run during normal WOT operation. Induced by:
* Implement developer function for searching for database object leaks.
- Provides a generic framework for doing random identity/trust/score graph 
unit tests. Currently used by the restore/delete tests but will be useful for 
testing much other stuff.
- Add initial implementation of a benchmark for measuring 
computeAllScoresWithout commit - the current major bottleneck in WOT. Make 
running benchmarks during Ant unit tests optional and disable them by default.
- Fix "Unable to load or use BouncyCastle provider." during unit tests.
- build.xml: Fix ant warning "'includeantruntime' was not set"
- Build the unit-tests even if skip_tests=true so you can run them manually 
through Eclipse.
- Allow overriding of override.properties "skip_tests=true" by commandline "-
Dskip_tests=false"
- Log version of WOT plugin during startup. This will make providing support 
easier as we do not have to tell the user how to look up the WOT version 
anymore.
- Reduce ERROR logging a lot. Log files should be easy to search for real 
errors now.
- Document locking order of class IdentityFetcher. Review the whole 
synchronization of that stuff and fix quite a few issues.
_______________________________________________
Devl mailing list
[email protected]
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to