Hi all,
Apologies for asking about something that is un-Wiki-ish, and maybe a FAQ (but I couldn't find answers in the archives).
I need a "collaborative publication site". I.e. there's a group of (non-tech) people who want to collaboratively write a series of texts, and they want the texts to be readable as they are being created and edited. The writers actually form several groups, each of which is working on one set of pages (people may be members of more than one group, and pages may be writable for more than one group, i.e. there's no clear hierarchical structure). Finally, there's demand for "strictly internal" scratch pads, i.e. pages that aren't even readable unless you're logged in as a member of a specific group.
My idea was to have "user groups" in the wiki, and a per-page list of groups that may read or write it.
The docs were of limited help. A remark somewhere in them reads "it's possible to do your own permission scheme", but I found nothing that supported that claim. In fact all the permission stuff that's in Mediawiki seems to be hardcoded, at least a few quick greps indicated so.
My questions are: How do I go ahead? Are there better ways to achieve what we want?
I'm willing to do (limited) PHP coding, and I can change the database schema at a whim. (My primary profession is that of a software engineer, in case you wonder ;-)... )
Regards, Jo
Joachim Durchholz wrote:
My idea was to have "user groups" in the wiki, and a per-page list of groups that may read or write it.
The docs were of limited help. A remark somewhere in them reads "it's possible to do your own permission scheme", but I found nothing that supported that claim. In fact all the permission stuff that's in Mediawiki seems to be hardcoded, at least a few quick greps indicated so.
You can theoretically build a users/groups permissions scheme using the user_rights and cur_restrictions fields (both are comma-separated sets of text tokens and can be fairly arbitrarily extended), but as you noticed this isn't supported by the current code which is hard-coded and special-cased for a few values.
If you want to try this, start by rewriting Title::userCanEdit() and Title::userCanRead(), which control write and read access to given pages. You'd also need to add a more intelligent way to assign page permissions & user privileges.
My questions are: How do I go ahead? Are there better ways to achieve what we want?
Honestly, I'd recommend you just give all your users read/write permission to all pages... If they change things they're not supposed to it's recorded in the audit trail and incorrect changes can be easily reverted.
-- brion vibber (brion @ pobox.com)
Brion Vibber wrote:
If you want to try this, start by rewriting Title::userCanEdit() and Title::userCanRead(), which control write and read access to given pages. You'd also need to add a more intelligent way to assign page permissions & user privileges.
Thanks.
My questions are: How do I go ahead? Are there better ways to achieve what we want?
Honestly, I'd recommend you just give all your users read/write permission to all pages... If they change things they're not supposed to it's recorded in the audit trail and incorrect changes can be easily reverted.
Ira Abramov wrote:
as Brion mentioned, MediaWiki is built for openness, and will require quite some tweaking.
Well, I see user groups as a way to revert incorrect changes even before they happen ;-) I.e. user groups aren't dogma for me, they are just the first thing that comes to my mind. If there's a better way to achieve the desired behaviour, I'll gladly accept that.
It's just that I don't see that manual reversion is a viable alternative. If the project is successful, it will have with several hundred authors and several ten thousands of readers. Readers are encouraged to drop comments (and the Discussion pages of Mediawiki are perfect for that purpose), but they are definitely not supposed to alter the texts proper (that's a requirement, and I'd need extremely strong arguments to renegotiate that).
The "Wiki way" would be to allow changes and revert them if inappropriate. It's just that this isn't going to be a "real Wiki". There are pages that everybody is supposed to alter (such as Discussion pages, which are perfect for purposes of the project), and there are author pages that only the respective authors are supposed to alter. It's a somewhat artistic project, and to remain artistic, the artists must be able to say that "this-and-that page is what me and he and she and those wrote".
It's a kind of middle ground between a Wiki and a single-author WWW site: not everybody is allowed to do everything (as would be in a Wiki), and there's still a lot of collaboration going on.
I know that what I want is un-Wiki. It's just that the True Wiki Way is at an oh-so-slight angle from what I need, and I'd like to have (or pave) a road that suits both angles :-)
Ira Abramov wrote:
last time I looked at Twiki it seemed like a much better platform for such permission schemes, give it a look.
Actually I was quite active in the TWiki community for a while :-)
The main thing that makes TWiki unsuitable for the current project is that it's style is geared towards technical people. It's using CamlCase, its syntax requires several pages of text, it allows entering arbitrary HTML code (both a safety issue and a barrier against editing if a HTML nonexpert tries to modify an thoroughly HTMLized page), and I dimly remember the process of editing was geared to making techies comfortable. Mediawiki is geared towards non-techies, and that's the perfect match for more "artistic" projects like the forthcoming one.
I'm eager to hear additional advice and alternatives.
Regards, Jo
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi, I would be VERY interested in such an "extension" of the current Mediawiki, which makes fine-granulated user groups and collaborative, but still controlled "Wiki editing" possible. Just let me know if you need help for testing or "thinking" ;-).
Bye, Thommie - -- - --------------------------------------------------------------------- ~ THOMAS M. ROTHER * n e t z w i s s e n * D-73728 Esslingen ~ F.R. Germany, European Union * mailto:t.rother@netzwissen.de ~ http://www.netzwissen.de * GPG Key from http://wwwkeys.de.pgp.net ~ Fingerprint B208 E204 4249 4635 19B9 B691 3E73 C8B9 1229 DE4C - ---------------------------------------------------------------------
Quoting Joachim Durchholz, from the post of Wed, 30 Jun:
Finally, there's demand for "strictly internal" scratch pads, i.e. pages that aren't even readable unless you're logged in as a member of a specific group.
as Brion mentioned, MediaWiki is built for openness, and will require quite some tweaking. last time I looked at Twiki it seemed like a much better platform for such permission schemes, give it a look.
mediawiki-l@lists.wikimedia.org