Hierarchies and inheritance


See also:
ForTheLazy - for a proposal for inheriting ACLs
CategorySystemOverhaul - for various approaches to organizing pages
A recent discussion on the #wikka channel brought up some really interesting issues about how wiki pages are organized, and how ACLs are determined.
 

Discussion log

First, a copy of the relevant bit of the IRC discussion (with minor edits to remove some typos - but not Srekel's cat Klumpen, at his express request :)), followed by a few comments.
Feb 02 17:46:01 <Freek_NL>  hi all
Feb 02 17:46:18 <Freek_NL>  small note, ill post it on wiki later
Feb 02 17:46:41 <Freek_NL>  but if you secure a page using the ACL's, you can
                            shield that page as you wish, works like a charm
Feb 02 17:47:16 <Freek_NL>  but, the pages you create under (look at it as a
                            tree-structure) are using the default ACL's -
                            meaning everyone has full access to it
Feb 02 17:47:40 <Freek_NL>  should they not use the ACL settings from their
                            parents (the page they where created from) ?
Feb 02 17:47:53 <Freek_NL>  unless of course you explicitly say they should not
                            use them.
Feb 02 17:48:54 <Freek_NL>  even further, should the children of a page nog
                            always (unless, again explicitly told) use their
                            parents ACL's dynamically ..
Feb 02 17:49:02 <JavaWoman> hoi Freek
Feb 02 17:49:07 <Freek_NL>  lol hoi JavaWoman
Feb 02 17:50:23 <JavaWoman> ummm - there really is no tree stucture in Wikka, so
                            I'm not sure what you mean by "children"
Feb 02 17:50:34 <JavaWoman> or parents
Feb 02 17:51:08 <Freek_NL>  well if you look at a tree from the roots, you can
                            see the root as the parent (in a reversed tree) and
                            the branches as children
Feb 02 17:51:18 <Freek_NL>  Ill look up a picture from google, one moment
Feb 02 17:51:24 <Freek_NL>  ..please
Feb 02 17:51:27 <JavaWoman> a page in Wikka gets the default ACLs as set in the
                            config - unless overridden by explicitly setting the
                            ACLs to something else
Feb 02 17:51:47 <JavaWoman> I know wtah a tree is - it just doesnt' apply to
                            Wikka :)
Feb 02 17:51:58 <JavaWoman> what (still can't type)
Feb 02 17:52:48 <JavaWoman> Wikka is a network really, full real hypertext - no
                            hierarchy at all
Feb 02 17:52:48 <Freek_NL>
                    http://www.adamsonhouse.com/xmllessons/Section2/page2.html
Feb 02 17:53:12 <Freek_NL>  its like a pyramid with parents on the top and
                            children attached to it on lower levels
Feb 02 17:53:27 <Freek_NL>  ok
Feb 02 17:53:33 <JavaWoman> yeah, that's what a tree is - it just doesn't apply
                            to Wikka pages
Feb 02 17:54:08 <JavaWoman> only (conceptually) to categories if you want to
                            have subcategories - when you forget for a moment
                            that they are now *implemented* as pages
Feb 02 17:54:42 <Freek_NL>  but if you only wish one private section in you
                            whole wiki, you should be able to make this page use
                            different ACL's
Feb 02 17:54:52 <JavaWoman> pages just don't have any specific relationship to
                            each other, any page can link to any other page
Feb 02 17:54:55 <Freek_NL>  but you might want everyting 'below' it use the same
                            ACL's as well
Feb 02 17:54:56 <Freek_NL>  right?
Feb 02 17:55:02 <Freek_NL>  right
Feb 02 17:55:15 <JavaWoman> there is no "below" :)
Feb 02 17:55:23 <JavaWoman> category - maybe
Feb 02 17:55:25 <Freek_NL>  flat 'hyarchy'
Feb 02 17:55:29 <Freek_NL>  ok
Feb 02 17:55:31 <Freek_NL>  category's would work
Feb 02 17:56:02 <JavaWoman> I could *imagine* a category system that has ACLs
                            attached to it - but that's not how things work
                            right now
Feb 02 17:56:07 <Freek_NL>  so you will have to add a different (new) category
                            and add the pages you wich to be included to that
                            category
Feb 02 17:56:36 <JavaWoman> yes, you can do that - but there is no mechanism to
                            "inherit" ACLs
