[clfswm-devel] Request for comments: changing the meaning of group in CLFSWM.

Cyrille Thouvenin cl.thouvenin at laposte.net
Sun Mar 23 09:48:19 UTC 2008


>>>>> "PB" == Philippe Brochard <pbrochard at common-lisp.net> writes:
Hi,

    PB> Cyrille propose to change the meaning of groups in CLFSWM:

    PB> "I am trying to make a case to change  the meaning of group in
    PB> CLFSWM. For   me, group is   a better  word  for  an arbitrary
    PB> ensemble. In CLFSWM, groups are not so arbitrary as it is link
    PB> to a geometry inclusion  relation. So, I  would prefer to  use
    PB> frame in that particular  case as this  word has a geometrical
    PB> sounding."

    PB> You can see the thread on the trac:
    PB> http://trac.common-lisp.net/clfswm/wiki/UserAPI

    PB> For actions on children   with no geometry relationship   (ie:
    PB> children  in arbitrary groups)  I  propose a tag based system.
    PB> Each group have a list of tags and we can perform actions from
    PB> those tags.

    PB> And  you, what is   your   prefered system  to   interact with
    PB> arbitrary children?

    PB> I'd like to have some comments before doing anything so brutal
    PB> on the code :)

Here is a comparison I make between a tag system and this group system:

Definition:
- Group:
  - An item  is a group  that contains itself.   A group can also be a
    member of another group. So we have a DAG representation.
  - An extension  so as to have a  namespace organisation:  Each group
    has a name that  must be unique   in any membership it takes  part
    to. That could be also  the number in  the list of member for each
    membership (relaxed   constraint  on the  uniqueness).   So, it is
    possible to identify the group thanks to a  path in the DAG. There
    is a special group which is the root.
- Tag: 
  - Each item  can   hold multiple  tag.  So,  we   also have  a   DAG
    representation.
  - A tag is a name. A set is directly named by its  tag. So, there is
    one namespace.

Similarities:
- The model  behind the tag system is  the  same as the group  system,
  that is a DAG; Each item can be a member of multiple set.

Particularity of a tag system:
- Tag are position on a item by item basis
- No operation on set
- Simpler to implement

Particularity of the group system:
- Problem with group containing itself: This constraint must be enforced.
- With path, multiple namespace can be represented. Need for a current
  group a la "cd" (the Unix command) to ease navigation.
- Set operation  (inclusion). A whole  group of item can become member
  of group and if   an item is added  to  the first group, it   become
  automaticaly  member  of   the second   group.  While  performing  a
  new membership, the uniqueness of the name must be enforced.
- More features, but more complexity in the implementation.

Finally, if you have a group system, you have a tag system: In a group
system,  you could have  the groups that  are a direct children of the
root group. Those child groups are the tag.

Feel free to comment,
Cheers,
-- 
Cyrille



More information about the clfswm-devel mailing list