2009-08-02T01:29:10  *** grzywacz has quit IRC
2009-08-02T01:32:55  *** amartani has joined #moin-dev
2009-08-02T05:17:44  <CIA-43> Alexandre Martani <amartani AT gmail DOT com> default * 6455:4b00d09f7008 2.0-storage-editor-amartani/ (47 files in 20 dirs): merge 2.0-storage
2009-08-02T11:33:04  <ThomasWaldmann>  moin
2009-08-02T13:40:51  *** tpfennig has joined #moin-dev
2009-08-02T13:55:48  *** y84 has joined #moin-dev
2009-08-02T13:58:02  <y84> how about a new acl right, "visible"
2009-08-02T13:58:24  <y84> to determine whether system even acknowleges that a page doesn't exist
2009-08-02T14:02:51  <ThomasWaldmann> you can easily detect whether a page exists, just try renaming another one to that name
2009-08-02T14:06:05  <ThomasWaldmann> (or trying to create a new page with that name)
2009-08-02T14:07:58  <y84> in those scenarios, the error message could read "not authorized" if the target page is invisible or otherwise not writable
2009-08-02T14:17:22  <ThomasWaldmann> but you know then that it does exist, so what's the point?
2009-08-02T14:18:30  <y84> there is a point in hierarchical mode
2009-08-02T14:19:16  <y84> if I wanted to create /mydir/myfile, but mydir had the invisible attribute, my file could be unauthorized, whether it exists or not
2009-08-02T14:20:49  <y84> I remember reading some Bruce Schneir article talking about visibility as one of the higher security levels a system could enforce
2009-08-02T14:21:18  <y84> "does a hostile even know the information exists?"
2009-08-02T14:22:34  <ThomasWaldmann> y84: maybe try that stuff with moin/2.0-storage
2009-08-02T14:22:41  <ThomasWaldmann> acls are a bit different there
2009-08-02T14:23:13  <ThomasWaldmann> currently we have read,write,create,destroy
2009-08-02T14:23:31  <ThomasWaldmann> revert is gone due to being pointless
2009-08-02T14:24:14  <ThomasWaldmann> delete is gone due to being a bit pointless and due to new trashbin-like implementation (which is rather a rename)
2009-08-02T14:24:45  <ThomasWaldmann> create is for being able to create new items
2009-08-02T14:25:02  <ThomasWaldmann> destroy is for total destruction of items or revisions
2009-08-02T14:25:39  <ThomasWaldmann> and we also still have admin for acl change, of course
2009-08-02T14:30:49  <y84> shouldn't it be two different permissions for "delete an page" vs "totally destroy a revision"?  In some cases, even if I granted admin rights to someone on some page, I wouldn't want them to be able to destroy revisions, but only to change ACL's
2009-08-02T14:33:00  <y84> maybe "read","write","visible","create","delete","destroy","admin"
2009-08-02T14:36:37  *** vinci_ has joined #moin-dev
2009-08-02T14:37:02  <y84> but as a special case, it might make sense to allow a user to totally replace the last revision if they were the other of it
2009-08-02T14:37:20  <ThomasWaldmann> y84: destroy will likely only be given to superuser-like people, if anyone
2009-08-02T14:38:42  <ThomasWaldmann> and for the normal "delete this page" in mm20 a rename-to-trashbin will happen, and that checks for write at src and dst
2009-08-02T14:39:03  <ThomasWaldmann> like the normal rename does it, too
2009-08-02T14:40:03  <ThomasWaldmann> and one has to check whether not having read is not what you want by not being visible
2009-08-02T14:40:58  <ThomasWaldmann> btw, I put some router/namespace ideas on http://moinmo.in/Storage2009, see at the bottom
2009-08-02T14:41:46  <ThomasWaldmann> dennda: the current code almost does that iirc
2009-08-02T14:43:16  <ThomasWaldmann> (i mean the router middleware, how acl mw wraps the backends has to be done a bit differently)
2009-08-02T14:46:00  <ThomasWaldmann> y84: btw, destroy is needed for multiple things:
2009-08-02T14:46:16  <ThomasWaldmann> a) removing content due to law requirements
2009-08-02T14:46:54  <ThomasWaldmann> b) purging old revisions that are not needed any more / thinning out of revisions
2009-08-02T14:47:10  <ThomasWaldmann> c) emptying the trashbin
2009-08-02T14:49:27  <ThomasWaldmann> btw, while we didn't care about b) in mm 1.x, it will get more important in 2.0 due to revisioning of any sort of item, including big binary items (that was unrevisioned attachment stuff in 1.x)
2009-08-02T14:51:35  <y84> then delta compression will be intrinsic?
2009-08-02T14:51:35  <ThomasWaldmann> y84: yes, it will be a problem then if people with admin rights are less trusted than needed for destroy
2009-08-02T14:52:21  <ThomasWaldmann> (but that is a very fundamental problem: people being able to change the rules should be most trusted)
2009-08-02T14:52:26  <y84> admin != superuser
2009-08-02T14:52:44  <y84> think "office admin" vs "boss"
2009-08-02T14:53:35  <y84> "destroy" vs "delete" seems adequate, though
2009-08-02T14:53:52  <y84> or, if other scenarios arise, perhaps "owner" (shudder) would be in order
2009-08-02T14:53:56  *** tpfennig has quit IRC
2009-08-02T14:55:14  <y84> or "own", to match the transitive verb style
2009-08-02T14:55:49  <ThomasWaldmann> i don't know of any reasonable concept of ownership in wikis
2009-08-02T14:57:17  <ThomasWaldmann> about delta compression: if you use hg backend, you will have bdiff
2009-08-02T14:57:56  <ThomasWaldmann> but: hg backend does not support destroy yet, not even by emulating it somehow
2009-08-02T15:00:48  <y84> how revision of big binary items be supported without delta compression?
2009-08-02T15:01:12  <y84>  s/how/how can/
2009-08-02T15:03:12  <ThomasWaldmann> moin itself doesn't care about that, this is the business of the backend implementation
2009-08-02T15:03:45  <ThomasWaldmann> so, if your backend impl. does bdiff or something similar, you have it, if it doesn't, you need more space
2009-08-02T15:04:24  <ThomasWaldmann> (or purge more / more often)
2009-08-02T15:06:48  <y84> if the backend doesn't have it, can the user disable attachment revisioning?
2009-08-02T15:07:14  <ThomasWaldmann> no (not yet?)
2009-08-02T15:08:18  <ThomasWaldmann> btw, for every backend with destroy-revision, disabling binary item revisioning has a similar effect than just purging often and much
2009-08-02T15:08:56  <ThomasWaldmann> except that purge is a bit more safe, because it usually won't purge ALL revs :D
2009-08-02T15:10:20  <ThomasWaldmann> if someone deletes an attachment in 1.8, it is gone and you need to pull it from your backup
2009-08-02T15:10:49  <ThomasWaldmann> i guess we won't offer that mode in 2.0 X)
2009-08-02T15:11:17  <ThomasWaldmann> dennda: wake up :)
2009-08-02T15:16:04  <waldi> its sunday, what do you expect?
2009-08-02T15:17:09  <ThomasWaldmann> some speeding up to compensate for offtime?
2009-08-02T15:17:30  <y84> rather than a user-option to disable attachment revisioning, perhaps that should be left to backend-storage configuration
2009-08-02T15:17:39  <ThomasWaldmann> ~2 weeks left
2009-08-02T15:17:59  <y84> e.g., backend could support an option to only keep X revisions of attachments
2009-08-02T15:18:13  <ThomasWaldmann> y84: there are already some (rather limited) backends, that do not revision
2009-08-02T15:18:43  <ThomasWaldmann> y84: there are no "attachments" any more
2009-08-02T15:19:01  <ThomasWaldmann> it is all items with different mimetypes
2009-08-02T15:19:11  <y84> that's still fine
2009-08-02T15:20:13  <y84> backends can decide how to handle revisions for various mimetypes
2009-08-02T15:20:58  <ThomasWaldmann> backends usually don't care about mimetypes
2009-08-02T15:22:04  <ThomasWaldmann> also, there is some danger if a backend does auto-purge following some rule
2009-08-02T15:23:04  <ThomasWaldmann> e.g. if the rule is to purge everything older than latest N revs for *.zip, someone just could upload N empty zips and kill your stuff that way
2009-08-02T15:24:20  <y84> in the current system, all they have to do is delete the attachment :)
2009-08-02T15:24:46  <ThomasWaldmann> yes, that's worse, but both is bad
2009-08-02T15:25:26  <y84> it'll never be perfect.  You can't have infinite revisions of large binaries
2009-08-02T15:25:46  <ThomasWaldmann> non-predictable purging is enough
2009-08-02T15:26:07  <y84> the buck stops at the storage backends.  They have to deal with available resources
2009-08-02T15:26:24  <ThomasWaldmann> TB disks are cheap
2009-08-02T15:26:31  <y84> TB is peanuts
2009-08-02T15:27:00  <y84> besides, in a production system, supporting TB disks means backing up TB disks, which gets more costly
2009-08-02T15:27:27  <ThomasWaldmann> (and I am not saying you should store infinitely, but just not predictably purge)
2009-08-02T15:27:56  <ThomasWaldmann> e.g. you could just run your wiki and see how it develops
2009-08-02T15:28:00  <y84> it's reasonable for the backend to accept various configuration options on how to deal with limited resources
2009-08-02T15:28:24  <ThomasWaldmann> if at some time you notice that space usage is too high, you will trigger a purge to reduce space usage
2009-08-02T15:28:49  <y84> better than having the rest of the wiki start trying to manage storage/revisioning policy
2009-08-02T15:29:19  <y84> I see.  that makes sense
2009-08-02T15:30:06  <ThomasWaldmann> that way $MEANGUY can't kill stuff by knowing some purge rule
2009-08-02T15:31:15  * waldi uses a backup to avoid this kind of problems
2009-08-02T15:31:27  <ThomasWaldmann> btw, some purge script is completely non-implemented currently
2009-08-02T15:37:33  <ThomasWaldmann> purge --max-reduce-space-percent=50 --min-keep-revs=100 --min-keep-days=100
2009-08-02T15:44:18  * dennda reads backlog
2009-08-02T15:47:38  <ThomasWaldmann> dennda:  I put some router/namespace ideas on http://moinmo.in/Storage2009, see at the bottom
2009-08-02T15:49:31  <dennda> ok
2009-08-02T15:52:13  * dennda travels home to his working machiene, bbiab
2009-08-02T16:21:04  <dennda> looks like significant change
2009-08-02T16:24:20  <ThomasWaldmann> why do you think so?
2009-08-02T16:26:19  <ThomasWaldmann> or, to be more precise: do you see specific problems?
2009-08-02T16:28:00  <dennda> I'm not sure I fully understood it. why for example do we impose the duty of taking care of acls on the admin instead of doing it automatically?
2009-08-02T16:30:26  <ThomasWaldmann> well, we obviously need different acl protection for different namespaces/backends
2009-08-02T16:31:02  <dennda> it would help if you could outline the benefits of this approach in comparison to the current one
2009-08-02T16:34:28  <dennda> i quite liked the idea of automated acl protection
2009-08-02T16:34:56  <ThomasWaldmann> you can lookup a backend by giving the namespace and don't have to use hardcoded attributes
2009-08-02T16:35:09  <ThomasWaldmann> you can add more namespaces easily
2009-08-02T16:35:54  <ThomasWaldmann> on the UI, you will have namespaces now (only 1 namespace before)
2009-08-02T16:37:02  <ThomasWaldmann> you can have different acl protection for different namespaces
2009-08-02T16:37:34  <dennda> what's the exact difference between these namespaces and mounting namespaces? i.e., why Trash: as opposed to Trash/?
2009-08-02T16:37:36  <ThomasWaldmann> one quite obviously needs that for User: and FS: stuff
2009-08-02T16:38:20  <ThomasWaldmann> Trash: is not inside, but in parallel to Content:
2009-08-02T16:38:56  <ThomasWaldmann> if you just give itemname "Foo" in the URL, it will map that to "Content:Foo" automatically
2009-08-02T16:39:18  <dennda> why? we could also automatically create a page for each user with appropriately chosen acls
2009-08-02T16:40:00  <ThomasWaldmann> on-page acls have a different application than global acls
2009-08-02T16:40:56  <ThomasWaldmann> also, trashed items will not show on TitleIndex, because TitleIndex will just list Content:*
2009-08-02T16:41:29  <ThomasWaldmann> and if we do the User: namespace, same will be true for user homepages
2009-08-02T16:41:35  <dennda> why do we want to seperate userpages?
2009-08-02T16:42:03  <ThomasWaldmann> to make it easier to see the real wiki content if not buried between 1000 user homepages?
2009-08-02T16:42:50  <ThomasWaldmann> just look at TitleIndex on moinmo.in :)
2009-08-02T16:42:56  <dennda> so on that user backend, noone would have 'create'?
2009-08-02T16:43:19  <ThomasWaldmann> user profile or user homepage?
2009-08-02T16:43:24  <dennda> hp
2009-08-02T16:43:48  <ThomasWaldmann> of course you need create there, how else would you create your homepage?
2009-08-02T16:43:52  <dennda> because then you cannot create subpages
2009-08-02T16:44:16  <dennda> by having it automatically created and 'write' granted
2009-08-02T16:44:24  <ThomasWaldmann> there is nothing bad about hp subpages
2009-08-02T16:45:20  <ThomasWaldmann> one could enforce such kinds of policies, but that's not the point
2009-08-02T16:45:31  <dennda> ok so things we'd need to change for this:
2009-08-02T16:46:31  <dennda> router (degrading it. not that important anymore. namespace takes over it's job as storage startingpoint)
2009-08-02T16:46:45  <ThomasWaldmann> no
2009-08-02T16:47:10  <ThomasWaldmann> router is almost the same code, it handles namespace/routing with minor changes
2009-08-02T16:47:33  <dennda> didn't you say you'd want that seperate?
2009-08-02T16:47:48  <ThomasWaldmann> yes, until I found that it is rather the same thing
2009-08-02T16:48:13  <ThomasWaldmann> it just maps prefixes to backends
2009-08-02T16:48:22  <dennda> hm perhaps a subclass that strips the namespace away and passes on to router then?
2009-08-02T16:48:51  <ThomasWaldmann> no matter whether that prefix is just a namespace prefix or includes some mountpoint so it ends up as mount within another namespace
2009-08-02T16:49:57  <dennda> itemname.split(':')
2009-08-02T16:50:05  <dennda> ?
2009-08-02T16:50:11  <ThomasWaldmann> i think we should try it with minor changes, don't see right now why it shold not work
2009-08-02T16:50:23  <ThomasWaldmann> and please read the whole text i put on the page
2009-08-02T16:50:30  <dennda> i did
2009-08-02T16:50:51  <ThomasWaldmann> because NameSpace/ItemName is maybe even easier
2009-08-02T16:51:44  <ThomasWaldmann> (no problem with ACL syntax, hier acls, ...)
2009-08-02T16:52:52  <dennda> hm ok. so where do we start now?
2009-08-02T16:53:13  <ThomasWaldmann> we start with you pointing me to problems I have overseen :)
2009-08-02T16:53:29  <ThomasWaldmann> overlooked I mean
2009-08-02T16:53:58  <ThomasWaldmann> just think about it, check the router code, play through all usage scenarios we need
2009-08-02T16:54:06  <ThomasWaldmann> I'll be back in 15mins
2009-08-02T16:54:47  <waldi> urgs, this push was a bad idea ...
2009-08-02T16:55:25  <waldi> runs over an hour now
2009-08-02T17:06:16  <ThomasWaldmann> waldi: do we have to duck now?
2009-08-02T17:06:34  <CIA-43> Bastian Blank <bblank@thinkmo.de> default * 6932:71b2c1c4a419 2.0-storage-dom-bblank/ (208 files in 44 dirs): Merge moin/2.0-storage
2009-08-02T17:09:52  * ThomasWaldmann .oO(No, because my not-generally-useful dupechecker works :)
2009-08-02T17:10:44  <ThomasWaldmann> dennda: so, what did your wetware output until now?
2009-08-02T17:10:48  <waldi> ThomasWaldmann: can I cleanup the table attributes as we need to have a converter anyway?+
2009-08-02T17:11:32  <ThomasWaldmann> waldi: you could write the converter first, then no need to ask :D
2009-08-02T17:11:35  <waldi> new-style attributes works now really pretty
2009-08-02T17:12:02  <dennda> I'll add it to the wiki page
2009-08-02T17:12:27  <ThomasWaldmann> ok
2009-08-02T17:13:05  <ThomasWaldmann> amartani: dennda: dimazest: dreimark: waldi: meeting in ~45mins
2009-08-02T17:13:40  <ThomasWaldmann> dreimark did excuse because of being on the road / in holidays
2009-08-02T17:15:05  <dennda> ThomasWaldmann: Added my first bunch of thoughts
2009-08-02T17:15:06  <dennda> more to come
2009-08-02T17:15:55  <dennda> as a sidenote: initially I tried to seperate the stuff in the routerbackend as /Content, /Trash and /User, but did not implement it that way back then because ... dunno. Maybe there was some problem I can't remember atm or it was just easier doing it like this
2009-08-02T17:16:10  <dennda> brb
2009-08-02T17:17:42  <dennda> "as is" modulo user stuff
2009-08-02T17:19:13  <ThomasWaldmann> btw, with that approach we have
2009-08-02T17:19:32  <ThomasWaldmann> a) on the very top level: all is traverseable
2009-08-02T17:20:03  <ThomasWaldmann> b) one level deeper (the level the normal wiki user more or less is seeing): most is separated
2009-08-02T17:22:16  <ThomasWaldmann> dennda: you can always do something like that enduser backend, that makes up a configuration
2009-08-02T17:22:57  <ThomasWaldmann> and (IMHO) the only reasonable ways are
2009-08-02T17:23:08  <ThomasWaldmann> a) either do it all automatically (see enduser be)
2009-08-02T17:23:18  <ThomasWaldmann> b) let the admin configure it completely
2009-08-02T17:23:54  <ThomasWaldmann> if you try to be clever and read someone's mind, that'll fail
2009-08-02T17:24:33  <ThomasWaldmann>  * Perhaps cascaded configuration for routing configuration within one namespace < that means?
2009-08-02T17:25:28  <dennda> let me make up an example
2009-08-02T17:25:37  <dennda> that's just a side not on configuration cosmetics
2009-08-02T17:25:45  <ThomasWaldmann> userprofile view: sure, because it needs to visualize item meta
2009-08-02T17:26:34  <ThomasWaldmann> (but that doesn't need to hold use back as we currently have no "web view" of that either)
2009-08-02T17:28:23  <dennda> yeah that's why it's only a NB
2009-08-02T17:28:26  <ThomasWaldmann> iteritems/backup: needs to be decided based on different things whether to use acl or not. for backup, it is likely done by superuser, so no difference whether with or without acls.
2009-08-02T17:29:14  <ThomasWaldmann> what does "changing the acl stuff" mean?
2009-08-02T17:30:23  <dennda> http://paste.pocoo.org/show/132194/
2009-08-02T17:30:35  <dennda> Well we'll need different AMWs dependant on backend type, no?
2009-08-02T17:31:37  <ThomasWaldmann> what's the difference except that it needs more parens?
2009-08-02T17:31:46  <waldi> *urgs* I implemented lists wrong
2009-08-02T17:32:26  <dennda> that you can pass mapping['Content:'] on to a subrouterbackend
2009-08-02T17:32:52  <ThomasWaldmann> dennda: well, the user_acl wrapper will be quite trivial at the beginning: just deny all :)
2009-08-02T17:33:53  <ThomasWaldmann> similar for fileserver: just allow read
2009-08-02T17:34:13  <dennda> fileserver == ?
2009-08-02T17:34:28  <ThomasWaldmann> wiki server filesystem access, see storage backends
2009-08-02T17:34:55  <ThomasWaldmann> and, if we just make the acl wrapper a bit less hard-coded, it can do that all.
2009-08-02T17:35:15  <dennda> is that really an ACL problem or rather a technical implementation problem/danger?
2009-08-02T17:35:21  <ThomasWaldmann> i.e. move acl_rights_before/default/after to acl wrapper init
2009-08-02T17:35:28  <dennda> (analogy: we don't have read_only acl for fs19 either)
2009-08-02T17:35:57  <ThomasWaldmann> the problem is that if we don't do it with acls, then the UI will show edit, but you can't
2009-08-02T17:36:50  <ThomasWaldmann> i.o.w.: it will not fail early
2009-08-02T17:37:23  <dennda> hm ok
2009-08-02T17:37:42  <ThomasWaldmann> your last point: well, that is exactly what I am suggesting :P
2009-08-02T17:37:43  <dennda> I don't know anything about secpol
2009-08-02T17:38:01  <ThomasWaldmann> or almost, at least
2009-08-02T17:38:12  <dennda> well yeah, unfortunately I can't remember why I chose not to do it like this in the first place
2009-08-02T17:38:32  <ThomasWaldmann> you could read your diary :D
2009-08-02T17:38:40  <dennda> I *knew* you were gonna say that
2009-08-02T17:39:04  <ThomasWaldmann> :P
2009-08-02T17:39:16  <dennda> i'll update that later btw
2009-08-02T17:39:24  <ThomasWaldmann> can you refactor your problem section to display the current state?
2009-08-02T17:39:32  <dennda> of what?
2009-08-02T17:39:43  <ThomasWaldmann> of knowledge
2009-08-02T17:39:52  <ThomasWaldmann> or mindset
2009-08-02T17:40:16  <ThomasWaldmann> btw, one param the current storage backend api is missing, is some sort of namespace param
2009-08-02T17:40:37  <ThomasWaldmann> we currently have that in some path=, later maybe in some table= argument
2009-08-02T17:41:25  <dennda> where exactly is it missing and how would it be used
2009-08-02T17:41:28  <ThomasWaldmann> if we had that, we could even give the same non-protected backend object to different namespace entries
2009-08-02T17:42:08  <ThomasWaldmann> current you do user_backend = FS('data/user'); pages_backend = FS('data/pages'); or so
2009-08-02T17:42:24  <ThomasWaldmann> (no acl wrapping there)
2009-08-02T17:43:47  <ThomasWaldmann> it could be also: user_backend = FS('data', namespace='user'); pages_backend = FS('data', namespace='pages')
2009-08-02T17:44:28  <ThomasWaldmann> (that would streamline be configuration a bit, for hg, fs, database)
2009-08-02T17:44:54  <dennda> and how would that work internally?
2009-08-02T17:45:21  <ThomasWaldmann> it would make up what it needs internally. like assembling some path, using different tables, ...
2009-08-02T17:46:14  <ThomasWaldmann> but that's just a rather cosmetic thing
2009-08-02T17:46:26  <dennda> I'm not sure the FS backend, as an example, could be changed to work like that easily
2009-08-02T17:47:07  <ThomasWaldmann> sure, in init it would just have a os.path.join(path, namespace) more :)
2009-08-02T17:48:18  <dennda> that sounds like it comes down to the same thing we already have
2009-08-02T17:48:36  <ThomasWaldmann> you likely do that in enduser right now
2009-08-02T17:48:44  <ThomasWaldmann> but that doesnt help the power users
2009-08-02T17:49:34  <ThomasWaldmann> ok, i guess your have to prepare your NEXT: paste :)
2009-08-02T17:50:17  <dennda> oh yeah, 10 mins left
2009-08-02T17:50:23  <dennda> that's gonna be a looong night
2009-08-02T17:51:45  * ThomasWaldmann suggests not longer than 00:00 because you have a date at 09:00 tomorrow :)
2009-08-02T17:53:07  <ThomasWaldmann> amartani: dimazest: are you with us?
2009-08-02T17:53:15  <dennda> with my alarm clock?
2009-08-02T17:53:15  <amartani> yes
2009-08-02T17:53:47  <ThomasWaldmann> dennda: no, that one should be even a bit earlier :)
2009-08-02T17:54:37  <dennda> i hope it still works
2009-08-02T17:54:45  <CIA-43> Bastian Blank <bblank@thinkmo.de> default * 6933:7cf06d38fa45 2.0-storage-dom-bblank/MoinMoin/converter2/moinwiki_in.py: Moin Wiki input converter - Support new-style table arguments
2009-08-02T17:54:47  <CIA-43> Bastian Blank <bblank@thinkmo.de> default * 6934:8f7675de04b2 2.0-storage-dom-bblank/MoinMoin/converter2/ (_tests/test_moinwiki_in.py moinwiki_in.py): Moin Wiki input converter - Support definition lists
2009-08-02T17:54:48  <CIA-43> Bastian Blank <bblank@thinkmo.de> default * 6935:4ac291cab0b4 2.0-storage-dom-bblank/MoinMoin/converter2/_tests/test_moinwiki_in.py: Tests for Moin Wiki input converter - Fix and add some list tests
2009-08-02T17:54:51  <dennda> it went on a journey 'cross my room recently
2009-08-02T17:55:00  <ThomasWaldmann> hehe
2009-08-02T17:55:05  <dennda> phone, brb
2009-08-02T17:55:10  <ThomasWaldmann> man 5 crontab
2009-08-02T17:55:38  <ThomasWaldmann> dimazest: huhu
2009-08-02T17:56:38  <dimazest> ThomasWaldmann: hi
2009-08-02T17:57:01  <dennda> oh boy.
2009-08-02T17:57:18  <dennda> my mother just informed me that it's my fathers birthday tomorrow. good thing I'm not there (yet) %-)
2009-08-02T17:57:40  <waldi> dennda: haha
2009-08-02T17:57:50  <dennda> suggest a present
2009-08-02T17:58:05  <dennda> something that is quickly organized
2009-08-02T17:59:45  <ThomasWaldmann> a coupon about some free computer maintenance hours :)
2009-08-02T18:00:51  <ThomasWaldmann> anyway, welcome to today's meeting. note: we have about 2 weeks left for coding.
2009-08-02T18:01:09  <ThomasWaldmann> dennda: please begin
2009-08-02T18:01:35  <dennda> LAST: Introduced 'create'. Syspage upgrade UI. Started to rip out all the underlay stuff. Replaced now by syspages.xml. Fixes/tests.
2009-08-02T18:01:38  <dennda> NEXT: Rip out userbackend specialcasing in router backend. Make it work according to what we just discussed.
2009-08-02T18:01:41  <dennda> BLOCKERS: None
2009-08-02T18:02:20  <ThomasWaldmann> where's that syspage upgrade ui?
2009-08-02T18:03:08  <dennda> http://hg.moinmo.in/moin/2.0-storage/file/3e2152deb8c0/MoinMoin/action/syspages_upgrade.py
2009-08-02T18:04:15  <ThomasWaldmann> hmm, not sure we can keep that this way
2009-08-02T18:04:32  <ThomasWaldmann> but we can discuss that later
2009-08-02T18:04:34  <dennda> Let's discuss that later or xorAxAx is gonna kill us
2009-08-02T18:04:40  <ThomasWaldmann> :)
2009-08-02T18:05:18  <ThomasWaldmann> questions for dennda?
2009-08-02T18:05:32  <ThomasWaldmann> xorAxAx: waldi: ?
2009-08-02T18:06:10  <ThomasWaldmann> dennda: maybe one from me: how much work time do you estimate for sqla backend working?
2009-08-02T18:06:24  <dennda> that's another thing I'd like to discuss with you later
2009-08-02T18:06:27  <waldi> no
2009-08-02T18:06:59  <dennda> will not be built in a day
2009-08-02T18:07:05  <ThomasWaldmann> ok, thanks dennda. amartani: you're next
2009-08-02T18:07:25  <amartani> LAST: Avaliated possibility of adding syntax highlight, worked with EditArea, but it will be very slow with big texts. Add configuration to let mobwrite run as a daemon. Worked on some bugs and usability.
2009-08-02T18:07:30  <amartani> NEXT: Reduce requests and save more state informations. Work on usability issues.
2009-08-02T18:07:35  <amartani> BLOCKERS: None.
2009-08-02T18:08:29  <ThomasWaldmann> amartani: do you think you could do some basic css for the editor next week also?
2009-08-02T18:09:13  <amartani> ThomasWaldmann: to make it look more like 1.9?
2009-08-02T18:09:37  <ThomasWaldmann> maybe, but not necessarily, just to make it look less crappy :D
2009-08-02T18:10:11  <ThomasWaldmann> and also please look at the bugs that can lead to data loss.
2009-08-02T18:10:28  <amartani> ok, I can do it.
2009-08-02T18:10:54  <ThomasWaldmann> more questions for amartani? maybe from his mentor? :)
2009-08-02T18:11:25  <ThomasWaldmann> xorAxAx: did you have a look at his stuff?
2009-08-02T18:11:31  <xorAxAx> no, not yet
2009-08-02T18:11:40  <waldi> amartani: you feared that ading the buttons need for sharing via javascript is problematic, why?
2009-08-02T18:11:48  <amartani> ThomasWaldmann: I have to ask some things about your comments later
2009-08-02T18:11:56  <ThomasWaldmann> "Time flies like an arrow, ..."
2009-08-02T18:12:34  <waldi> ThomasWaldmann: no, like a canine
2009-08-02T18:12:40  <ThomasWaldmann> waldi: i guess he meant that stuff moves around while user looks at it
2009-08-02T18:12:57  <ThomasWaldmann> "... Fruit flies like a Banana."
2009-08-02T18:13:08  <amartani> waldi: imagine it takes some time to load the javascript, so before it loads, the browser already draws the buttons
2009-08-02T18:13:33  <amartani> when js is executed, it inserts a button in the middle, changing the place of other buttons
2009-08-02T18:13:59  <waldi> amartani: take a look at the search and actions box. we already do that
2009-08-02T18:14:56  <ThomasWaldmann> ok, more later :)
2009-08-02T18:15:07  <ThomasWaldmann> dimazest: are you ready?
2009-08-02T18:15:11  <dimazest> yes
2009-08-02T18:15:17  <dimazest> LAST: queryparser.AndExpression and TextSearch xapian_term were refactored to return query for xappy. Search class was splitted on MoinSearch and XapianSearch.
2009-08-02T18:15:21  <dimazest> NEXT: Refactor remaining classes in queryparser.py. Refactor indexing of atachements and files.
2009-08-02T18:15:24  <dimazest> BLOCKERS: none
2009-08-02T18:15:31  <ThomasWaldmann> reimar is still on the road, but I guess he will join us tomorrow
2009-08-02T18:16:07  <ThomasWaldmann> dimazest: is the query api like see by the wiki user still the same?
2009-08-02T18:16:07  <dimazest> this week i was quite slow because o need to understand code
2009-08-02T18:16:23  <dimazest> ThomasWaldmann: yes, i do not change the parser
2009-08-02T18:16:48  <ThomasWaldmann> currently there is still xapwrap code used, right?
2009-08-02T18:16:51  <dimazest> just creation of the Xapian.query
2009-08-02T18:18:14  <ThomasWaldmann> ok, the sooner we get rid of xapwrap, the better (you remove the MoinMoin.support.xapwrap please if no caller is left)
2009-08-02T18:18:17  <dimazest> yes
2009-08-02T18:18:33  <ThomasWaldmann> more questions?
2009-08-02T18:19:00  <ThomasWaldmann> dimazest: does xappy 0.5 offer some new stuff related to sort results ordering?
2009-08-02T18:19:31  <dimazest> yes
2009-08-02T18:19:41  <dimazest> and it is used already in a new code
2009-08-02T18:20:26  <dimazest> any questions to me?
2009-08-02T18:20:44  <ThomasWaldmann> cool :) any visible changes in results?
2009-08-02T18:21:19  <dimazest> i can not say
2009-08-02T18:21:28  <dimazest> because not everything is indexed
2009-08-02T18:21:30  <ThomasWaldmann> (we can also discuss that after official part, which is closed by now if noone has questions. thanks for participating.)
2009-08-02T18:21:39  <dimazest> ok
2009-08-02T18:21:43  * ThomasWaldmann pulls the power plug
2009-08-02T18:21:47  <dimazest> i need to go
2009-08-02T18:22:05  <dimazest> c u
2009-08-02T18:22:18  <ThomasWaldmann> dimazest: e.g. attachments and subpages being listed after their parents
2009-08-02T18:22:20  <ThomasWaldmann> cu
2009-08-02T18:22:55  <ThomasWaldmann> amartani: any comments about the chat idea?
2009-08-02T18:24:10  <amartani> ThomasWaldmann: it can be done, if you think it is a good idea..
2009-08-02T18:24:45  <ThomasWaldmann> well, i guess if a few people edit the same document, they might have some communications need about that.
2009-08-02T18:25:34  <ThomasWaldmann> so, if they don't have irc/jabber/phone ..., having it in another part of the moin display would be nice.
2009-08-02T18:26:13  <ThomasWaldmann> and, just as a vague idea: if you just sync some hidden json "document", you could do all sorts of stuff rather easily, right?
2009-08-02T18:26:20  <amartani> yes, probably. I will the the other issues first..
2009-08-02T18:26:41  <ThomasWaldmann> yeah, bug fixes have priority, of course.
2009-08-02T18:26:57  <amartani> Won't it be a bit dangerous?
2009-08-02T18:27:10  <ThomasWaldmann> why?
2009-08-02T18:28:20  <ThomasWaldmann> (/me has no clue about advanced js stuff, so take my suggestions with a grain of salt)
2009-08-02T18:28:23  <amartani> depending on what this hidden json would have, but things like who is editing can't be altered by everyboy
2009-08-02T18:28:34  <waldi> ThomasWaldmann: executable code
2009-08-02T18:28:51  <waldi> json have to be considered executable code
2009-08-02T18:29:05  <amartani> executable code can be avoided using a parser
2009-08-02T18:31:48  <ThomasWaldmann> hmm, maybe it needs a r/o part, that just syncs from server -> clients, and some r/w parts that syncs in all directions
2009-08-02T18:31:49  <amartani> do you have plans to use jquery or some other js lib (so that all these things are easily available)?
2009-08-02T18:32:39  <ThomasWaldmann> i had a short look at jquery, but as I said: i have no clue about adv. js, so I am not the right person to choose such a thing.
2009-08-02T18:34:38  <xorAxAx> jquery is the defacto standard
2009-08-02T18:34:44  <xorAxAx> and its a nice library
2009-08-02T18:36:15  <ThomasWaldmann> amartani: for what exactly would you use jquery?
2009-08-02T18:37:02  <ThomasWaldmann> dennda: how about sqla worktime?
2009-08-02T18:37:25  <amartani> ThomasWaldmann: I think it will be easier and safer to simply use posts that returns json, so we need to explicitly parse the data, than to keep verifying if the client altered something not allowed.
2009-08-02T18:38:55  <dennda> ThomasWaldmann: difficult to say that precisely. it will certainly take some time
2009-08-02T18:40:03  <dennda> I would not rely on getting it done properly in less than 5 days (very rough estimate)
2009-08-02T18:40:04  <amartani> ThomasWaldmann: there is no strong need, just that many things become easier. eg, it includes json parser, I can include also separatelly, but if after someone else needs other things, he will have a bunch of small libs that could be only jquery.
2009-08-02T18:40:25  <ThomasWaldmann> amartani: well, my idea was to keep global state synchronised somehow in all editor sessions
2009-08-02T18:41:03  <amartani> it also helps avoiding browser bugs, as they include many necessary browser hacks. eg, even a simple request can cause memory leak on IE6.
2009-08-02T18:41:04  <ThomasWaldmann> including: "is this saved?", "when?", "by whom?", chat window contents
2009-08-02T18:41:40  <dennda> ThomasWaldmann: do you want 'Content/', 'Users/' and 'Trash/' be user customizable or can I rely on those specific strings as namespace denominators?
2009-08-02T18:41:59  <dennda> .oO(denominator??)
2009-08-02T18:42:45  <ThomasWaldmann> dennda: that should be some constants defined somewhere
2009-08-02T18:43:07  <dennda> well yes, but does the user define them?
2009-08-02T18:43:13  <dennda> because then what I need to do is like:
2009-08-02T18:43:22  <dennda>     user_prefix = request.cfg.storage.USER_PREFIX
2009-08-02T18:43:22  <dennda>     all_users = request.cfg.storage.get_backend(user_prefix).iteritems()
2009-08-02T18:44:16  <ThomasWaldmann> yes, use cf
2009-08-02T18:44:17  <ThomasWaldmann> g
2009-08-02T18:44:33  <amartani> ThomasWaldmann: I think these informations shouldn't be handled by clients. Displaying a wrong "is this saved" won't kill anybody, but if we can avoid it, better.
2009-08-02T18:44:47  <ThomasWaldmann> dennda: and the final / is handled by the code iirc
2009-08-02T18:46:32  <dennda> ThomasWaldmann: that will also impose the requirement that request.cfg.storage is a routerbackend or something else that has get_backend(prefix)
2009-08-02T18:47:04  <ThomasWaldmann> looks like
2009-08-02T18:47:10  <dennda> ok
2009-08-02T18:56:34  <ThomasWaldmann> hmm, I guess I have a deja vue... (setting up ACL stuff in config vs. setting up group stuff in config)
2009-08-02T18:57:15  <dennda> I don't
2009-08-02T18:59:17  <ThomasWaldmann> acl mw is the only backend that needs request, but we do not have request in the cfg...
2009-08-02T19:04:28  <dennda> having user defined prefixes for the essential things (content, user, trash) is a pain in the ass for no gain if you ask me
2009-08-02T19:04:49  <dennda> at least I fail to see the gain but stumble over it here quite heavily
2009-08-02T19:05:30  <dennda> e.g. what happens if somebody does routerbackend.get_item('')
2009-08-02T19:05:56  <dennda> it should return the item for Content:'' (virtual '')
2009-08-02T19:06:24  <dennda> now how does it know which of the prefixes is the content prefix?
2009-08-02T19:06:33  <dennda> you'd need to tell it upon initialization
2009-08-02T19:06:50  <amartani> ThomasWaldmann: in your comment about caching scope, I had a look at 1.9 and it stores things at data/pages/{page name}/, doesn't it have the same problem?
2009-08-02T19:06:56  <dennda> currently I have DATA_PREFIX = 'Content/'
2009-08-02T19:07:56  <dennda> but you'd need DATA_PREFIX = ('Content', 'Content/'), where the first Content is a constent that may not be changed by the user so the router middleware can check which prefix is the content prefix
2009-08-02T19:08:19  <dennda> and if we do that, we can as well just keep it simple and hardcode those essential prefixes
2009-08-02T19:08:37  <dennda> unless I'm missing something obvious
2009-08-02T19:10:14  <ThomasWaldmann> dennda: the gain will be there if some german company asks "can we have Benutzer: instead of User:"
2009-08-02T19:11:23  <dennda> ok valid argument
2009-08-02T19:11:35  <ThomasWaldmann> amartani: the point is not cluttering the cache directory, but using some subdir
2009-08-02T19:11:52  <ThomasWaldmann> the pages dir is the old page storage, and it is gone in 2.0
2009-08-02T19:12:09  <dennda> so I should go the way I sketched? (with ('Content', 'Content/') or something similar)
2009-08-02T19:13:13  <ThomasWaldmann> you will get the item name from the url
2009-08-02T19:13:51  <ThomasWaldmann> so, if we use NameSpace/ and not NameSpace:, you will just match against the list
2009-08-02T19:14:08  <dennda> and what happens for moinmo.in/ ?
2009-08-02T19:14:10  <ThomasWaldmann> and yes, the default namespace has to be known to router
2009-08-02T19:14:39  <ThomasWaldmann> that will be Content internally
2009-08-02T19:14:43  <dennda> can we just rely on: last/first in mapping --> default?
2009-08-02T19:14:57  <dennda> or is that too implicit?
2009-08-02T19:15:07  <ThomasWaldmann> no need
2009-08-02T19:15:21  <ThomasWaldmann> and won't work
2009-08-02T19:15:55  <ThomasWaldmann> default will be just if you reach the end of the loop without match
2009-08-02T19:16:50  <ThomasWaldmann> btw, look at the Storage2009 page
2009-08-02T19:16:56  <dennda> and how does it *know* which of the mapping backends to return then?
2009-08-02T19:17:10  <dennda> (as the default)
2009-08-02T19:18:26  <ThomasWaldmann> because the content_prefix is known?
2009-08-02T19:18:55  <ThomasWaldmann> and it just does another lookup with it prepended to what it has?
2009-08-02T19:20:08  <dennda> so the content_prefix needs to be provided as an additional argument to the router upon initialization?
2009-08-02T19:21:04  <amartani> ThomasWaldmann: I don't get the problem than. Each page has a directory, and these directories are in cache/page/, which only contains per-page entries.
2009-08-02T19:22:12  <ThomasWaldmann> dennda: yes, and if it is none, it could read it from request.cfg.content_prefix. so request needs to be provided.
2009-08-02T19:23:00  <amartani> and is the cache dir shared by the farm?
2009-08-02T19:23:09  <ThomasWaldmann> amartani: there will be thousands of directories. and if some page name is colliding with a name of a cache/* dir, you'll get things mixed up
2009-08-02T19:23:10  <dennda> ThomasWaldmann: Well, there's another way. Currently order in the mapping is important and the last backend must be mapped to '/'. We could still say order is important and the last prefix provided is the default prefix. that's what I meant.
2009-08-02T19:24:52  <ThomasWaldmann> better be explicit than implicit
2009-08-02T19:27:41  <ThomasWaldmann> when i am finished with that, we really need an enduser wrapper :D
2009-08-02T19:28:45  <dennda> and I need to see a therapist :D
2009-08-02T19:29:39  <dennda> i like how fast syspages conversion is by not using underlay.tar
2009-08-02T19:29:48  <dennda> i can even use a membackend for testing again %-)
2009-08-02T19:36:15  <dennda> ThomasWaldmann: am I assuming correctly that there will be only one matching acl middleware for any given backend and that this is known ahead of runtime?
2009-08-02T19:37:31  <ThomasWaldmann> you just use what's in the tuple
2009-08-02T19:38:02  <dennda> you have not yet convinced me that that's a wise idea
2009-08-02T19:38:42  <ThomasWaldmann> that's likely the only way afaics
2009-08-02T19:39:32  <dennda> if that list of "this acl mw fits this backend" mappings is known to us (which it likely is), then why don't we choose the proper acl mw automatically depending on backend type?
2009-08-02T19:40:55  <ThomasWaldmann> the backend TYPE is completely irrelevant.
2009-08-02T19:41:38  <ThomasWaldmann> and what acl mw would you use for a "FooBar" namespace?
2009-08-02T19:42:59  <dennda> i was too much thinking about that fileserver thing
2009-08-02T19:43:02  <dennda> sure
2009-08-02T19:43:12  <dennda> you'd need to know what the backend is used for
2009-08-02T19:43:48  <ThomasWaldmann> look at the wiki page :)
2009-08-02T19:45:38  <ThomasWaldmann> instead of acl() it could be also checked() or whatever
2009-08-02T19:46:14  <dennda> MoinMoin/storage/_tests/test_backends_router.py[59] FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
2009-08-02T19:46:17  <dennda> :)
2009-08-02T19:46:31  <dennda> i like the smell of broken code
2009-08-02T19:48:04  <ThomasWaldmann> maybe hpk should detect that case and just write FAAAAAAAAAAAAAAAAAIIIIIIILLLL
2009-08-02T19:48:44  <dennda> hpk?
2009-08-02T19:53:34  <dennda> ThomasWaldmann: in case moinmo.in/ is accessed without namespace or itemname, should we just prepend the namespace automatically and go on with that? how is the user told?
2009-08-02T19:53:50  <dennda> >       assert 'joe_with_the_unique_name' in ['Users/joe_with_the_unique_name']
2009-08-02T19:53:53  <dennda> this is why I ask :-)
2009-08-02T19:57:43  <ThomasWaldmann> you likely want to directly access the user backend, not the router
2009-08-02T19:58:24  <dennda> i'm doing that. but that was just one use case
2009-08-02T19:58:48  <dennda> should we internally always work with an item where the prefix was automatically prepended if it was missing is the question
2009-08-02T19:58:49  <ThomasWaldmann> then I don't know why "Users/..." is there
2009-08-02T19:59:58  <ThomasWaldmann> yes, if you do not find a match in the mapping, you prepend the content prefix
2009-08-02T20:00:18  <dennda> ok then most tests need to be rewritten/adjusted
2009-08-02T20:00:21  <ThomasWaldmann> os.path.join-like
2009-08-02T20:00:26  <ThomasWaldmann> why?
2009-08-02T20:00:47  <dennda> http://paste.pocoo.org/show/132210/
2009-08-02T20:02:18  <ThomasWaldmann> self.backend is what?
2009-08-02T20:03:38  <dennda> a router backend
2009-08-02T20:04:08  <dennda> with       self.mapping = [('child', self.child), ('other/', self.other), ('Users/', self.users), ('Content/', self.root)]
2009-08-02T20:04:36  <ThomasWaldmann> ok, then that is correct
2009-08-02T20:04:50  <dennda> as in "adjust the tests"?
2009-08-02T20:05:58  <ThomasWaldmann> well, it is a special case that only applies for router backend and for no prefix match
2009-08-02T20:07:00  <dennda> ah yeah these are the generic tests of course... was confusing it with the router specific tests
2009-08-02T20:07:14  <ThomasWaldmann> the question is rather what consequences it has if the item thinks its name is Content/Foo
2009-08-02T20:07:36  <dennda> shall I push my stuff so you can play around?
2009-08-02T20:08:22  <ThomasWaldmann> well, if you have already committed and don't want to rollback :)
2009-08-02T20:09:21  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6330:a0ecfc6c2684 2.0-storage/MoinMoin/storage/backends/router.py: storage: router: Rip out user specialcasing (this CS breaks stuff that needs to be fixed now)
2009-08-02T20:09:22  <dennda> lo and behold
2009-08-02T20:09:24  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6331:1126c3ac6b99 2.0-storage/ (3 files in 3 dirs): storage: User: get user backend based on prefix
2009-08-02T20:09:25  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6332:5c412c6ec1e5 2.0-storage/wikiserver.py: storage: fix automatic dev wiki creation
2009-08-02T20:09:27  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6333:fb40c05c44e0 2.0-storage/ (MoinMoin/storage/backends/router.py wikiconfig.py): storage: router: proper item lookup for un-prefixed itemnames
2009-08-02T20:09:29  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6334:fa610dea8858 2.0-storage/MoinMoin/user.py: storage: user: fix user_prefix lookup
2009-08-02T20:09:33  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6335:bead6f3c772a 2.0-storage/MoinMoin/ (_tests/wikiconfig.py storage/_tests/test_backends_router.py): storage: start fixing tests we broke
2009-08-02T20:10:27  <dennda> and while you take a look at that I'll go get the unhealthiest (thus fastest) food available
2009-08-02T20:10:37  <dennda> + coffee :-)
2009-08-02T20:10:57  <ThomasWaldmann> X)
2009-08-02T20:15:21  <ThomasWaldmann>     2.12 +    user_prefix = request.cfg.storage.USER_PREFIX
2009-08-02T20:15:36  <ThomasWaldmann>     2.58 +        user_prefix = request.cfg.USER_PREFIX
2009-08-02T20:17:03  <ThomasWaldmann>      1.8 +    backend = LocalConfig.storage.get_backend(LocalConfig.DATA_PREFIX)
2009-08-02T20:17:24  <ThomasWaldmann> "DATA" is no good word. everything is data. you mean CONTENT maybe?
2009-08-02T20:18:45  <ThomasWaldmann>     1.30 +        return self._get_backend(self.default + '/' + itemname)
2009-08-02T20:19:01  <ThomasWaldmann> o.p.j? what happens with itemname=""?
2009-08-02T20:19:43  <ThomasWaldmann> ah, you fixed the first thing already
2009-08-02T20:22:49  * ThomasWaldmann also thinks about a better word instead of _PREFIX. maybe we should rather use namespace_user/content/... or ns_...
2009-08-02T20:23:31  <ThomasWaldmann> also maybe not uppercase if it is in cfg
2009-08-02T20:24:34  <ThomasWaldmann> also, didn't we normalize the mountpoints to NOT have the trailing / ?
2009-08-02T20:25:13  <dennda> internally, yes
2009-08-02T20:25:40  <dennda> totally irrelevant wether you pass with or without /, it's stripped. that's just so it looks nicer
2009-08-02T20:26:18  <ThomasWaldmann> does it? :)
2009-08-02T20:26:51  <dennda> self.mapping = [(mountpoint.rstrip('/'), backend) for mountpoint, backend in mapping]
2009-08-02T20:27:00  <dennda> ah
2009-08-02T20:27:05  <dennda> yes it does look better imho ;)
2009-08-02T20:27:07  <ThomasWaldmann> i mean "look nicer"
2009-08-02T20:27:36  <ThomasWaldmann> btw, we kind of solved the "frontpage" problem
2009-08-02T20:28:15  <ThomasWaldmann> in 1.9 we had to map / url to page_front_page
2009-08-02T20:28:37  <ThomasWaldmann> now, / url will map to "Content" item
2009-08-02T20:29:26  <dennda> that's not an item, that's a namespace. you need an empty item in that namespace then
2009-08-02T20:29:32  <dennda> with the data of frontpage
2009-08-02T20:30:11  <ThomasWaldmann> either that or we just assign that to the root namespace
2009-08-02T20:30:35  <dennda> "assign that to the root namespace"?
2009-08-02T20:31:17  <ThomasWaldmann> item "Content" can be either mapped to ns=="Content", name=="", or
2009-08-02T20:31:27  <ThomasWaldmann> ns=="", name=="Content"
2009-08-02T20:33:22  <ThomasWaldmann> well, matter of taste somehow, we can delay that until later
2009-08-02T20:33:31  <dennda> ok
2009-08-02T20:33:48  <dennda> so what do we do with those tests now?
2009-08-02T20:34:33  <ThomasWaldmann> i think if we use that Content/ namespace, we'll have to live with items showing up as Content/Foo
2009-08-02T20:34:52  <ThomasWaldmann> item.url() will likely output that
2009-08-02T20:36:04  <ThomasWaldmann> so that prepending of "Content/" might be rather for link compatibility when linked from outside
2009-08-02T20:38:07  <ThomasWaldmann> i guess the theme will need a small change to render the ns part apart from the item name
2009-08-02T20:38:48  <ThomasWaldmann> can we get that info from the item we have?
2009-08-02T20:39:46  <dennda> "the info" being "in what namespace does it live"?
2009-08-02T20:40:03  <ThomasWaldmann> full item name = ns + item name # we need ns and item name separately
2009-08-02T20:41:52  <dennda> we can either a) patch it into the item or b) knowing the namespaces (as they are defined in the cfg) and the item name, check where it fits in (i.e. by using the router-internal _get_backend method)
2009-08-02T20:42:20  <dennda> umm
2009-08-02T20:42:21  <dennda> nvm
2009-08-02T20:42:38  <dennda> hm
2009-08-02T20:42:47  <dennda>     def __init__(self, item, mountpoint, itemname, backend):
2009-08-02T20:42:55  <dennda> that's what you give it
2009-08-02T20:43:19  <dennda> b) doesn't tell us the NS, but the mountpoint
2009-08-02T20:44:36  <dennda> i think we need a clear definition of both terms: namespace and mountpoint
2009-08-02T20:44:48  <dennda> this is getting confusing
2009-08-02T20:46:13  <ThomasWaldmann> i think currently it is the same
2009-08-02T20:46:30  <ThomasWaldmann> it depends a bit on where you trigger some operations
2009-08-02T20:49:09  <ThomasWaldmann> hmm
2009-08-02T20:49:29  <ThomasWaldmann> what happens if we mount content backend on '/'?
2009-08-02T20:50:09  <dennda> bah
2009-08-02T20:50:15  <dennda> EETOOMANYBURGERS
2009-08-02T20:50:29  <dennda> lemme try
2009-08-02T20:50:57  <ThomasWaldmann> it will likely fail less tests :)
2009-08-02T20:52:19  <ThomasWaldmann> and as iteritems() only yields that backend's items (and not stuff mounted somewhere below in the namespace), I guess we get what we want
2009-08-02T20:53:33  <dennda> just a sec, my computer is going nuts
2009-08-02T20:53:38  <ThomasWaldmann> the only backwards thing is that you can't have pages called Trash, Users, ... then
2009-08-02T20:54:13  <ThomasWaldmann> 90% of users are used to that :)
2009-08-02T20:54:16  <dennda> that somehow sounds like what we already had, minus the user specialcasing and more extendible
2009-08-02T20:54:26  <ThomasWaldmann> yes
2009-08-02T20:54:50  <dennda> no noticable reduction of failed tests
2009-08-02T20:55:09  <dennda> hm
2009-08-02T20:55:13  <dennda> ah sec
2009-08-02T20:55:38  <ThomasWaldmann> well, JoeDoe will still have Users/JoeDoe as homepage
2009-08-02T20:55:59  <dennda> yes
2009-08-02T20:56:01  <ThomasWaldmann> btw, iirc there is even a feature request to deal with HPs like that
2009-08-02T20:56:10  <dennda> that + some other test are the only failing tests now
2009-08-02T20:56:31  <ThomasWaldmann> + all the others that fail since quite a while :)
2009-08-02T20:56:39  <dennda> for router
2009-08-02T20:56:40  <dennda> i mean
2009-08-02T20:57:00  <dennda> + quite a few acl fails
2009-08-02T20:57:01  <dennda> hm
2009-08-02T20:57:44  <dennda> I wonder whether these are due to my changes
2009-08-02T20:58:34  <ThomasWaldmann> if you committed the root mount, please push
2009-08-02T20:59:16  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6336:24b03da2a18e 2.0-storage/ (3 files in 3 dirs): storage: don't mount root at Content/ but just /
2009-08-02T21:01:01  <ThomasWaldmann> >       AttributeError: 'MemoryBackend' object has no attribute 'get_backend'
2009-08-02T21:01:18  <ThomasWaldmann> E       self._user_backend = request.cfg.storage.get_backend(user_prefix)
2009-08-02T21:03:36  <ThomasWaldmann> hehe, it tries to create highlevel Items from user items now :)
2009-08-02T21:05:46  <ThomasWaldmann> E       self.default = default.rstrip('/')
2009-08-02T21:05:46  <ThomasWaldmann> >       AttributeError: 'NoneType' object has no attribute 'rstrip'
2009-08-02T21:07:05  <ThomasWaldmann> and Users/ is for homepages, please, not for UserProfiles
2009-08-02T21:07:42  <dennda> where should those go?
2009-08-02T21:07:46  <dennda> profiles i mean
2009-08-02T21:08:03  <ThomasWaldmann> see wiki page
2009-08-02T21:09:02  <dennda> well ok, s/User\//UserProfiles\//
2009-08-02T21:11:19  <ThomasWaldmann>  E           assert nrev.size == 8
2009-08-02T21:11:19  <ThomasWaldmann> >           assert {'revno': '9'}.size == 8
2009-08-02T21:11:23  <ThomasWaldmann> wtf?
2009-08-02T21:12:48  <ThomasWaldmann> E           assert rev.item.name == name
2009-08-02T21:12:48  <ThomasWaldmann> >           assert {'mimetype': 'text/moin-wiki', 'edit_log_hostname': u'localhost', 'sha1': '01ff142009a5f8032f7ee8c713d4862e99e8a179', ...39568.02.47793', 'edit_log_comment': '', 'edit_log_addr': '127.0.0.1', 'edit_log_action': 'SAVE', 'edit_log_extra': ''}.item.name == 'first'
2009-08-02T21:12:57  <ThomasWaldmann> WTF?
2009-08-02T21:13:06  <xorAxAx> who broke the tests? :)
2009-08-02T21:13:59  <dennda> more important: who fixes them?
2009-08-02T21:14:02  <dennda> muss nicht! :-)
2009-08-02T21:14:16  <xorAxAx> normally the person who broke them :-P
2009-08-02T21:19:07  <ThomasWaldmann>     2.12 +        rb.user_backend = self.users
2009-08-02T21:19:19  <ThomasWaldmann> from: MoinMoin/storage/_tests/test_backends_router.py
2009-08-02T21:19:32  <dennda> yes I added that as a quick hack
2009-08-02T21:23:23  <ThomasWaldmann> request.cfg.storage needs to be a router backend for the tests
2009-08-02T21:24:27  <dennda> it should be
2009-08-02T21:24:40  <ThomasWaldmann> it isnt :)
2009-08-02T21:24:45  <ThomasWaldmann> at least not ever
2009-08-02T21:24:57  <dennda> http://hg.moinmo.in/moin/2.0-storage/file/24b03da2a18e/MoinMoin/_tests/wikiconfig.py#l29
2009-08-02T21:25:05  * ThomasWaldmann fixes Item class fallback
2009-08-02T21:25:20  <ThomasWaldmann> just run all tests and see yourself
2009-08-02T21:26:05  *** vinci_ has quit IRC
2009-08-02T21:39:41  <ThomasWaldmann> and i want real backends, not memory :)
2009-08-02T21:40:00  *** y84 has quit IRC
2009-08-02T21:51:31  <CIA-43> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 6337:52c0a629bc49 2.0-storage/MoinMoin/items/__init__.py: Item: avoid trouble if storage item has no revisions, use DummyRev in that case, too
2009-08-02T21:53:18  *** amartani has quit IRC
2009-08-02T21:56:25  *** y84 has joined #moin-dev
2009-08-02T21:59:28  <CIA-43> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 6338:55c7edaeb713 2.0-storage/MoinMoin/storage/__init__.py: serialization: fix exception for serializing revision-less items
2009-08-02T22:00:41  <ThomasWaldmann> dennda: are you still with us?
2009-08-02T22:00:44  <dennda> sure
2009-08-02T22:09:42  <ThomasWaldmann> somewhere we have type long values in the backend
2009-08-02T22:10:00  <ThomasWaldmann> xml serialization is falling over that, because it currently just supports int
2009-08-02T22:12:11  <dennda> what's wrong with long?
2009-08-02T22:12:18  <dennda> (I had to ask that since it rhymes)
2009-08-02T22:13:29  <dennda> hmhm
2009-08-02T22:13:56  <ThomasWaldmann> i didn't implement serialization because it seemed a bit of a superfluous type
2009-08-02T22:15:48  <ThomasWaldmann> >           TypeError: unsupported type <type 'long'> (value: 42L)
2009-08-02T22:15:56  <ThomasWaldmann> hah! (what else...)
2009-08-02T22:17:17  <ThomasWaldmann>         for revno, value in enumerate(('string', 13, 42L, 3.14, 23+0j,
2009-08-02T22:17:17  <ThomasWaldmann>         for revno, value in enumerate(('string', 13, 42L, 3.14, 23+0j,
2009-08-02T22:17:27  <ThomasWaldmann> i know who wrote that :)
2009-08-02T22:17:47  <dennda> certainly not me :-)
2009-08-02T22:21:41  <dennda> ThomasWaldmann: I can't modify pages anymore
2009-08-02T22:22:37  <dennda> I'm not sure who broke that
2009-08-02T22:23:49  <ThomasWaldmann> maybe you could just provide the tests with some clean backend again and fix the other easy stuff
2009-08-02T22:24:14  <ThomasWaldmann> quite some tests are failing right now because they expect clean backend
2009-08-02T22:27:51  <CIA-43> Thomas Waldmann <tw AT waldmann-edv DOT de> default * 6339:f71ffbbcbc3e 2.0-storage/MoinMoin/storage/serialization.py: serialization: support long values
2009-08-02T22:28:10  <ThomasWaldmann> some brokenness has also its good sides :D
2009-08-02T22:30:30  <dennda> ok this is weird
2009-08-02T22:30:44  <dennda> modifying a page works in FF but in chrome it fails with an internal server error
2009-08-02T22:31:00  <ThomasWaldmann> >           RouterBackend(mapping, users)
2009-08-02T22:31:05  <ThomasWaldmann> [/home/tw/w/mm20storage/MoinMoin/storage/_tests/test_backends_router.py:44]
2009-08-02T22:31:16  <ThomasWaldmann> E       self.default = default.rstrip('/')
2009-08-02T22:31:16  <ThomasWaldmann> >       AttributeError: 'NoneType' object has no attribute 'rstrip'
2009-08-02T22:35:12  *** grzywacz has joined #moin-dev
2009-08-02T22:39:02  <dennda> ThomasWaldmann: some serialization testcase is freezing my machiene for some time when it prints its output
2009-08-02T22:39:19  *** y84 has quit IRC
2009-08-02T22:39:20  <dennda> entrypoint: TestSerializer().test_serialize_backend
2009-08-02T22:39:21  <dennda> that one
2009-08-02T22:41:10  <dennda> well
2009-08-02T22:41:15  <dennda> I think that test case is stupid
2009-08-02T22:41:48  <dennda> removed it
2009-08-02T22:47:57  <ThomasWaldmann> that's likely because you have lots of stuff in the backend
2009-08-02T22:48:02  <ThomasWaldmann> and not empty
2009-08-02T22:48:18  <ronny> hmm
2009-08-02T22:48:22  <ThomasWaldmann> so, please fix the root cause and not the symptom
2009-08-02T22:48:55  <dennda> I'm just searching for that root cause
2009-08-02T22:49:07  <ronny> meh, i need to figure how page metadata is structured for serialisation
2009-08-02T22:49:27  <ThomasWaldmann> ?
2009-08-02T22:49:33  <ronny> (i want to try store them in svn/hg/bzr file props)
2009-08-02T22:49:55  <ThomasWaldmann> it's structured like key: value :)
2009-08-02T22:49:57  <dennda> dict like
2009-08-02T22:50:20  <ronny> both strings ?
2009-08-02T22:50:24  <ronny> or more rich?
2009-08-02T22:51:30  <dennda> all immutable types are allowed as value
2009-08-02T22:51:34  <dennda> and keys are strings
2009-08-02T22:51:46  <dennda> that means tuples are allowed as well
2009-08-02T22:52:09  <ThomasWaldmann> and complex :D
2009-08-02T22:52:30  <ronny> hmm, so pickle
2009-08-02T22:52:38  <ronny> unless its all repr compatible
2009-08-02T22:52:57  <dennda> how that is stored is up to the backend implementor
2009-08-02T22:52:58  <ThomasWaldmann> you can also call .serialize() on it
2009-08-02T22:53:09  <dennda> we don't enforce the use of pickle
2009-08-02T22:53:42  <ThomasWaldmann> or use the serialize function
2009-08-02T22:54:01  <dennda> or engrave it in stone
2009-08-02T23:01:30  <ThomasWaldmann> dennda: http://hg.moinmo.in/moin/2.0-storage/rev/bead6f3c772a read that
2009-08-02T23:02:25  <dennda> ThomasWaldmann: wrong link?
2009-08-02T23:02:58  <dennda> since i've seen that you've just edited Storage2009
2009-08-02T23:03:50  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6340:c92772ceb13f 2.0-storage/ (MoinMoin/storage/backends/enduser.py wikiconfig.py): storage: use fs backends again
2009-08-02T23:03:53  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6341:7501f939d872 2.0-storage/ (MoinMoin/_tests/wikiconfig.py MoinMoin/user.py wikiconfig.py): storage: USER_PREFIX -> user_ns
2009-08-02T23:03:54  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6342:56273ba86147 2.0-storage/MoinMoin/storage/_tests/test_backends_router.py: storage: remove obsolete/stupid test
2009-08-02T23:03:56  <CIA-43> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 6343:c21ff2e70959 2.0-storage/MoinMoin/storage/_tests/test_middleware_acl.py: storage: fresh backends for acl tests
2009-08-02T23:03:57  <ThomasWaldmann> no, I mean the cs
2009-08-02T23:04:33  <ThomasWaldmann> unless you've already fixed it
2009-08-02T23:04:54  <dennda> depends on what you mean :-)
2009-08-02T23:06:39  <ThomasWaldmann> E           assert rev.item.name == name
2009-08-02T23:06:39  <ThomasWaldmann> >           assert {}.item.name == 'first'
2009-08-02T23:07:21  <ThomasWaldmann> still no fresh backends
2009-08-02T23:09:22  <ThomasWaldmann> btw, now that we are back to using / as the default, that default params got useless again, right?
2009-08-02T23:09:58  <dennda> hm yeah probably
2009-08-02T23:11:34  <ThomasWaldmann>      1.7 +        self.request.cfg.provide_fresh_backends()
2009-08-02T23:11:34  <ThomasWaldmann>      1.8          return AclWrapperBackend(self.request)
2009-08-02T23:11:36  <ThomasWaldmann> !?
2009-08-02T23:12:09  <ThomasWaldmann> ah, right, you didn't implement that acl change yet
2009-08-02T23:12:25  <dennda> acl change?
2009-08-02T23:13:22  <ThomasWaldmann> the 3rd element in the tuple
2009-08-02T23:14:34  <dennda> you're confusing me
2009-08-02T23:14:52  <dennda> do you mean that new thing you added to Storage2009?
2009-08-02T23:14:57  <ThomasWaldmann> yes
2009-08-02T23:17:26  <dennda> can you explain that please?
2009-08-02T23:20:08  <ThomasWaldmann> otherwise your acls won't work as needed
2009-08-02T23:20:27  <ThomasWaldmann> e.g. for UserProfiles/
2009-08-02T23:20:37  <ThomasWaldmann>     def test_user_in_traversal(self):
2009-08-02T23:20:45  <ThomasWaldmann> btw, that test is completely backwards
2009-08-02T23:21:11  <ThomasWaldmann> we do not store user items under their name, but under their uid 123.45678.90 or so
2009-08-02T23:21:28  <ThomasWaldmann> (or did you change that?)
2009-08-02T23:22:24  <ThomasWaldmann> and it still shows Users/ there, not UserProfiles/
2009-08-02T23:26:34  * dennda is getting tired
2009-08-02T23:26:36  <dennda> ThomasWaldmann: what makes you think tests aint got fresh backends?
2009-08-02T23:27:25  <ThomasWaldmann> the failing xml test puked it over your screen
2009-08-02T23:28:07  <ThomasWaldmann> and better go to bed now, remember: 09:00, fresh and relaxed please :)
2009-08-02T23:38:11  <dennda> ThomasWaldmann: So you are saying that that test worked once and something I did broke it?
2009-08-02T23:41:15  <ThomasWaldmann> i dont like to repeat myself: the backend is full of stuff. and yes, it wasn't before.
2009-08-02T23:41:40  <dennda> kgn
2009-08-02T23:41:54  <ThomasWaldmann> gn

MoinMoin: MoinMoinChat/Logs/moin-dev/2009-08-02 (last edited 2009-08-01 23:30:02 by IrcLogImporter)