Feb 02 17:56:38 <Freek_NL>  .. and provide category wide ACLs
Feb 02 17:56:52 <Freek_NL>  ok, thats fine if its possible this way
Feb 02 17:56:56 <JavaWoman> I guess it could be done though
Feb 02 17:57:19 <Srekel>    I guess what Freek_NL wants is that when you click
                            on a new WikaPage for the first time (i.e. you have
                            written a link with its name, but you haven't
                            created it), the WikaPage gets the same permissions
                            as the page on which you clicked the link
Feb 02 17:57:33 <JavaWoman> we've also discussed that the /clone handler should
                            make the new page inherit the coned page's ACLS
Feb 02 17:57:53 <Srekel>    that sounds like a good idea
Feb 02 17:58:04 <JavaWoman> yeah, Srekel , but that link could be on numerous
                            pages already, al with different ACLs attached to
                            them
Feb 02 17:58:22 <Freek_NL>  Srekel, yes, thats one way of doing it, but since I
                            understand there is no hyarchy (all files seemed to
                            be stored as flat files with no relation to one
                            another) this is impossible.
Feb 02 17:58:52 <JavaWoman> no, I can imagine two things (neither implemented
                            now):
Feb 02 17:58:56 <Freek_NL>  but if you could create ACL's for one category and
                            add pages to it (manualy) this would be fine as well
Feb 02 17:59:06 <Srekel>    JavaWoman, yeah, but it wouldn't be hard to just
                            send along the ACL of the page the user clicked on
                            (ignoring the other ones)
Feb 02 17:59:32 <Srekel>    Freek_NL, the fact that there isn't a hierarchy
                            doesn't really matter (if you do it the way I
                            suggested)
Feb 02 17:59:34 <JavaWoman> 1) apply ACLs to a category and have pages inherit
                            from that - BUT note that a page can have multiple
                            categories!)
Feb 02 17:59:48 <Freek_NL>  yes, becouse there is _some_ relation to the
                            previous (parent) page... even if its only from the
                            weblogs
Feb 02 17:59:55 <JavaWoman> 2) have the /clone handler create the new -page with
                            the same ACLs as the template used
Feb 02 18:00:02 <Freek_NL>  true
Feb 02 18:00:19 <Freek_NL>  ok, so you cant use categories.
Feb 02 18:00:28 <Freek_NL>  but you can use groups
Feb 02 18:00:39 <Freek_NL>  or better 'roles'
Feb 02 18:00:43 <Freek_NL>  and groups ;-)
Feb 02 18:01:06 <Freek_NL>  gets more complicated this way, but should be able
                            to be done not that hard in operation
Feb 02 18:01:11 <JavaWoman> looking at 'linked from'  won't work since as I said
                            the "missing" page could be linked from many pages
                            with different ACLs - it's a real network
Feb 02 18:01:13 <Freek_NL>  if there is a clear theory behind it..
Feb 02 18:02:13 <JavaWoman> what I could imagine is that when you *create* a
                            page you get a number of options to set its initial
                            ACL...
Feb 02 18:02:15 <Freek_NL>  JavaWoman, no, because you create a page only once.
                            and if the ACL is copied from that page only (one
                            time action - or sync) there is no interference with
                            other pages' ACL's
Feb 02 18:02:18 <JavaWoman> - from linked page
Feb 02 18:02:22 <JavaWoman> - from category
Feb 02 18:02:28 <Freek_NL>  exactly
Feb 02 18:02:31 <JavaWoman> - from template (when you're cloning
Feb 02 18:02:34 <Freek_NL>  that would solve most of the entire issue
Feb 02 18:02:36 <Freek_NL>  yes.
Feb 02 18:03:06 <Freek_NL>  one step further would be to enclude an option to
                            'keep in sync' with the parent (page wich it was
                            created from)
Feb 02 18:03:19 <JavaWoman> but you can create a page without doing any of
                            those, just by typing the name in the URL and adding
                            /edit to it....
Feb 02 18:03:25 <Srekel>    yup, Freek_NL you understand what I mean now :)
Feb 02 18:03:26 <Freek_NL>  not to hard either i suppose
Feb 02 18:03:53             *   Freek_NL says an absolute noob on PHP, MYSQL and
                            all programming languages....
Feb 02 18:04:03 <JavaWoman> :)
Feb 02 18:04:21 <JavaWoman> it's not a programming issue though - it's a
                            conceptual issue
