Release Meeting: 1 Sep 2014


1. git Migration Postmortem

  • Changes from the original plan
    • Are we going to go with the superproject / submodule approach
      • NOChanged to monolithic "distro" repository for core + default + developer.
        • Too much history was lost with per-extension repos for core extensions
        • Things like git bisect are much less useful
  • Use git pull --rebase to avoid merge commits. To make it the default:
    • git config branch.autosetuprebase always
    • git config branch.master.rebase true (And any other branches you already have.)
There is still confusion around this. Rebase is ugly if others have pulled from the code being rebased. But it is cleaner if others have pushed to a repo you are about to push to. The challenge is to maintain some linear order of commits. Unlike svn, each git repo is stand-alone. So as each dev commits to their local repo, they have no knowledge of work done on "other islands".

By doing a pull --rebase, you are essentially taking the current github commit order as the "base" and then reordering your local commits on top of the github commits.

  • Rebase in general is bad if others have "pulled" from your repository or You have pushed the commits to another repository
  • If you pull/push from/to someone elses (aka github) repo, pull --rebase is kinder to the remote repository
See Development.GitCookbook#rebase_45_rewriting_history for some more information. And search the web, there's lots of discussion on this out there.
  • Tracking Item-specific "working" branches
    • Need to add Item[0-9]{3,6}-.* to the branch filter regex
    • Are there form field name considerations - branch names that can't be field names?
    • Need to get notified of branch deletes to clean up task
    • How do dynamic formfields work (New formfield CheckinsOnItem1234 pops up)
      • MichaelDaum suggested an "ItemBranchCheckins" which will track checkins for the branch matching the current task item. GeorgeClark will implement.

  • Things left to do / cleanup remaining
    • Should we eliminate the _allDeveloper repo - this duplicates trunk as submodules and is probably not needed
      • Or maybe link it to all the popular / usable extensions, And download / use its .gitmodules file as an index of what pseudo-install should install. Currently it uses the subversion extension list. It could be converted to the github API, but the json request for all repositories is quite extensive - currently requires 21 fetch requests.
      • It's a good list of all the possible extensions in git, but the submodule foreach would be huge. Really not recommended to use this.
    • original repository should also be deleted
    • What should we do with the Once we turn off subversion, updates will stop.
      • Delete
    • Need to remove the repositories for all the extensions that were moved into "distro"
      • Yes - remove
    • We need an archive process. And the old git/svn install on could be removed.

    • We need to get weblaterunning / hooked into github
      • Mentioned that this will happen once git migration completed, and Release01x02 is branched
      • Need help from gmc

2. Configure update

12952 (Closed): is nearing completion, but there are a number of issues that must be discussed resolved:
  1. New user workflow
    1. Web-only install
    2. Sophisticated install (e.g. LDAP)
  2. Recovery - what do we do when it all goes pear-shaped?
    • Didn't really discuss, but needs feedback - learn from experience
  3. Missing pieces?
    • Logging of who changed what and why.
    • Obfuscation of password fields.
    • Extensions installation
    • Redirect to login rather than js popup when rpc denied?
    • Some way to run all checkers without clicking on every tab?
  4. Just bugs and cosmetics?
    • Occasional loop in jsonrpc when saving a configuration

For now, 12952 (Closed): is tracking a list of issues. (gac410 will clean up some of the noise). Please add/remove issues to/from that list until that task is closed.

3. Tasks review - tasks that need resolution prior to release

Continues from ReleaseMeeting01x02_20140721. Green shows current status

