--- /dev/null
+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 ;)
+
+
+