Feb 02 18:04:35 <Freek_NL>  not all of it :-)
Feb 02 18:05:28 <JavaWoman> well, implementation is - but the way Wikka (like
                            most wikis) is structured  that there _is_ no
                            hierarchy
Feb 02 18:05:42 <Freek_NL>  but I do agree with your point JavaWoman that there
                            is no (and may even) should not be a hierarchy
Feb 02 18:05:56 <JavaWoman> so something to create a hierarchy will lead to
                            kluges because the basic structure doesn't really
                            support that
Feb 02 18:06:18 <JavaWoman> and is not *desiged* to support a hierarchy
Feb 02 18:06:51 <Freek_NL>  well it can be designed to be compatible with some
                            sort of hierarchy when you wish
Feb 02 18:07:25 <Freek_NL>  I think it should be done at the level of the
                            'child'
Feb 02 18:07:37 <JavaWoman> yes ... but there are other Wikis that are designed
                            to so this - some flat-file wikis store pages in a
                            directory tree: automatic hierarchy
Feb 02 18:08:01 <Freek_NL>  the child should be able to say 'yes I want to be
                            derived from my mommy'
Feb 02 18:08:32 <JavaWoman> :) so the child should adopt the parent? at the very
                            least it would require a change to the database,
                            like a "parent" column in the pages table
Feb 02 18:08:48 <Freek_NL>  yes, but that does not work in the end because files
                            can be linked to each other from various places and
                            well, wiki's are flat by design (arent they)
Feb 02 18:09:16 <Freek_NL>  no, because everyone is or can be a child and parent
Feb 02 18:09:17 <JavaWoman> you can have parents only if you store that in the
                            database
Feb 02 18:09:28 <JavaWoman> then an aunt could link to her sister's child :)
Feb 02 18:09:44 <Freek_NL>  but you could say that file X has n children namely:
Feb 02 18:09:54 <Freek_NL>  maybe you are right :-)
Feb 02 18:10:12 <Freek_NL>  incest?
Feb 02 18:10:22 <Freek_NL>  well incest aint that big of a deal in computing
Feb 02 18:10:42 <JavaWoman> still tricky since even with just storing a parent
                            you can get loops ad such, not a true hierarchy -
                            that really requires a different database design
Feb 02 18:11:17 <Freek_NL>  you have (in unix) parent/child processes and
                            children can have intimite relations including
                            piping their in and output to each other...
Feb 02 18:11:26 <Freek_NL>  they can even kill theirselves and family
Feb 02 18:11:44 <JavaWoman> yes, but don't the children know who their parents
                            are?
Feb 02 18:11:54 <Freek_NL>  yes they do
Feb 02 18:12:07 <JavaWoman> and can a process be "linked to " from several
                            others?
Feb 02 18:12:15 <Freek_NL>  they are connected to children and parents (wich
                            every 'object' can have)
Feb 02 18:12:32 <JavaWoman> so it's a true hierarchy - not a network
Feb 02 18:12:51 <Freek_NL>  not linked but their status (current parrent and
                            children) can be observed by other processes wich
                            can thus take that in account
Feb 02 18:12:55 <JavaWoman> you have a different data structure in that
                            situation
Feb 02 18:12:56 <Freek_NL>  yes
Feb 02 18:13:11 <Freek_NL>  yes, but I believe it is possible in this case as
                            well
Feb 02 18:13:14 <JavaWoman> Wikka is *designed* to be a network
Feb 02 18:13:27 <Freek_NL>  but yes you would need to change some stuff in the
                            database
Feb 02 18:13:29 <JavaWoman> and its data structure reflects that
Feb 02 18:13:57 <Freek_NL>  but this would only be "file x is my parent (there
                            can only be one parent=creator) and x,c and e are my
                            children)
Feb 02 18:13:59 <Freek_NL>  thats all
Feb 02 18:14:09 <JavaWoman> that's because the concept of HYPERlink is at its
                            root
Feb 02 18:14:22 <JavaWoman> the web is a network - not a hierarchy
Feb 02 18:14:36 <Freek_NL>  I know, but it does have parents and children
Feb 02 18:14:42 <Freek_NL>  everything is created once
Feb 02 18:15:02 <JavaWoman> "created" does not mean it has a parent
Feb 02 18:15:02 <Freek_NL>  altered many times and might have been removed
Feb 02 18:15:36 <Freek_NL>  true but if there from, new objects are formed they
                            do have parents
