Tag is pushed to master branch, waiting for Bombe or toad to release it. - Major optimization: With older WOT builds, where X/Y are identities, executing "get Trust from X to Y" and "get Score from X to Y" would run in average case O(N) execution time where N is the number of trust/score objects in the database. Theoretically, such queries should execute in O(1) with adequate indexes. The poor execution time with the old code is due to the lack of multi-dimensional indexes in db4o and has been proven experimentally by writing a test which I will publish in my (xor) flog soon. This new build generates composite primary keys for Trust and Score objects and configures db4o to generate an index upon them. This allows a theoretical execution time of said queries of O(1). The real time will probably be O(log(N)) because db4o uses trees, but thats WAY better than O(N). The said queries are used heavily during score computation, which is executed every time a trust list is imported or a trust value is changed. The performance gain should be significant since this is an algorithmical optimization, not an implementation-one. - Major optimization: When creating own identities, do not incrementally compute scores, but run a full computation. This should speed up own identity creation very much. ATTENTION: When benchmarking this, be careful though: If there was no own identity before, the creation of one will result in the fetching of very many trust lists, because trust lists are not fetched if nobody trusts the seed identities. And the fetching of many trust lists causes heavy computation, so this optimization does not help. So to benchmark this properly, make sure that you have an own identity already. Also, if your existing own identity had distrusted many identities which were initially trusted from the seeds, the creation of a new identity which trusts the seed identities could cause lots of trust list fetching as well, since many distrusted identities might become trusted. And make sure the WOT database is "up to date" before starting it for a benchmark, i.e. WOT has been running long enough before to make sure that no new trust lists will be fetched. - Major optimization: Defragment WOT database during startup. - Add statistics about the number of score computations and their execution time to the home page of WOT. - ArneBab: Add util to generate random nicknames for identities, to improve your anonymity. Accessible via FCP and when creating own identities via the web interface. Thanks!
Internal stuff: - New internal function for creating a fresh clone of a database: It will manually re-create all objects in a fresh database. Sometimes db4o databases have internal breakage which prevents defragmentation from succeeding, while the databases still can be used with WOT without any problems. This new function allows affected developers to create a fresh copy of their database. Maybe someday we can add UI so everyone can use it - Bug fix: Prevent the creation or import of identities which have mixed up insert and request URIs. When a database is first opened which contains such identities, they are deleted if they are NON-own identities, which fixes lots of ERROR logging. If they are own identities, nothing will be done: We could theoretically repair them by switching the URIs, BUT those identities probably have already published their insert URIs by solving captchas, so they are to be considered as compromised. Hopefully, the people who own those identities will notice that they are broken (they won't insert and errors are logged) and delete them. We do not auto delete them because auto-deleting user-owned content is bad. - Zidel: Build process improvement, additional work on the insert/request URI mixup bug. Thanks! - Add some logging, for example for the timings of score computation. - Various internal bugfixes