Tasks previously reviewed: Report any updates.
  • 12019 (Closed): JQuery fixes mixed in with some non-default extension work. MichaelDaum will resolve
  • 10484 (Closed): Search formfield issues, waiting on Sven & pharvey, comments about needing CDot input. CDot to investigate documenting the restrictions
  • 10203 (Closed): Mostly complete, Needs help with completing ajax MichaelDaum and gac410 will test registration changes
  • 12261 (Closed): Someone needs to update docs for the new PageCache.
  • 12477 (Closed): Spurious .changes entries. GeorgeClark will resolve
  • 12705 (Closed):Need help on this. CDot's patch resolves the corruption but causes   to be lost.
    • This is still urgent and needs help from CrawfordCurrie if at all possible.
  • 12855 (Closed): This can be closed any time. Left open to remind that we should do a final audit before building release.
  • 12925 (Closed): Page cache unit tests were all disabled in rewrite. StephanOsthold offered to help but has limited time over next few weeks.
  • 12926 (Closed): Subscribe links are broken. GeorgeClark will change SubscribePlugin rest handler to permit GET urls.
    • Some issues were encountered. MichaelDaum had some suggestions, George will revisit.
  • 12931 (Closed): CommentPlugin on trunk issues Need help with this one... CrawfordCurrie ?
  • 12958 (Closed): HTML label issue with editor. CrawfordCurrie proposed a patch. Can we apply this? Does it need unit tests?
  • 12050 (Closed): Another special case for squab links. Revisits DeprecateUndocumentedSqBracketLinkFormat See comments in task.
    • General consensus is we should remove this deprecated format. It's been officially unsupported for many years now.
  • 12887 (No Action Required): Configure loop on Perl 5.8.8. JanKrueger update the Template parser, and on perl 5.8.8, a while loop over a regex gets "stuck" at the position of the first match. Needs to either be rewritten or someone with deep perl knowledge to fix the regex loop.
    • 12976 (Duplicate): is a duplicate. KennethLavrson tracked it down to perl Taint checking related. removing -T taint checking resolves both of these tasks. Need to decide if we can ship 1.2 with -T disabled for configure, or rewrite the code to resolve the issue.
    • *JanKrueger will help work with GeorgeClark in the next week or two to try to resolve*
    • Configure no longer uses it's custom template parser, tasks can be set to no action
  • GeorgeClark will create a feature proposal to remove -T taint checking from across foswiki. This resolves a number of issues but needs wider agreement.