Feb 02 18:16:25 <JavaWoman> no, an object does not need to have parent - and
                            neither does a document, or - more general- a
                            resource
Feb 02 18:16:29 <Freek_NL>  meaning (also practicaly) that the relations can
                            start when a new object is formed
Feb 02 18:16:41 <Freek_NL>  but sometimes it does
Feb 02 18:16:54 <JavaWoman> no - think again - there can be a link *already*
                            from many different pages
Feb 02 18:17:02 <JavaWoman> before it's created
Feb 02 18:17:11 <Freek_NL>  and if the child gets the oppertunity to say "I love
                            my mommy and I want to be related to her" that
                            should be possible
Feb 02 18:17:35 <JavaWoman> the true "parent" would be the creaTOR, not which
                            page she happens to click on the link from
Feb 02 18:17:43 <Freek_NL>  yes, but thats why you should let the child decide
                            whether they want to belong to someone
Feb 02 18:18:13 <JavaWoman> why should a child *want* to belong to another page?
Feb 02 18:18:17 <Freek_NL>  true, and the createor decides what should hapen
Feb 02 18:18:27 <Freek_NL>  because the creator wants it that way
Feb 02 18:18:35 <Freek_NL>  of if he/she does not, she can choos not to
Feb 02 18:18:42 <JavaWoman> and what if the creator doesn't?
Feb 02 18:18:59 <JavaWoman> a hierarchy is more limiting than a network...
Feb 02 18:19:23 <Freek_NL>  they say "I dont want to belong to mom, I think I
                            can stand my man"
Feb 02 18:19:47 <Freek_NL>  sorry for over simplification, no offence meant
Feb 02 18:19:55 <JavaWoman> (That's precisely why I can't really relate to mind
                            mapping apps - they all want a hierarchy - and I
                            just don't think that way)
Feb 02 18:20:26 <Freek_NL>  I can imagine, I live in total chaos as well ;-)
Feb 02 18:20:33 <Freek_NL>  but if you could combine those
Feb 02 18:20:55 <JavaWoman> network != chaos...
Feb 02 18:20:58 <Freek_NL>  use for example the advantages from a mind mapping
                            tool with our inner chaos - why the hell not
Feb 02 18:21:09 <Freek_NL>  use a structure where handy
Feb 02 18:21:12 <Freek_NL>  and dont where its not
Feb 02 18:21:15 <JavaWoman> if I were a page I wouldn't even WANT to have to
                            choose - I'm me and that's enough
Feb 02 18:21:45 <Freek_NL>  You wont want a choice?
Feb 02 18:22:07 <JavaWoman> I have no inner chaos - but I do have an inner
                            network - that's why those tree-based mind mappers
                            don't "fit" MY mind
Feb 02 18:22:10 <Freek_NL>  I would like (in general and if I where a page too)
Feb 02 18:22:15 <JavaWoman> no, I don't want a choice
Feb 02 18:22:29 <JavaWoman> I don't wnat to have to *make* a choice, that is
Feb 02 18:22:54 <Freek_NL>  Srekel, would you like to have a choice?
Feb 02 18:23:13 <Freek_NL>  if you have the choice you dont have to configure
                            the acl's all over again
Feb 02 18:23:32 <Freek_NL>  .. derived from the standpoint of being lazy
Feb 02 18:23:54 <JavaWoman> ah, but you can "inherit" ACLs without needing to
                            have a parent....
Feb 02 18:24:41 <JavaWoman> except there's nothing to inherit *from* if you
                            create a page by creating a URL
Feb 02 18:24:48 <Freek_NL>  we shall await the wisdom of the Srekel
Feb 02 18:25:18 <Freek_NL>  true
Feb 02 18:25:31 <JavaWoman> (Srekel is now consulting the Orakel....)
Feb 02 18:25:37 <Freek_NL>  so you would only need to have the option to chose
                            once (upon creation)
Feb 02 18:26:34 <JavaWoman> It _is_ a good idea to be able to "choose" ACLs
                            immediately on creation of a page rather than having
                            to go back and change if needed
Feb 02 18:27:09 <Freek_NL>  shall we wait till Srekel has consulted the infinit
                            wisdom of the Orakle ?
Feb 02 18:27:20 <JavaWoman> (Srekel is now fighting Klumpen again, I guess)
Feb 02 18:27:33 <JavaWoman> (Klumpen is Srekel's cat)
Feb 02 18:27:38 <JavaWoman> :)
Feb 02 18:27:52 <JavaWoman> ping Srekel !
Feb 02 18:27:57 <Freek_NL>  lmao
Feb 02 18:28:30 <JavaWoman> You'll get less of a response out of ChanServ, I
                            guess
Feb 02 18:31:49 <Freek_NL>  however I am making great use of Wikka.
Feb 02 18:31:56             *   Freek_NL has found his wiki!
Feb 02 18:32:11 <JavaWoman> now that's good to hear :)
Feb 02 18:32:17 <Freek_NL>  JavaWoman, and I still think those ACL's are sweeeet
Feb 02 18:32:23 <JavaWoman> just get used to it being a network then ...
Feb 02 18:32:24 <Freek_NL>  gj girl
Feb 02 18:32:32 <Freek_NL>  .......
Feb 02 18:32:45 <Freek_NL>  we are still awaiting the response of your ping
Feb 02 18:32:54 <Freek_NL>  and Srekel s verdict
Feb 02 18:33:17 <JavaWoman> Well, with the old Greek Oracle it could take days,
                            I understand....
Feb 02 18:34:02 <JavaWoman> or maybe Srekel is off solving that permission
                            problem he has on the school's server ;-)
Feb 02 18:34:41 <JavaWoman> or maybe the firewall is blocking the ping echo?
Feb 02 18:34:57             *   JavaWoman has been configuring her new firewall
                            ...
Feb 02 19:18:16 <Srekel>    hey, back
Feb 02 19:18:23 <Srekel>    lemme read what you've said
Feb 02 19:20:36 <Freek_NL>  back
Feb 02 19:20:45 <Freek_NL>  cool, thanks
Feb 02 19:22:33 <Srekel>    ok, so you wanna know how I would like ACLs handled?
Feb 02 19:23:30 <Freek_NL>  well, for starters I would like to know whether you
                            would like to have a choice or not
Feb 02 19:23:35 <Freek_NL>  read that part?
Feb 02 19:24:07 <Freek_NL>  starting somewhere around: <JavaWoman> if I were a
                            page I wouldn't even WANT to have to choose - I'm me
                            and that's enough
Feb 02 19:24:30 <Freek_NL>  I say I do..., would you?
Feb 02 19:24:34 <Srekel>    I read it, but I'm not sure what you mean :) the
                            choice to set the ACL to the "parent"'s ACL?
Feb 02 19:27:53 <Freek_NL>  well my point is that _some_ hierarchy would be
                            usefull
Feb 02 19:28:28 <Freek_NL>  and one way to implement that is to let a page wich
                            is newly created have the option to inheratage its
                            'parents' ACL
Feb 02 19:28:52 <Freek_NL>  parent = document where its linked from
Feb 02 19:29:41 <Freek_NL>  anyways, the point is wheather one _should_ have the
                            option to assign ACL's to a newly created document -
                            copying the ACL setting from its parents
Feb 02 19:29:55 <Freek_NL>  do you understand what I mean with the 'child'
                            'parent' thing?
Feb 02 19:31:18 <Freek_NL>  How I understand JavaWoman her point of view is that
                            wiki's (Wikka) should not use _any_ hierarchy, for
                            its not designed for that and should not be, thus
                            she support a 'flat' way of storage (as far as i
                            understand her point of view)
Feb 02 19:32:24 <JavaWoman> no, I'm just saying that Wikka *is* designed that
                            way
Feb 02 19:32:39 <Srekel>    I agree that there should be no hierarchy in a wiki.
                            but, that doesn't change the fact that you can let a
                            page "inherit" the ACL value of the page that linked
                            to it
Feb 02 19:32:47 <JavaWoman> while there are other wikis that are designed to
                            support a hierarchy
Feb 02 19:32:58 <JavaWoman> each system has a different data model
Feb 02 19:33:37 <JavaWoman> a hierarchy cannot support a network and vice vera -
                            not without kluges which wil bite you at some later
                            time
Feb 02 19:34:04 <Srekel>    a simple copy-paste of ACL from the originating
                            page. after that, they won't have any kind of
                            relationship
Feb 02 19:34:14 <JavaWoman> I agree with Srekel - hierarchy is something
                            different than "inheriting" ACLs
Feb 02 19:36:12 <Freek_NL>  true
Feb 02 19:36:22 <Freek_NL>  so basically you can inherritage, but only once
Feb 02 19:36:42 <Freek_NL>  thus not dynamically linking ACL's for you would
                            create some hierarchy
