Here are the main initial ideas behind GRUF : Before we started writing this component, we spent a lot of time on the design (yes, using paper and pen ;)), thinking a lot on how to be as generic as possible. As a conclusion of our design sessions, we came up with the following requirements : - a group has to be seen by zope like an user. This way, we can guarantee that the _whole_ standard security machinery of Zope will continue to work like a charm, without even a hotfix. - a first consequence of this is that GRUF will work out of the box with any Zope application, including Plone ;) - a second consequence is : groups just have to be stored in a separate acl_users - GRUF must be able to handle _any_ existing acl_users component ; including LDAP or sql one - GRUF has to be as transparent as possible to applications (read "should act as a normal user folder") - Group nesting should be supported - Multiple sources for users should be supported (ex : source 1 is SQL, source 2 is LDAP, source 3 is another LDAP). The API was designed, test cases were written, code was done, documentation was written, first version went out and the first customers were (very) happy. Yes, exactly in this order ;)