self() 3.0 released
I'm pleased to announce a new release of self(), my work-in-progress soul() implementation for the body() base class.
As announced last year, with the release of version 3.0 the 3.x branch is officially announced. This includes some major rewrites, but we have kept backwards compatibility with older versions of self().
Probably the major improvement/change from the 2.x branch is the new privilege separation code between the two main modes of operation, the so called public mode and private mode (some call them the work mode and the personal mode). Now there is a clean separation between them, avoiding overflows that ended in leaks of information and terrible consecuences in the past.
I would like to list some of the highlights of this new version:
- Improved Python support in general, django and plone support in particular
- Improved the workflow mechanism. Now requests from users are handled properly, using chains and a new system of privileges that allow tasks to be done more efficiently
- Added more documentation to the knowledge base
There are, of course, some bugfixes and new security stuff:
- Fixed a bug in the trust authentication mechanism, which was used to identify trusted users. Seems that, under certain conditions, an attacker could bypass this mechanism so self() recognizes it as a trusted person. (Sadly this was exploited 1 time succesfully this year)
- Due to that bug, a major rewrite of the authentication mechanisms configuration has been made. Now accesses are more restricted. There was even a change in how access privilege is given, now it is more difficult.
During the development of the new 3.0 release there was some really intensive sprints, I would like to add some comments about them and the people that collaborate somehow:
- Birmingham: 29th June - 3rd July. This sprint took place while attending the europython conference. Most of the work here was done by santi@ (now an usual contributor to the project) and me@.
- Found a bug in the project management tool code. Fixed the bug and started work to improve the tool to avoid this kind of bugs
- Added a KLD to the kernel driving_from_the_other_side that could be dinamically loaded, allowing self() to be capable of driving the other way around
- Met a lot of other python developers, share thoughts and gather some ideas for the project.
- London: 5th - 13th August. Another sprint in the UK. This time it took place in London. Some highlights:
- Added a new developer to the project (nittin@), which will help with mobile phones optimizations
- Improvements in the official documentation about how to create successfull forks of self()
- Added a new method to the CrazyStuff module (search_for_invaders) and tested it in London. It seemed to work fine (found 2 invaders ;D)
- Tested the sleep mode in some parks. All tests passed ok
- Athens: 12th-21th september. This sprint was a request from betabug last year, when releasing 2.9, so it was quickly added to the list of posible sprints for this year. The sprint took place for more than one week and was really productive. I would like to thank all the greek development team that worked so hardly there with betabug and me (panos@, rika@, graffic@...). Some highlights:
- Almost finished the privilege separation code thanks to bebu@'s wisdom (some more work took place weeks later).
- Started the .gr support in the i18n layer
- Improved support for self() to work in foreign environments (without the need of external modules)
- Added a variety of methods (including the new ouzo() and souvlaki() ones) to the Taste class.
- Found a bug in the internal GPS code. It got lost for the first time since earlier versions of self().
- Added a new module that allow self() to recalibrate the GPS through IRC
- Tested the Galicia.queimada code, that was there for some time now, all tests worked ok.
You can get the source code of self() here:
Don't forget to check the usual checksums to ensure you are downloading the right version:
- MD5 (self-3.0.tar.bz2) = cebd95add62a1fbd31fce88f17af1017
- SHA256 (self-3.0.tar.bz2) = 66e4c000f2000eb1cca164f97c441e14d438ca2599c8e79f4de6ecade0de8b32
To end the announcement, I would like to thank everyone that made this new release posible, you are the ones responsible for such a nice job, thanks a lot, keep doing such a great effort.
For the rest of you, who didn't know about self() yet, please download it, test it and report any bugs you could find, thank you too.