Feb 02 19:37:39 <Freek_NL>  right?
Feb 02 19:38:00 <JavaWoman> right - which boils down to simply having a choice
                            for which ACLs to create at the moment you create a
                            page -
Feb 02 19:38:09 <Srekel>    but, so yes, I would like an option to "inherit" the
                            ACL or to set it to the standard found in the config
                            file
Feb 02 19:38:17 <JavaWoman> which in its turn depends on *how* you create that
                            page
Feb 02 19:38:25 <Srekel>    yeah
Feb 02 19:38:50 <Srekel>    the default for a page that is created just by
                            adding/edit is of course (?) reading from the
                            default config
Feb 02 19:39:01 <JavaWoman> yup
Feb 02 19:39:20 <Freek_NL>  true, so you would need the option to inheritage it
                            fromt a 'parent'
Feb 02 19:39:32 <Freek_NL>  ...instead of from the default
Feb 02 19:40:00 <JavaWoman> but I could imaginge an etra bit in the edit
                            interface (or /clone handler)  when creating a new
                            page that gives you the choice to set the ACLs
                            differently, rather than creating first and then
                            having to go back to adjust the ACLs
Feb 02 19:41:24 <Freek_NL>  so you would implement this feature on 'child' level
Feb 02 19:41:34 <Freek_NL>  on the level of the page wich is created, not where
                            its created from
Feb 02 19:41:51 <JavaWoman> exactly
Feb 02 19:42:15 <Freek_NL>  so we all agree on this ?
Feb 02 19:42:16 <JavaWoman> because when you create a page by creating a URL -
                            there really is nowhere it's created "from"
Feb 02 19:42:30 <Freek_NL>  indeed, it just has a creator
Feb 02 19:42:50 <Freek_NL>  wich is already nicely dealt with
Feb 02 19:42:53 <JavaWoman> - the owner-  who has to decide what ACLs to assign
Feb 02 19:43:18 <Freek_NL>  right, thats the most natural way to do this as well
                            in my opinion
Feb 02 19:43:35 <JavaWoman> it just would be handy to do it at the same time as
                            creating the page, rather than as an extra action
Feb 02 19:43:54 <Freek_NL>  both
Feb 02 19:43:59 <Freek_NL>  right
Feb 02 19:44:43 <JavaWoman> Srekel ?
Feb 02 19:44:45 <Freek_NL>  not both, sorry
Feb 02 19:44:50 <Freek_NL>  not possible
Feb 02 19:44:58 <Srekel>    JavaWoman, yes?
Feb 02 19:45:11 <JavaWoman> your opinion on this?
Feb 02 19:45:22 <JavaWoman> (or are you fighting Klumpen again?)
Feb 02 19:45:33 <Freek_NL>  lol
Feb 02 19:46:11 <Srekel>    lol :) no, was talking on the phone :)
Feb 02 19:46:28 <Srekel>    well, it sounds good to me
Feb 02 19:47:45 <Freek_NL>  I could put this stuff on the wiki somewhere
Feb 02 19:48:00 <JavaWoman> sure, write it up...
Feb 02 19:48:30 <Freek_NL>  Ill write the story and youl code it? ;-)
Feb 02 19:48:37 <JavaWoman> it might be a page on its own, and we could link to
                            it from several places ;-) (so it won't have a
                            parent...)
Feb 02 19:48:49 <Srekel>    haha :)
Feb 02 19:49:15 <Freek_NL>  Ill be the parent... bit young though ;-)
Feb 02 19:49:21 <JavaWoman> before I can code ANYTHING I need to get Alan back
                            to working order... - and then I have a load of
                            catching up to do
Feb 02 19:49:31 <Freek_NL>  20 and daddy already
Feb 02 19:49:52 <Freek_NL>  just kidding
Feb 02 19:50:08 <JavaWoman> but yes, I could see a way to do it that doesn't get
                            in the way of people who just want the default but
                            allows an options for those who want a different set
                            of ACLs right at page creation time
Feb 02 19:50:21 <JavaWoman> lol!
Feb 02 19:50:38 <JavaWoman> go ahead and start a page...
Feb 02 19:51:10 <Freek_NL>  wat is een goeie afkorting om weer te geven dat je
                            nog wat moppert, moed verzamelt en langzaam
                            aanstalte maakt?