4. Other blockers not yet discussed

  • 12868 (Closed): Search $newline parameter inconsistencies
  • 12661 (Closed): PageCaching documentation
  • 12973 (No Action Required): (I think that this is a bug in TinyMCE editor, and a limitation of TML)
  • 12987 (Closed): (Partially fixed. I think there is a bug remaining that will cause secondary crash after 500 rc.)
  • 12093 (Closed): (Can this be closed? Is there remaining logo work to do?) ... we need to role out the new brand on the net
  • 12816 (Closed): (On MichaelDaum 's list)

5. When do we branch 1.2 from master?

Briefly discussed. Wait until Configure is stable and more blockers are resolved.

6: Next meeting - - Monday September 15, 1300Z

    • CDot gives apologies in advance, as he will be in China until 21/9


  Conversation with #foswiki-release at Mon 01 Sep 2014 08:41:39 AM EDT on (irc)

   (08:46:17 AM) jast [..] entered the room.
   (09:02:34 AM) gac410: Howdy all - Lets see if we can get a few more dev's here
   (09:05:29 AM) ModAcOst [..] entered the room.
   (09:07:03 AM) MichaelDaum [..] entered the room.
   (09:07:25 AM) CDot [..] entered the room.
   (09:07:54 AM) CDot: thanks for the alarm call, George!
   (09:09:16 AM) gac410: Hi all. Thanks for joining.
   (09:10:12 AM) gac410: Probably the big item is a postmortem for the git conversion. First ... any concerns ... things to add to the "we need to fix this" list ?
   (09:10:57 AM) gac410:
   (09:12:37 AM) gac410: No feedback on git?
   (09:12:55 AM) CDot: just the rebase crap, which is a bit..... crap
   (09:13:17 AM) gac410: The one thing I notice is occasional "Merge commits" aka "rebase crap" :)
   (09:13:22 AM) CDot: makes it impossible to push a repo with uncommitted checkins, unless you stash it
   (09:13:41 AM) CDot: minor PITA, but needs doccoing
   (09:14:03 AM) MichaelDaum: yes this PITAs me too
   (09:14:13 AM) MichaelDaum: I tried to pull with a --rebase and it failed
   (09:14:23 AM) MichaelDaum: as I _constantly_ have local changes
   (09:14:52 AM) gac410: The other option is to just live with the Merge commits, that re-order the remote repo when you push.
   (09:14:52 AM) MichaelDaum: stashing a single file that I know is in conflict does not exist
   (09:14:58 AM) JulianLevens1 [..] entered the room.
   (09:15:31 AM) MichaelDaum: yes, right. an git commit --amend _after_ a push will also result in a merge commit
   (09:15:57 AM) gac410: Right. That can really mess up others who have pulled as it rewrites their historyh.
   (09:16:16 AM) MichaelDaum: git stash seems to forget some symlinks it seems.
   (09:16:48 AM) gac410: hm. I've not run into that. Though it does not save anything not added into the index. without extra parameters.
   (09:17:21 AM) MichaelDaum: I ran into it once and decided to avoid it if possible
   (09:17:30 AM) MichaelDaum: maybe I need to try again
   (09:18:10 AM) MichaelDaum: I am simply afraid of git altering my checkout area too much
   (09:18:24 AM) gac410: I suspect some of this is just going to take time to get used to. I'm learning along the way as well. Our most git experienced users have been not around much.
   (09:19:09 AM) ModAcOst: Maybe youʼll want a "git rebase" before you push
   (09:19:16 AM) gac410: I created a new extension. LocalChangesContrib. Usersweb / Litterbox instead of Main/Sandbox, and any other webs I modify. And pseudo-install it
   (09:19:38 AM) gac410: A "git pull --rebase" fixes up your local history. You can make that the default behavior.
   (09:20:10 AM) gac410: If we were truly distributed ... no attempt to keep a central (aka github) svn-link repo, then we would not care about some of this.
   (09:20:22 AM) gac410: er. svn-like not link
   (09:21:08 AM) tsnfoo [..] entered the room.
   (09:21:17 AM) gac410: MichaelDaum: You wanted tasks to track ItemNNNN-.* branches. I'll try to add that sometime. Next couple of weeks will be busy though, so I probably won't do much more for a while.
   (09:21:54 AM) MichaelDaum: okay cool. Iʼll keep on docuʼing fixes on item-branches manually in the Tasks web
   (09:21:59 AM) gac410: We need to decide what to do with gitorious repo. Someone set that up ages ago. babar? It's now dead and bit-rotting.
   (09:22:13 AM) MichaelDaum: del
   (09:22:44 AM) gac410: MichaelDaum: If my plugin adds a new formfield, "ItemXXXXCheckins ..." will that "just work" on r1.1.9? r1.2.0 ?
   (09:22:47 AM) CDot: +1
   (09:22:51 AM) MichaelDaum: we should also flag foswikiʼs foswiki repo on openhub (ohloh formerly) as duplicate
   (09:22:56 AM) gac410: Already did
   (09:23:35 AM) gac410: And I added a bunch of extensions that have had updates to openhub yesterday. So we get some more activity
   (09:23:36 AM) MichaelDaum: gac410, why would you ever formfields of that kind: ItemXXXCheckins
   (09:24:14 AM) MichaelDaum: you wonʼt be able to write any sensible query against such a database
   (09:24:16 AM) gac410: We have masterCheckins Branch01x01Checkins ... Where else would I record checkins for your Item1234 branch
   (09:24:28 AM) MichaelDaum: ItemBranch
   (09:24:45 AM) gac410: Ah... That's simple.
   (09:25:39 AM) gac410: So if I see a commti to ItemNNNN branch, and ItemNNNN matches the task, record the checkin against ItemBranchCheckins field
   (09:25:52 AM) MichaelDaum: sounds good
   (09:26:46 AM) MichaelDaum: this would be an excellent way to exchange patches on CoordinateWithAuthor extensions
   (09:26:47 AM) gac410: Great. So the obsolete default "repo per extension" repos. CommentPlugin, etc... I'll delete them, along with _AllDeveloper from github
   (09:27:41 AM) MichaelDaum: one problem with ItemBrachCheckins is ItemBraches on core/default extensions as this branches all of foswiki/distro
   (09:28:07 AM) gac410: MichaelDaum: The %GITREF% has an optional account field, so if on github, you could have %GITREF{swandodger:Item1234:23435af43}%
   (09:28:27 AM) ***CDot is sad to see the repo per extension disappearing, but defers to the experts
   (09:29:16 AM) gac410: Yeah. I was wishing someone with more git experience could help with history, but because of the way git works internally, there was no way to track back to changes in a "different repository"
   (09:30:13 AM) gac410: It was CDot's big restructure that pointed out the issue. when Store had a total of one commit in history in our split repositories.
   (09:30:50 AM) CDot: why do we have to have only one repo for core?
   (09:31:04 AM) CDot: (apologies if this was already explained somewhere.... I missed it)
   (09:32:06 AM) MichaelDaum: a bigger repo will allow you to safely move around files in it
   (09:32:19 AM) gac410: History with a file stays in it's original locatino. So you moved into the rcsstoreContrib repo. git log stops at that move. But if the contrib is part of distro you keep history
   (09:32:40 AM) MichaelDaum: if you split up too much then movign things in and out between them will cut history every time in both ends
   (09:33:58 AM) gac410: CDot: in your "distro" try "git log --follow RCSStoreContrib/lib/Foswiki/Store/" And then try again without the --follow
   (09:34:08 AM) MichaelDaum: it seems you canʼt export/import a fileʼs complete history
   (09:34:54 AM) gac410: Right, because the location of the history does not exist in the other repo. It's in core/lib/Foswiki/Store which does not exist in RCSStoreContrib repository
   (09:35:53 AM) gac410: So... big todo's for me I guess is a backup process - to clone all the repos to as a mirror "just in case"
   (09:36:04 AM) gac410: maybe update daily.
   (09:36:30 AM) MichaelDaum: excellent
   (09:36:35 AM) gac410: And we really need gmc or someone Freebsd knowledgable to help with weblate.
   (09:37:56 AM) MichaelDaum: did he respond last time we asked?
   (09:38:24 AM) gac410: Yes. He was going to work with me, and then got tied up ... and it "fell through" toward end of july
   (09:38:44 AM) gac410: I'll hit him again It won't be urgent until we get closer to release.
   (09:39:11 AM) gac410: So ... unless more git concerns, lets move on to task review.
   (09:39:26 AM) gac410: Sorry... Configure update
   (09:39:36 AM) gac410: I think the new configure looks GREAT
   (09:39:49 AM) CDot: oh yeah - you can probably do that as well as me :-)
   (09:40:08 AM) CDot: itʼs getting even better son. next checkin has a lot of niggles fixed
   (09:40:36 AM) CDot: a few issues regarding secutiry, tho
   (09:40:44 AM) gac410: Good. I was "reluctant" at the start, but indeed this looks very good. Yeah.
   (09:41:39 AM) CDot: did you come to any conclusion about the "oh my god" recovery modes?
   (09:42:05 AM) MichaelDaum: Configure doesnʼt work with $Foswiki::cfg{JQueryPlugin}{NoConflict} = 1;
   (09:42:06 AM) gac410: I tried to do a little bit on that. I didn't like the idea of everyone with admin auth having full configure auth. I stared out with "create a group" and then decided that oops... Admins can change any group. So it had to live in configure,
   (09:42:31 AM) andreli [..] entered the room.
   (09:43:26 AM) gac410: CDot: Not yet. I think I'd like to put back the sudo "back door" password but leave it "un-set" so it's there if you need it but gone by default.
   (09:43:55 AM) gac410: Some of this I think we need to "experience" some pain to figure out how to fix it.
   (09:44:41 AM) CDot: MichaelDaum: if you can fix that, please do. I have quite a lot of other stuff in the pipeline at the moment
   (09:45:23 AM) MichaelDaum: CDot, it requires to follow up on the normal jquery development practice ... for every js file using jquery
   (09:46:00 AM) MichaelDaum: and if youʼve been using global vars shared among js files...things need even more restructuring
   (09:46:05 AM) CDot: there are only 2 .js files in configure, so I guess it canʼt be all that hard to do
   (09:46:33 AM) gac410: CDot we can take this offline sometime, but given a key, is there a way to examine the "field type" from the Save wizard. ie. This is a PASSWORD, don't log it in clear text.
   (09:47:04 AM) CDot: yes, of course. The spec is fully availabe in the wizards.
   (09:47:25 AM) gac410: great.
   (09:48:17 AM) gac410: CDot: I'll try to clean up to put my old noise behind %TWISTY%
   (09:48:33 AM) CDot: thanks
   (09:48:48 AM) gac410: Do you want us all to add issues to the list I started though in that task. Rather than task per issue?
   (09:49:11 AM) CDot: final note - there will be no work on cofnigure after wednesday. Iʼm away until the 20th.
   (09:49:26 AM) CDot: yeah, please use 12952 until I close it
   (09:49:41 AM) CDot: "waiting for release" it
   (09:49:49 AM) gac410: Everyone then... , about 1/2 way down that task, there is list of known issues %X% for open, %Y% for fixed, %N% for new.
   (09:49:56 AM) CDot: then the configureplugin repo needs to move into the core
   (09:50:09 AM) MichaelDaum: is it possible to run bin/configure under fcgi now?
   (09:50:29 AM) gac410: Once you are gone and your repos stable, I'll take the task to move configurePlugin into core.
   (09:50:55 AM) gac410: Combining repos *should* be easier than splitting (famous last words :D )
   (09:51:56 AM) gac410: MichaelDaum: I would think so. It's dispatched through engine->run() like other scripts
   (09:53:01 AM) gac410: I did some work on CDot's Bootstrap mode. We need that more thorougly tested too, esp. with non-apache environments. Delete LocalSite.cfg .... what happens.
   (09:53:31 AM) gac410: At least on my apache w/ or without shorter URLs, 'it just works'
   (09:53:35 AM) CDot: MichaelDaum: yes, though you could get a race condition if 2 people crashed
   (09:54:13 AM) MichaelDaum: okay, so yes.
   (09:54:34 AM) gac410: That's good ... it will sure make nginx easier I guess.
   (09:54:49 AM) MichaelDaum: CDot, why could there be a race condition when configure is run under fcgi ... but no racecondition otherwise?
   (09:55:07 AM) CDot: erm, fair point
   (09:55:19 AM) CDot: there is no locking, is all Iʼm saying
   (09:55:42 AM) MichaelDaum: something "warning another configure is already in process"
   (09:56:20 AM) gac410: Ah... CDot ... you've eliminated the old TemplateParser used by configure?
   (09:56:29 AM) CDot: yup
   (09:56:42 AM) CDot: it now uses the ʼstandardʼ FW templates
   (09:56:49 AM) gac410: So that closes
   (09:56:55 AM) gac410: Or "no action" anyway.
   (09:56:56 AM) CDot: excellent
   (09:57:14 AM) gac410: And also 2 for the price of one :)
   (09:57:35 AM) MichaelDaum: CDot, any concerns moving id_ify to configure.js ... this isnʼt types.js related
   (09:57:45 AM) MichaelDaum: and used in both
   (09:57:51 AM) MichaelDaum: with configure.js somewhat being the main.js
   (09:57:59 AM) CDot: MichaelDaum: please wait for my next push - a few minutes
   (09:58:05 AM) MichaelDaum: ok
   (09:58:06 AM) CDot: yes, moving id_ify is fine
   (09:58:32 AM) ***MichaelDaum playing fcgi with configure
   (09:58:51 AM) gac410: So unless any more configure, Next: task review? I'm not going to go through line by line ... unless you really want that.
   (09:59:09 AM) gac410: I see MichaelDaum made progress on the topic creator.
   (09:59:25 AM) MichaelDaum: wattamess
   (10:01:27 AM) MichaelDaum: thereʼs lots of css missing to fix the input interface of configure
   (10:02:35 AM) gac410: Lurking in the tasks is a feature proposal to remove Taint checking by default. I think we have a consensus to remove, at least from the "shipped release" At least I plan to modify rewrite-shebang to add a taint checking toggle.
   (10:02:52 AM) gac410: It's mostly done and stashed in my old git-svn repo
   (10:02:55 AM) MichaelDaum: CDot, there are two whirlies now: one inside the tabs and one after the tabpane
   (10:03:13 AM) CDot: they are doing different jobs
   (10:03:15 AM) gac410: Hm. I think the outside whirley comes from the save.
   (10:03:22 AM) CDot: one is for the load, the other is for the check
   (10:03:26 AM) CDot: $ git pull --rebase
   (10:03:26 AM) CDot: WARNING: gnome-keyring:: couldnʼt connect to: /run/user/crawford/keyring-mye0nv/pkcs11: No such file or directory
   (10:03:26 AM) CDot: remote: Counting objects: 45, done.
   (10:03:26 AM) CDot: remote: Compressing objects: 100% (43/43), done.
   (10:03:26 AM) CDot: remote: Total 45 (delta 14), reused 0 (delta 0)
   (10:03:27 AM) CDot: Unpacking objects: 100% (45/45), done.
   (10:03:27 AM) CDot: From
   (10:03:28 AM) CDot: 51e78f7..0cb516c master -> origin/master
   (10:03:28 AM) CDot: First, rewinding head to replay your work on top of it...
   (10:03:29 AM) CDot: error: The following untracked working tree files would be overwritten by checkout:
   (10:03:29 AM) CDot: JQueryPlugin/.gitignore
   (10:03:30 AM) CDot: NatEditPlugin/.gitignore
   (10:03:30 AM) CDot: Please move or remove them before you can switch branches.
   (10:03:31 AM) CDot: Aborting
   (10:04:23 AM) gac410: Yeah. just checkout them ./pseudo-install currently modifies them,. I think we should remove that feature from pseudo-install
   (10:04:41 AM) MichaelDaum: CDot, may I fix NoConflict now, or do you have another checkin pending?
   (10:04:56 AM) CDot:
   (10:05:08 AM) CDot: I canʼt git pull at the moment
   (10:05:14 AM) CDot: so I canʼt push :-(
   (10:05:29 AM) CDot: MichaelDaum: Iʼm done with ConfigurePlugin, though
   (10:05:41 AM) MichaelDaum: okay
   (10:05:42 AM) CDot: itʼs just core I canʼt push
   (10:05:45 AM) gac410: Just those two files? "git checkout JQueryPlugin/.gitignore" to revert them
   (10:05:50 AM) CDot: and I really, really need to
   (10:06:35 AM) CDot: gac410: tried that - it denies all knowledge
   (10:06:41 AM) CDot: and the files do not exist on disc
   (10:07:35 AM) gac410: Oh... they are "untracked" They really don't exist? Strange
   (10:08:06 AM) gac410: Well git push --merge (or without the --rebase) That should work
   (10:08:19 AM) gac410: er... sorry git pull --merge
   (10:08:39 AM) CDot: phew
   (10:08:48 AM) gac410: If they are "untracked" you should just be able to remove them.
   (10:09:08 AM) MichaelDaum_ [..] entered the room.
   (10:09:14 AM) CDot: y, I did. What are these .gitignore files, and why does it keep creating them?
   (10:09:25 AM) MichaelDaum_: my other computer locked up solid with configure +fcgi
   (10:09:47 AM) CDot: excellent; it was proably trying to work too hard
   (10:09:58 AM) ***CDot hasnʼt tried +fcgi yet
   (10:10:02 AM) gac410: pseudo-install creates them. They are a list of files that git will not attempt to change / track / report in "git status"
   (10:10:38 AM) gac410: Now that we are running on git, we probably just want to check them into the repo and stop generating them. Doing both is a pain.
   (10:10:44 AM) CDot: please
   (10:11:51 AM) gac410: Basically ./pseudo-install compares the list of generated files to the ones in the repo, and adds any generated to the .gitignore (.gz files, .compressed' files, etc.)
   (10:13:24 AM) gac410: Approaching 1:15 Any other task review items / progress / issues to report? If not, last question. Is it time yet to consider a Release01x02 branch? Or wait until the blockers are resolved.
   (10:14:03 AM) MichaelDaum_: wait for the blockers to settle
   (10:14:12 AM) MichaelDaum_: and configure
   (10:15:13 AM) gac410: Yeah, With git, instead of making every developer double-commit to master and Release01x02, we could probably use a strategy of a "git merge" to merge Release01x02 commits back into master
   (10:15:18 AM) MichaelDaum_: hm jsonrpc took 66% of all of my memory thatʼs why it locked up the machine
   (10:15:44 AM) gac410: Or maybe the other way. Keep checking into master and we merge into Release01x02 on a schedule.
   (10:16:45 AM) CDot: MichaelDaum: there was a huge bug with the FormTypes checker - it was infinite somethinging
   (10:16:52 AM) CDot: itʼs fixed with the latest push
   (10:17:23 AM) MichaelDaum: jsonrpc will be fcgied no matter what configure runs at
   (10:17:45 AM) MichaelDaum_ left the room (quit: ).
   (10:19:16 AM) gac410: Okay all ... I think we are done with the Release meeting. Thanks! See you same bat-time same bat-channel in 2 weeks (Except for CDot ...)
   (10:19:41 AM) CDot: koey dokey
   (10:19:55 AM) MichaelDaum: back on #foswiki
   (10:20:39 AM) andreli left the room (quit: Quit: Page closed).
   (10:24:25 AM) JulianLevens1 left the room.
Topic revision: r10 - 01 Sep 2014, GeorgeClark - This page was cached on 06 Aug 2020 - 10:56.

The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy