*** tpb has joined #melange | 00:00 | |
*** jameslevy has quit IRC | 00:48 | |
*** madrazr has joined #melange | 01:06 | |
*** SRabbelier has joined #melange | 01:22 | |
*** ChanServ sets mode: +o SRabbelier | 01:22 | |
*** madrazr has quit IRC | 01:41 | |
*** dbentley-laptop has joined #melange | 02:24 | |
*** dbentley-lapto1 has joined #melange | 02:27 | |
*** mithro has quit IRC | 02:33 | |
*** mithro has joined #melange | 02:33 | |
*** ChanServ sets mode: +v mithro | 02:33 | |
*** dbentley-laptop has quit IRC | 02:46 | |
*** solydzajs has joined #melange | 03:41 | |
*** ChanServ sets mode: +o solydzajs | 03:41 | |
*** schultmc1 has joined #melange | 03:56 | |
*** ankitg is now known as ankitg|afk | 03:59 | |
*** schultmc has quit IRC | 04:01 | |
*** MatthewWilkes has joined #melange | 05:45 | |
MatthewWilkes | Morning melange peeps! | 05:47 |
---|---|---|
tansell | SRabbelier, ping? | 05:51 |
SRabbelier | tansell: pong! | 05:58 |
SRabbelier | MatthewWilkes: morning :) | 05:58 |
* SRabbelier is off for lunch :P | 05:59 | |
tansell | SRabbelier, I was just thinking that maybe the bot should get a voice so it stands out more | 06:07 |
tansell | oh I guess I can do the following now too | 06:07 |
tansell | ~seen SRabbelier | 06:07 |
tpb | tansell: SRabbelier was last seen in #melange 8 minutes and 25 seconds ago: * SRabbelier is off for lunch :P | 06:07 |
kblin | tansell: you switched to a supybot? no more mbot? :) | 06:12 |
tansell | kblin, we switched about 4 years ago | 06:16 |
kblin | recently, yeah :) | 06:19 |
MatthewWilkes | It's not an IRC bot unless it's written in obtuse piles of TCL | 06:32 |
*** solydzajs has quit IRC | 06:37 | |
* SRabbelier shudders | 06:38 | |
SRabbelier | TCL, do not want | 06:38 |
MatthewWilkes | :) | 06:42 |
MatthewWilkes | SRabbelier: Thanks for applying my changesets - was all you changed adding the authors = [] list? | 06:43 |
MatthewWilkes | If I know, I can fix it next time | 06:43 |
*** mithro has quit IRC | 06:45 | |
*** mithro has joined #melange | 06:58 | |
*** ChanServ sets mode: +v mithro | 06:58 | |
SRabbelier | MatthewWilkes: uhm, yes, some docstring indentation issues too | 07:23 |
SRabbelier | MatthewWilkes: added our license header too | 07:23 |
*** mithro has quit IRC | 07:35 | |
MatthewWilkes | SRabbelier: Ah, thought I had that? Hmm | 07:49 |
*** tansell-laptop has quit IRC | 07:53 | |
*** dbentley-lapto1 has quit IRC | 08:01 | |
*** MatthewWilkes has quit IRC | 08:26 | |
*** schultmc1 is now known as schultmc | 08:33 | |
*** mithro has joined #melange | 08:44 | |
*** ChanServ sets mode: +v mithro | 08:44 | |
*** florinciu has joined #melange | 08:58 | |
*** dr__house has joined #melange | 09:12 | |
*** solydzajs has joined #melange | 09:50 | |
*** ChanServ sets mode: +o solydzajs | 09:50 | |
*** Merio has joined #melange | 10:04 | |
*** dr__house has quit IRC | 10:11 | |
*** dr__house has joined #melange | 10:12 | |
*** solydzajs has quit IRC | 10:19 | |
*** solydzajs has joined #melange | 10:22 | |
*** ChanServ sets mode: +o solydzajs | 10:22 | |
*** madrazr has joined #melange | 10:28 | |
*** solydzajs has quit IRC | 10:41 | |
ajaksu | SRabbelier: ping? | 12:31 |
SRabbelier | ajaksu: pong | 13:02 |
ajaksu | SRabbelier: talked to James Levy, he's OK with passing surveys to me :) | 13:04 |
ajaksu | SRabbelier: do you want me to create a public repository? | 13:04 |
SRabbelier | ajaksu: I can rebase his work onto our hg repo if you want? | 13:04 |
ajaksu | SRabbelier: I've done that already and made the code conformant to the style guide (and added csv exports), I can submit it to review in rietveld after I send my roadmap to the list if you'd like me to | 13:06 |
SRabbelier | ajaksu: ah, pretty sweet | 13:06 |
SRabbelier | ajaksu: do you have a bitbucket repo? | 13:06 |
ajaksu | SRabbelier: nope, but I can create one if that'd help :) | 13:08 |
SRabbelier | ajaksu: anywhere public is fine :) | 13:08 |
ajaksu | SRabbelier: would you rather see bad code on bitbucket or code.google? :D | 13:09 |
SRabbelier | ajaksu: bitbucket, since that's easier to blow away :P | 13:09 |
ajaksu | SRabbelier: http://bitbucket.org/ajaksu/melange-surveys , now I'll try to push and see if things are as they should :) | 13:14 |
tpb | Title: ajaksu / melange-surveys / overview bitbucket.org (at bitbucket.org) | 13:14 |
SRabbelier | ajaksu: cool! | 13:14 |
*** dr__house has quit IRC | 13:15 | |
*** dr__house has joined #melange | 13:15 | |
*** dhaun has joined #melange | 13:16 | |
*** madrazr has left #melange | 13:20 | |
ajaksu | it works :) | 13:34 |
SRabbelier | ajaksu: win :) | 13:39 |
* SRabbelier is going to try and get wireless on laptop by installing new kernel, will brb | 13:39 | |
*** SRabbelier has quit IRC | 13:39 | |
Erant | gl | 13:39 |
*** MatthewWilkes has joined #melange | 13:39 | |
*** dr__house has quit IRC | 13:41 | |
*** dr__house has joined #melange | 13:42 | |
*** florinciu has quit IRC | 13:52 | |
*** madrazr has joined #melange | 13:54 | |
*** florinciu has joined #melange | 13:55 | |
*** arun has quit IRC | 14:00 | |
*** madrazr has quit IRC | 14:00 | |
*** arun has joined #melange | 14:00 | |
*** madrazr has joined #melange | 14:00 | |
*** SRabbelier has joined #melange | 14:17 | |
*** ChanServ sets mode: +o SRabbelier | 14:17 | |
MatthewWilkes | hey there SRabbelier :) | 14:35 |
*** SRabbelier has quit IRC | 14:35 | |
*** SRabbelier has joined #melange | 14:36 | |
*** ChanServ sets mode: +o SRabbelier | 14:36 | |
*** MatthewWilkes has quit IRC | 14:40 | |
*** MatthewWilkes has joined #melange | 14:41 | |
MatthewWilkes | damned power cables | 14:43 |
*** Lennie has joined #melange | 15:49 | |
*** ChanServ sets mode: +o Lennie | 15:49 | |
* Lennie sends hordes of lemmings over madrazr | 15:50 | |
* Lennie sends hordes of lemmings over SRabbelier | 15:50 | |
MatthewWilkes | hi there Lennie | 15:50 |
Lennie | hi MatthewWilkes :0 | 15:50 |
Lennie | madrazr, SRabbelier: ping! | 15:51 |
madrazr | Lennie: pong | 15:51 |
Lennie | ^_^ | 15:51 |
Lennie | 1 more | 15:51 |
MatthewWilkes | :0? | 15:51 |
* madrazr has lot of cats to take care of those rodents :D | 15:51 | |
dr__house | Lennie: don't worry, madrazr is scared of cats and dogs. He hates pets :P | 15:52 |
Lennie | okay :D | 15:52 |
* dr__house is pretty sure the rodents are larger than madrazr :P | 15:53 | |
Lennie | is madrazr small :)? | 15:54 |
dr__house | Lennie: he's tiny | 15:55 |
Lennie | k | 15:56 |
*** dr__house has quit IRC | 15:59 | |
*** dr__house has joined #melange | 16:00 | |
*** florinciu has quit IRC | 16:00 | |
Lennie | hmm | 16:08 |
Lennie | SRabbelier is afk :0 | 16:08 |
madrazr | Lennie: very rare of him :P | 16:09 |
Lennie | madrazr, I sent you my first wave of comments | 16:10 |
madrazr | Lennie: received | 16:10 |
madrazr | reading | 16:10 |
MatthewWilkes | There's a tramp singing outside my window! | 16:11 |
Lennie | MatthewWilkes, stop feeding them scotch | 16:11 |
Lennie | MatthewWilkes, is he/she any good? | 16:11 |
MatthewWilkes | Really not | 16:14 |
* SRabbelier was watching an old epp of House | 16:15 | |
Lennie | latest house epp | 16:18 |
Lennie | he said twss :P | 16:18 |
SRabbelier | ... shush! | 16:21 |
MatthewWilkes | hmm, he's got a friend now | 16:24 |
* MatthewWilkes is recording | 16:24 | |
Lennie | :D | 16:24 |
MatthewWilkes | he's just shouting profanities now though | 16:25 |
Lennie | hmm | 16:25 |
Lennie | time to call in the bobbers :P? | 16:25 |
MatthewWilkes | bobbies :P | 16:25 |
Lennie | the fuzz :P | 16:26 |
Lennie | the boys in blue? | 16:26 |
Lennie | I'm not that good in synonyms :P | 16:26 |
*** dr__house has quit IRC | 16:30 | |
*** madrazr1 has joined #melange | 16:33 | |
*** madrazr has quit IRC | 16:33 | |
MatthewWilkes | SRabbelier: I've responded to that arch email, but I'm not very happy with the outcome, don't think it's all that clear how things fit together in plone based on it | 16:34 |
SRabbelier | MatthewWilkes: then why'd you mail it? :P | 16:34 |
*** dr__house has joined #melange | 16:34 | |
SRabbelier | MatthewWilkes: no time to refactor? :P | 16:34 |
MatthewWilkes | SRabbelier: It might be of some use, I dunno, but by the time I'd decided it was suboptimal I'd been writing it for an hour :P | 16:36 |
*** madrazr1 is now known as madrazr | 16:36 | |
SRabbelier | whow, dedication! | 16:36 |
MatthewWilkes | SRabbelier: I suggest it might be useful to have an Real-Time conversation | 16:37 |
SRabbelier | MatthewWilkes: let me finish reading :) | 16:37 |
SRabbelier | MatthewWilkes: and I'll RT-conversate you right away :P | 16:37 |
*** James--Crook has joined #melange | 16:45 | |
Lennie | hi James--Crook | 16:45 |
James--Crook | Awesome post MatthewWilkes! | 16:46 |
* James--Crook waves to Lennie | 16:46 | |
James--Crook | MatthewWilkes: You describe using the adapter pattern. Does that mean that there is a common API in plone which many modules conform to? | 16:47 |
MatthewWilkes | James--Crook: It's hard to explain how it all fits together, but the squall story at the end has psyched us all up these last few weeks, it's like all the work we did changing our dev style has been worth it | 16:47 |
MatthewWilkes | James--Crook: Not as such, each type of object defines its own interface, which intherit | 16:47 |
MatthewWilkes | So there is a generic content interface, one for documents, one for events, etc | 16:47 |
MatthewWilkes | So you do things like say "I want a login box on the left for all content types" or "I want a notice on the right for all event-ish things" | 16:48 |
James--Crook | OK. So let us say that we want to change comments in Melange so that they can be 'applied to anything'. Scrawl and Quills suggest that there is a choice about that which I hadn't seen before... | 16:49 |
*** johndbritton has joined #melange | 16:49 | |
James--Crook | what is the conceptual difference between content interface and document interface? | 16:50 |
MatthewWilkes | James--Crook: Ok, Scrawl creates an addable "blog item" that gives basic UI. Quills adapts groups of content into behaving like a blog, with things like date based perma-links, categories, etc | 16:51 |
MatthewWilkes | The categories are based on adapting content to the ISubject (or something) interface which allows to you get the cateogies out of arbitrary bits of content, they do different things. Quills doesn't allow you to click "Add a blog entry", you click "Add a page" and it makes that page look like part of a blog | 16:52 |
MatthewWilkes | James--Crook: I don't understand what you mean by those terms | 16:52 |
James--Crook | I am trying to see how to get maximum 'plu compatibility', i.e how we can give as many objects in melange the same interface, so that we can build in the most modular fashion possible. | 16:54 |
James--Crook | So if 'documents' and content have to have 'different' interfaces, that is something I'd like to try to avoid. | 16:55 |
James--Crook | Concrete example: | 16:55 |
James--Crook | Our documents are going to become a wiki. And in wiki you can add categories to a page. | 16:55 |
James--Crook | Our models/records are going to become taggable (for GHOP). | 16:56 |
James--Crook | Tags are 'the same thing' as categories. | 16:56 |
James--Crook | We want to internally use the same interface. Hence an adapter (probably). | 16:56 |
MatthewWilkes | Ok, so here's how you'd do that in plone | 16:56 |
James--Crook | So the question about different interfaces is to understand better what the differences that can't be subsumed under one interface are. | 16:57 |
James--Crook | (you said that document interface and content interface were different) | 16:57 |
MatthewWilkes | Documents and generic content would have an IContent interface (and ILinkable, all sorts of other stuff). Documents would have the IDocument interface which is a child of the IContent interface. There'd be others, IProgram, IProject etc | 16:58 |
MatthewWilkes | So, you can apply things to IContent and it'd apply to all logically "contentish" things, IDocument is just the document subset | 16:58 |
James--Crook | Ah. OK. That makes excellent sense. | 16:58 |
MatthewWilkes | Wiki would be a document with IWiki as well | 16:59 |
MatthewWilkes | We'd have an IComments interface that you can adapt things to | 16:59 |
MatthewWilkes | If it errors, that means no comments are allowed | 16:59 |
MatthewWilkes | if not, you get an object with methods like getComments() addComment(...) etc that handle it in a generic way | 16:59 |
James--Crook | So, ILinkable is an important new concept for me/Melange. Indeed, it is good to be able to create a link to a (timestamped) version of a view.... | 17:00 |
MatthewWilkes | This interface can then be switched out for a different implementation is needed | 17:00 |
James--Crook | Adding comments... got it. | 17:00 |
James--Crook | How does plone deal with two streams of comments? (the public and private comments)? | 17:00 |
James--Crook | PLone allows you to attach more than one thing to the same interface? | 17:01 |
*** solydzajs has joined #melange | 17:02 | |
*** ChanServ sets mode: +o solydzajs | 17:02 | |
MatthewWilkes | brb, sorry | 17:03 |
James--Crook | s/plu compatibility/plug compatibility/ | 17:03 |
*** Lennie has quit IRC | 17:05 | |
James--Crook | Scrawl + Quills described here: http://blogs.onenw.org/jon/archives/2009/05/01/squall-perfect-plone-blogging-with-scrawl-quills/ | 17:10 |
tpb | <http://ln-s.net/3Cwt> (at blogs.onenw.org) | 17:10 |
*** madrazr has quit IRC | 17:12 | |
*** johndbritton has quit IRC | 17:12 | |
MatthewWilkes | sprry, back | 17:13 |
*** solydzajs has quit IRC | 17:13 | |
MatthewWilkes | James--Crook: Plone has lots of hooks that work on interface, you can assign any number of named things to an interface, or 1 unnamed thing | 17:14 |
*** dhaun has quit IRC | 17:15 | |
MatthewWilkes | For public/private comments we simply set the comment objects to have the IWorkflowEnabled interface and assign them the workflow we wish | 17:15 |
MatthewWilkes | Improving that system is a SoC project this year as it's currently a bit too codey | 17:15 |
James--Crook | Got it. | 17:18 |
*** madrazr has joined #melange | 17:20 | |
James--Crook | I'd also like to pick up on the comment about permission architecture. That is likely to change in Melange. We think we need to be more granular... at the moment we grant permissions in terms of actions on a model. We'd like to take permissions down to individual fields. | 17:22 |
James--Crook | Can you say a bit more about what changed in permission architecture in Plone? | 17:22 |
MatthewWilkes | Ok, in Plone there are a list of permissions and a list of roles | 17:26 |
MatthewWilkes | Users have various roles in subtrees of a site | 17:26 |
* James--Crook nods | 17:26 | |
MatthewWilkes | Permissions are associated with roles in subtrees | 17:27 |
James--Crook | nice. Roles are too all-or-nothing in Melange. | 17:27 |
MatthewWilkes | So if you have a role in a subtree and that role is on the permission, you have that permission | 17:27 |
MatthewWilkes | Each method can have 0 or 1 permissions protecting it | 17:27 |
James--Crook | if you don't have permission, is there an auto fallback for what to do instead? | 17:28 |
MatthewWilkes | If execution passes to a method that the user who started the request doesn't have permission to call the transaction is aborted and a login page displayed | 17:28 |
James--Crook | OK. So fixed-fallback. | 17:28 |
MatthewWilkes | that is expressed as an Unauthorised exception, so you can do try: ... except Unauthorized:... | 17:28 |
James--Crook | so, you could code an alternative if you wanted. nice. | 17:28 |
MatthewWilkes | Also, menu items can be conditional on a permission using the python expression hasPermission(context, request, permission) | 17:29 |
MatthewWilkes | The actions tool allows us to define lists of links/options etc, so we don't have to hard code each option | 17:29 |
* James--Crook nods | 17:30 | |
James--Crook | So, what was the change that was disruptive? | 17:30 |
MatthewWilkes | The permissions arch is probably the thing that we're most proud of | 17:30 |
James--Crook | what aspect of the original design changed? | 17:30 |
MatthewWilkes | Some new convenience methods were added and existing methods moved/renamedto be more clear | 17:31 |
MatthewWilkes | It was at the level of being fixed by an automated script | 17:31 |
MatthewWilkes | but we considered that needed to wait for a major revision, and gave it 2 years of deprecation warnings | 17:31 |
James--Crook | Sounds not too disruptive then. Changing from model level to field level will be disruptive for us, and even more so tree-level rights if we get there (and haven't planned for it). | 17:32 |
MatthewWilkes | We HATE losing compatibility | 17:32 |
James--Crook | Melange can afford to, because it is such a young project. | 17:32 |
MatthewWilkes | yeah. Actually, thinking about it, maybe a more disruptive thing was how we do page composition | 17:33 |
James--Crook | But, we also have a tiny dev team, so if we can engineer things in a maximum power for least coding way (thinx combinatorial design) from the start, then we should. | 17:33 |
MatthewWilkes | We've changed the syntax and definitions, but they all have compatibility layers | 17:33 |
MatthewWilkes | James--Crook: +1 | 17:33 |
MatthewWilkes | We're got a few hundred, with ~20 very active | 17:33 |
James--Crook | he he. We don't even have the concept of page composition. | 17:33 |
James--Crook | We'll probably first start to have something like that through wiki+stats. | 17:34 |
James--Crook | The thinking is that you can position a stats result in a page, e.g. a pie chart, much like positioning an image in a wiki page. | 17:35 |
James--Crook | Not very flexible... | 17:35 |
MatthewWilkes | Well, there's the pre plone 3 way, the plone 3 way and the plone 5 way. 5 is going to be so much fun making :) | 17:35 |
James--Crook | :-) | 17:35 |
James--Crook | I think melange team need to make a maieutics mtrix of features of the things we're 'related' to (CMSs, issue trackers, blogs, wiki....) | 17:37 |
James--Crook | s/mtrix/matrix/ | 17:37 |
James--Crook | identify the independent components. | 17:38 |
James--Crook | At some level I'm not really convinced that different models (GHOP/GHOP/Issues) are true components in the same way that code components are. | 17:38 |
James--Crook | Identifying that we are totally missing the concept of layout, linkable and event will help us not to do things in special case ways when they do crop up... | 17:39 |
James--Crook | MatthewWilkes: can you say more about the difference betwen big modules and features that you alluded to in your e-mail? | 17:40 |
James--Crook | You said "you have to take account of two different uses for the api, the first is to add large new feature sets, such as a new programme, the second is to add small enhancements." and I am wondering if this puts different pressures/forces on the module system... | 17:43 |
MatthewWilkes | Ok, so, for us, content types are a big thing | 17:44 |
MatthewWilkes | they are simple python objects that hook into the "types tool" to allow plone to know about them | 17:44 |
MatthewWilkes | Pretty much everything else is just python that hooks into one of LOADS of different places | 17:45 |
MatthewWilkes | the interfaces are what brings all that together | 17:45 |
MatthewWilkes | Each new module can define its own interfaces to adapt and utilities to lookup | 17:45 |
MatthewWilkes | That means that the core doesn't need to know about all the ways to extend the app, you can extend an extension | 17:46 |
James--Crook | For the sake of my thinking, I can treat 'content types' as visible objects that can be positioned somewhere on a page? | 17:46 |
MatthewWilkes | No, a content type is one of the group of things "Document, event, news item, image, file, etc" | 17:47 |
MatthewWilkes | The list of things that various users can add that contain content | 17:47 |
James--Crook | aha. more fundamental than I was thinking then. | 17:48 |
MatthewWilkes | For melange that'd be "Document, programme, organisation, proposal" | 17:48 |
MatthewWilkes | etc | 17:48 |
James--Crook | ok | 17:48 |
James--Crook | so... when people come to add small enahncements... do they tend to make a module with a number of related enhancements in it... What I'm thinking here is 'overcoming the module overhead'. | 17:49 |
James--Crook | My questioning is to determine whether there is any difficulty in having big modules and tiny ones coexisting and using the 'same' system. | 17:49 |
MatthewWilkes | Yeah, so we care very much about maintaining the usefullness of our code to other python coders | 17:50 |
MatthewWilkes | So we will never write something for plone that could be a python or zope library and an integration for plone | 17:50 |
MatthewWilkes | (anymore) | 17:50 |
MatthewWilkes | In the same way, we don't want to force people to use things they don't want to | 17:50 |
MatthewWilkes | So we have many small modules that don't do particularly much, but are logically independent | 17:51 |
MatthewWilkes | For example, the company I work for, members are organised into groups in one of our systems | 17:51 |
MatthewWilkes | to do this, we have a package called opsuite.departments.interfaces that has all the common APIs for interacting with this relationship | 17:52 |
MatthewWilkes | Then we have opsuite.departments.unit which is the implementation we made | 17:52 |
MatthewWilkes | and opsuite.departments.compat which is an adapter based compatibility layer for the plone default system of groups | 17:53 |
MatthewWilkes | That way, we use opsuite.departments.interfaces in all our code that depends on that function | 17:53 |
MatthewWilkes | but we pick one of the other two to use when deploying a site, and it uses that implementation | 17:54 |
James--Crook | ok. So if some of its functionality were exactly the same as the default, you would have a little code duplication, but that is just a tradeoff... It saves making the general/usual one so full of hooks that no one can find their way around. | 17:55 |
James--Crook | You've given me a lot to think about. | 17:56 |
MatthewWilkes | :) | 17:56 |
James--Crook | I need to go away and think about it for a bit. Thank you very much indeed. I couldn't have hoped for better. | 17:57 |
MatthewWilkes | No problemo, ping me anytime if you want any clarifications | 17:58 |
James--Crook | Thanks! Appreciated. | 17:59 |
*** SRabbelier has quit IRC | 18:00 | |
*** SRabbelier has joined #melange | 18:01 | |
*** ChanServ sets mode: +o SRabbelier | 18:01 | |
SRabbelier | MatthewWilkes, James--Crook: I just read up, was busy :( | 18:02 |
MatthewWilkes | SRabbelier: No problemo :) | 18:02 |
SRabbelier | MatthewWilkes: thanks for the talk, even if I was afk :P | 18:03 |
MatthewWilkes | We're modularity nuts these days | 18:07 |
*** dr__house has quit IRC | 18:07 | |
MatthewWilkes | Zope used to have a bad rep for that sort of thing | 18:07 |
MatthewWilkes | http://pypi.python.org/pypi?%3Aaction=search&term=collective&submit=search should show how much so, "collective" is our name for the SVN repo the whole community has access to, not just the core devs, and houses community modules | 18:08 |
tpb | <http://ln-s.net/3Cxi> (at pypi.python.org) | 18:09 |
ajaksu | oh, great, CC'ed the wrong list in my intro email :D | 18:09 |
*** madrazr has left #melange | 18:24 | |
*** James--Crook has left #melange | 18:30 | |
*** penyaskito has joined #melange | 18:46 | |
*** mithro has quit IRC | 19:22 | |
*** Merio has quit IRC | 19:33 | |
*** tansell-laptop has joined #melange | 19:43 | |
*** johndbritton has joined #melange | 20:08 | |
*** tansell-laptop has quit IRC | 20:44 | |
*** tansell-laptop has joined #melange | 20:44 | |
*** MatthewWilkes has quit IRC | 21:13 | |
*** mithro has joined #melange | 21:33 | |
*** ChanServ sets mode: +v mithro | 21:33 | |
*** dmitrig01|afk has joined #melange | 22:36 | |
*** ChanServ sets mode: +v dmitrig01|afk | 22:36 | |
*** dmitrig01|afk is now known as dmitrig01 | 22:37 | |
*** johndbritton has quit IRC | 22:54 |
Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!