Feb 02 19:51:10             *   Srekel is proud of his son Klumpen
Feb 02 19:51:19 <JavaWoman> LOL
Feb 02 19:51:42 <JavaWoman> nwmmveam?
Feb 02 19:51:44 <Srekel>    he's so good at removing the magnets from the
                            refridgerator :)
Feb 02 19:51:57 <JavaWoman> splorf!
Feb 02 19:52:36 <JavaWoman> (I get a lively mental image at that...)
Feb 02 19:55:51 <Freek_NL>  where would I add info like this? is there a
                            development area just for idea's or feature
                            propositions?
Feb 02 19:55:58 <Freek_NL>  or shall I add it to the mainpage ;-)
Feb 02 19:56:57 <Srekel>    haha, I bet :)
Feb 02 19:57:07 <JavaWoman> no, there isn't really an area that fits, except
                            SuggestionBox - but I think it should have a
                            discussion page on its own (given the discussion we
                            just had...); which you could then link to *from*
                            the SuggestionBox
Feb 02 19:57:32 <Freek_NL>  cool, thanks


Discussion and conclusions


Organization of pages
A really important aspect of this discussion deals with how one organizes pages in a Wiki:
How one wants to organize pages in a Wiki has important consequences for the design of the data structure to store the pages. In general, a flat-file storage system, where each page is a file in the file stystem, lends itself very well to a hierarchical structure by storing pages in directories and subdirectories. When pages are stored in a database table, a hierarchy can be accomplished only by storing "meta" data along with the pages to indicate and maintain the parent-child relationships.

While a database design that supports a hierarchy could conceivably support a pure network (by never assigning any page to a parent), the inverse is not true: a database that is designed only to support a network and doesn't have the data structures to describe a hierarchy cannot easily be adapted to support one. Most Wiki engines are designed for a pure hyperlinking network.

Like most wikis, Wikka's database design is intended for a pure network; a hierarchy would require a major redesign or extension of the database. If your application requires a hierarchy, WikkaWiki is not the wiki engine for you: there are other wiki engines that are designed to support a hierarchical structure of the pages in it.

ACLs and "inheritance"
When a new page is created in Wikka, it gets its ACLs (permissions for reading, writing and commenting) from the default as set in the configuration; as long as the ACLs for the page aren't edited, the default ACLs apply, even if those defaults are changed by the WikiAdmin after the creation of a page.

The page creator becomes page owner; if (s)he wants to set specific permissions for a page, (s)he will have to go back to the newly-created page to change the ACLs (only WikiAdmins and page owners can do that). In a hierarchical system, "inheriting" ACLs from the parent page would be natural; in a network system it's not that easy: a "missing" page can already be linked to from different pages, each with different ACLs, before it gets created from one of the links. Still, the idea of "inheriting" ACLs at the time of page creation is an attractive one.

Implementing ACL choice at page creation
To consider how this could be implemented in Wikka, we need to look at the various ways in which new pages can be created:
  1. By creating a URL with the new page name (and optionally immediately adding the /edit handler)
  2. By using the form presented by the "newpage" action
  3. By following a "missing page" link from another page and following the "create" link from the resulting dummy page
  4. By cloning from a template page
  5. By cloning from another (non-template) page
It's clear that in case 1. there is no relationship at all with any other page; if you want to set ACLs at page-creation time, the only options are to accept the configured default or set ACLs to specific values; case 2. is nearly identical, although the newpage action could be modified to pass on the page it's sitting on so that page could be used to copy ACLs from. Case 3. provides a clear choice: "inherit" ACLs from the page it was linked from (and which link was followed), with the default settings as an alternative. Case 4. is actually very much like the newpage action: the template provides the content only but a template's ACLs could deliberately be very restrictive and not apply to pages cloned from it: only default ACL settings or setting them to specific values would be applicable. Case 5. again provides an opportunity for "inheritance" where the page cloned from would provide not only content but also ACLs, with configured defaults or specific settings as alternatives.

Conclusion
In conclusion, it seems quite doable to provide a choice for setting ACLs at page creation time in Wikka, where the choices (logically) depend on what technnique is used to create a new page. If a page creator wants ACLs that are different from the configured system defaults, this would make page creation a one-step process instead of a two-step one.

Comments

Further comments are welcome, of course.



CategoryDevelopmentDiscussion
There are 3 comments on this page. [Show comments]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki