Friday, 2010-06-25

*** Joins: kirillka (~Miranda@global01.vester.ru)00:18
*** Quits: kirillka (~Miranda@global01.vester.ru) (Ping timeout: 260 seconds)00:41
*** Joins: Orac|away (~jb_buldog@082-146-096-175.dyn.adsl.xs4all.be)00:42
*** Joins: kirillka (~Miranda@global01.vester.ru)01:03
*** Quits: micahg (~micah@ubuntu/member/micahg) (Ping timeout: 260 seconds)01:13
*** Quits: Orac|away (~jb_buldog@082-146-096-175.dyn.adsl.xs4all.be) (Ping timeout: 260 seconds)01:36
*** Quits: kirillka (~Miranda@global01.vester.ru) (Quit: kirillka)01:37
*** Quits: siebrand (~beis@sm.xs4all.nl) ()01:44
*** Joins: kirillka (~Miranda@global01.vester.ru)02:31
*** Quits: kirillka (~Miranda@global01.vester.ru) (Read error: Connection reset by peer)02:36
*** Joins: kirillka (~Miranda@global01.vester.ru)02:37
*** Joins: Rixie (~Rixie@0x4dd7390e.adsl.cybercity.dk)03:52
*** Joins: rolfkleef (~rolf@82-204-30-154.dsl.bbeyond.nl)04:01
*** Quits: kirillka (~Miranda@global01.vester.ru) (Quit: kirillka)05:07
*** Joins: necropsy (~necropsy@175.145.0.30)05:09
necropsyHi everyone. Will there be a feature that would make it possible to assign an issue to multiple developers?05:10
*** Quits: necropsy (~necropsy@175.145.0.30) (Ping timeout: 265 seconds)06:06
*** Joins: PennStater- (Aaron@c-98-236-4-139.hsd1.pa.comcast.net)06:16
*** Quits: PennStater (Aaron@unaffiliated/pennstater) (Ping timeout: 264 seconds)06:19
*** Quits: PennStater- (Aaron@c-98-236-4-139.hsd1.pa.comcast.net) (Changing host)06:27
*** Joins: PennStater- (Aaron@unaffiliated/pennstater)06:27
*** PennStater- is now known as PennStater06:28
*** Joins: micahg (~micah@ubuntu/member/micahg)08:16
*** Quits: dhx_m (~anonymous@c122-107-185-177.eburwd5.vic.optusnet.com.au) (Remote host closed the connection)08:44
*** Quits: micahg (~micah@ubuntu/member/micahg) (Read error: Operation timed out)09:16
*** Joins: daryn (~daryn@rrcs-76-79-4-2.west.biz.rr.com)10:00
*** Parts: Rixie (~Rixie@0x4dd7390e.adsl.cybercity.dk)10:06
*** Joins: dhx_m (~anonymous@c122-107-185-177.eburwd5.vic.optusnet.com.au)10:27
*** Quits: rolfkleef (~rolf@82-204-30-154.dsl.bbeyond.nl) (Ping timeout: 258 seconds)11:24
*** Joins: moto-moi (~hylke@cara.xs4all.nl)11:59
*** Joins: mantisbt_66669 (c83b8855@gateway/web/freenode/ip.200.59.136.85)12:35
*** Quits: mantisbt_66669 (c83b8855@gateway/web/freenode/ip.200.59.136.85) (Client Quit)12:36
*** Joins: siebrand (~beis@sm.xs4all.nl)12:45
nuclear_eclipsedaryn: around?13:29
darynnuclear_eclipse am now13:41
nuclear_eclipsehi daryn 13:46
darynhello13:46
nuclear_eclipsehad an initial look at filters13:46
darynok13:46
darynfire away13:46
nuclear_eclipsehaven't been able to test it out yet though, just been browsing the github history13:46
darynso...initial thoughts?13:48
nuclear_eclipsefirst, it seems to me that the filter class hierarchy is rather complex, and relatedly, it seemingly gets split up between almost too many files...13:48
nuclear_eclipserelatedly, it seems like there's a lot of extra logic that gets put into each end class, and maybe it's me, but it seems like there should be a simpler solution... =\13:49
nuclear_eclipsebut before I get too into it, mind if I ask what your design decisions were, and how that might affect what I'm seeing?13:50
darynwell...13:50
daryn# 1 i wanted to not stray to terribly far from what you started with MantisFilter13:51
darynthe number of  classes actually turned out to be quite a few more than i first anticipated13:52
daryni really don't like putting multiple classes into one file but it could be done13:53
daryni initially had a switch for the variations of field type but then i was winding up with switches everywhere13:53
darynI wouldn't be opposed at all to merging some classes where it makes sense...for example multi-int, multi-string13:55
nuclear_eclipseanother concern is that perhaps too much of the logic for handling/rendering filters is in kept in the same class hierarchy, like MantisFilterSort and MantisFilterSticky which seem to be separate classes that don't really act like the other filters13:56
daryncould be.  they were that way because they are stored that way in the filter string and still need fields on the form13:58
nuclear_eclipseI guess I feel like the MantisFilter* classes should be reduced to only describing the datasets, and use some sort of external system to aggregate, query, and render that data set13:58
nuclear_eclipseI'm also not really sure what the point of MantisFilterCookieVersion is for...13:59
daryni don't know about that one.  i can see that is kind of the direction you were going...it seems even more complex to me.13:59
darynFilter13:59
darynCookieVersion probably can go away. again it was just another field in the filter string and i was trying to maintain the existing strings without a bunch of weird code to figure out what should be a class and what shouldn't...it just helps me to break everything down first and then work on restructuring in a more coherent way14:00
nuclear_eclipsethe reason I suggest that is because I want the process of creating new filters to be as simple and straightforward as possible; if the current MantisFilter* classes are an example, then the complexity of writing new filters seems to have increased at least by a factor of ten14:01
daryni'd disagree actually14:01
darynwe do have to add a couple of missing pieces that i'm working on but essentially to add a filter one just needs a small class and a configuration to use it14:03
nuclear_eclipseagain, maybe this is just the result of not having fully comprehended what's going on14:03
darynand everything needed is in that one class14:03
darynexcept possibly a different template if the field output is different than what is available14:03
darynwell, i agree that there are certainly some changes needed in the class structure and some of the classes should be perhaps be removed in favor of a different process...14:06
nuclear_eclipsealso, starting to get nit picky, but I'd personally prefer something like $filter->addWhereClause( ...) rather than $filter->addQueryElement( 'where_clauses', ... )14:09
darynhehe...i already have that in my branch14:09
nuclear_eclipsefirst method IMO would be less error-prone, ntm more succinct14:10
nuclear_eclipselol14:10
darynthe way i work is probably a nightmare to most people...i usually just have to start coding and stuff gets rewritten a lot before i get what i want.14:11
nuclear_eclipseI sometimes do that to explore the problem space with a small prototype, but I usually try to sit back and design what I want, and then simplify my design as much as possible, before I actually start putting real code in place14:13
nuclear_eclipseeven if the designing is just a 20-30 minute meditation, I find it helps to focus some time on looking for ways to simplify the design before moving forward14:14
nuclear_eclipseit's unfortunate, but most of the time, simplifying code that's already in place is near impossible14:14
darynyes...especially filters14:14
nuclear_eclipseso doing as much simplification up front as possible is definitely worth the reduced headache later on14:15
daryni could see that there was alot of duplication but it took me several runs through the code to even figure out what was really going on.14:15
darynthat's when i started trying to break it into little bits and got where i am now.14:15
nuclear_eclipsetbh though, if it simplifies your design at all, I'd personally be willing to just completely ignore any existing filters or conversion of those filters to the new format14:15
darynhm...now you tell me14:16
daryn:)14:16
nuclear_eclipse;)14:16
nuclear_eclipseI was never really prompted to fully think about replacing the existing filters until looking through what you have14:16
nuclear_eclipseup to now, I tried my best to stay away from filters altogether, and only touch the bare minimum if I had to do anything at all14:17
daryni think that's how everyone felt about it but stuff just kept getting tacked on14:18
nuclear_eclipsethe only reason I even wrote MantisFilter and MantisColumn in the first place was because I needed a way to add those features to the plugins I was writing14:18
darynadding a new filter or modifying an old one required checking in 10 (arbitrary exaggeration) different places14:18
daryncopy and paste a chunk of code here and there14:19
nuclear_eclipseten places is probably an understatement14:19
nuclear_eclipseif you didn't find 10+ places to change, you were probably missing something ... =\14:19
daryni found that the system was completely reloading the query 3 or 4 times  for one page load14:19
nuclear_eclipsethere were two disjoint code paths just for dynamic versus static filter pages14:20
darynyeah and they were never both updated14:20
darynwe'd add a field in one and forget the other, fix a bug in one and forget the other...14:20
nuclear_eclipseyup14:21
nuclear_eclipseanother random thought -- I wonder if we could combine filter changes with an overhaul of view/update pages...14:21
darynSo anyway, I do have some additional ideas that i think will move us closer together.  It will take me a bit to get them ready and i'm heading on vacation in a couple of weeks so no promises on delivery14:21
darynthe bug pages?14:22
nuclear_eclipseyeah14:22
daryni'm listening14:22
nuclear_eclipseie, have a central MantisField class that defines all the fields usable on a report/view/edit page for an issue, and then define MantisFilter objects for how to search for that data14:23
nuclear_eclipseit's probably not easy though14:24
darynhm...sounds like you, me and dhx_m or at least on the same wavelength....14:24
nuclear_eclipsehaving a set of generalized MantisField classes would at least allow us to properly "template" the report/view/edit pages as a set of fields that each define their own "cell" of data14:25
nuclear_eclipsewe could potentially even combine that along with filtering, rather than keeping them separate14:26
nuclear_eclipseie, you'd more or less never need to filter on something that's not a specific field, and if you do, the existing MantisFilter for plugins could still fill that role...14:27
nuclear_eclipse /shrug14:27
nuclear_eclipsethere's so much I would like to be able to do, and so little time or energy...14:27
nuclear_eclipseit was nice getting paid to improve Mantis14:27
nuclear_eclipsetoo bad that had to end14:28
darynhow do you mean you'd never need to filter on something not a specific field?14:28
nuclear_eclipsewell, I can't think of a single filter in mantis that isn't a direct counterpart to a field on the report/view/edit page...14:29
darynexcept that meta fields, sticky, show, changed,14:30
nuclear_eclipsesticky is still a field of each issue, last changed is a field of each issue...14:30
daryntrue14:31
darynchanged field though is not last changed...it's related to last changed but not the same14:31
nuclear_eclipse?14:31
nuclear_eclipseI'm just thinking of some unified datatype:14:32
darynyeah14:32
daryni need a better picture i guess14:32
nuclear_eclipseclass MantisField { func view(bug_id); func edit(bug_id); ... func filter(...); func query(...); ... }14:33
nuclear_eclipseand if the field declares its type, and mantis can interpret that correctly, it completely separates the display output from the data itself14:33
nuclear_eclipsethe only oddity is certain field types that don't fit "standard" types, like my Product Matrix plugin 14:34
nuclear_eclipsebut you could potentially just make that another "standard" type where the plugin does all of its own output formatting, or something...14:35
nuclear_eclipseie, mantis gives it a cell, and it generates its own markup as needed14:35
daryni'm not really following how this would work...  you are passing bug_id to func view... what is the context of that?  what would it do, how would it be used?14:37
nuclear_eclipseie, the bug view page would have a list of fields that it needs to display, and for each field, tells it what bug_id is being viewed, and the field object returns that bug's data for the given field, and then the view page renders that in some appropriate cell based on the type of data for that field14:39
darynwhere is the data for the bug?14:40
nuclear_eclipsethe view page doesn't need to know anything about the bug itself, nor do the field objects need to know anything about how the bug API is caching the bug data in the backend so it's not constantly hitting the database14:40
nuclear_eclipseie, it's a complete separation of concerns14:41
darynright14:41
nuclear_eclipsebut that sort of thing will allow custom fields and plugin fields to treated identically to each other, because either way, the bug view page isn't responsible for gathering any of the data, it only knows what fields it needs to display, and how to render specific data types14:42
darynright14:42
nuclear_eclipseand btw, changed filter is just a filter for last_updated, and just happens to display a bit different depending on current time in relation to the last_updated value14:44
darynyeah,yeah14:44
daryn:)14:44
darynit doesn't change the result, just the display of the result14:45
nuclear_eclipseand btw, I'm not just being harsh on you, I made this same sort of argument about externalizing the rendering from the data type when I was working on game projects in school14:45
daryni'm cool.  just trying to process a different way of thinking about it.14:46
nuclear_eclipseOOP says that each object should know how to render itself, but a) that splits rendering algorithms into N+1 places, where N is the number of data types you have, and b) starts mixing unrelated code segments into a single data structure14:47
nuclear_eclipseso wherever possible, I try to separate out rendering logic from data definitions14:47
nuclear_eclipse"rendering logic"14:48
nuclear_eclipseit's not always in regards to rendering, but it's a similar concept for other topics14:48
darynwell...in some sense that's why i have the MantisBugFilter object...it's a collection of filters and handles the things that are related between all the filters but the filters handle their own differences14:49
nuclear_eclipseyeah, and I think that's a good start, and like I said, I could just have an incorrect mental model of what's going on14:50
daryneach filter knows everything it needs to know about itself and if it needs to know about another filter it can get that...ie status/hide status14:50
nuclear_eclipseit just seemed to me that there was still a lot of verbose duplication of logic between all the MantisFilter* classes14:51
darynthere may be some duplication but there shouldn't be a lot.14:51
darynif there is i'm in the process of removing it14:51
nuclear_eclipseugh, I want status/hide status to die a quick but extremely painful death14:51
daryn:)14:51
darynit has a place14:51
nuclear_eclipsegimme a damn multiselect box anyday14:52
darynwe're forcing our filters to advanced view14:52
darynso that's what you get14:52
darynk. well i have a lot to think about now and a lot of other work to get done before i can get into filters again so...thanks for your input. was helpful14:53
nuclear_eclipseyou're welcome14:53
daryni'll try to have an update in ... a week or two14:54
nuclear_eclipseok, and like I said about templates, I'm willing to compromise on what I'm looking for just because it's *implemented* and *better than what's already there*14:54
nuclear_eclipseso please don't get discouraged :)14:55
daryn:)14:55
daryni'm facing a pressured deadline to get our mantis upgraded so it's going to be a bit before i can get back to templates but they are still in my mind14:56
nuclear_eclipseall I care about is making you think about what I've mentioned, and make *some decision*, just as long as it's actually a decision with a reason behind it, rather than "that's just how it happened"14:56
daryn:)14:57
nuclear_eclipseif you can give me an actual reason of why I'm being stupid about something, I'll be happy that you were able to let me realize I was being stupid :P14:57
nuclear_eclipseanywho, get back to work slacker, stop wasting your time on that stupid IRC crap14:58
* daryn ... nose to the grindstone14:59
* daryn nope...teatime14:59
*** Joins: paulr (~paul@cpc1-enfi9-0-0-cust389.hari.cable.virginmedia.com)15:00
nuclear_eclipsephew, we finished chatting before paulr crashed the party15:01
nuclear_eclipseoh hi Paul!15:01
* daryn runs to hide15:01
paulri'm hopefully catching up with dhx tomorrow15:09
paulrneed to diff java15:10
*** Joins: fanno (~Morten@90.184.93.233)15:20
*** Joins: rolfkleef (~rolf@urtica.xs4all.nl)16:11
*** Quits: mellen (~thansen@x1-6-00-22-02-00-0c-40.k253.webspeed.dk) (Ping timeout: 252 seconds)17:05
*** Joins: mellen (~thansen@x1-6-00-22-02-00-0c-40.k253.webspeed.dk)17:07
*** Quits: moto-moi (~hylke@cara.xs4all.nl) (Quit: Ex-Chat)17:33
*** Joins: micahg (~micah@ubuntu/member/micahg)17:36
*** Quits: daryn (~daryn@rrcs-76-79-4-2.west.biz.rr.com) (Ping timeout: 264 seconds)17:56
*** Joins: daryn (~daryn@rrcs-76-79-11-122.west.biz.rr.com)18:13
*** Quits: daryn (~daryn@rrcs-76-79-11-122.west.biz.rr.com) (Quit: Ex-Chat)18:24
*** Quits: rolfkleef (~rolf@urtica.xs4all.nl) (Ping timeout: 240 seconds)18:58
*** Quits: scribe9343423 (~scribe934@static.96.23.63.178.clients.your-server.de) (Remote host closed the connection)19:59
*** Joins: scribe9343423 (~scribe934@static.96.23.63.178.clients.your-server.de)20:00
*** Quits: paulr (~paul@cpc1-enfi9-0-0-cust389.hari.cable.virginmedia.com) ()20:18
*** Quits: fanno (~Morten@90.184.93.233) (Quit: Leaving.)20:23
dhx_mnuclear_eclipse: I was thinking of a Field class that is extremely basic at it's core20:36
dhx_mnuclear_eclipse: then you have "interfaces" that print the field in HTML, plaintext, XML, etc20:37
dhx_mthat way you can use the Field class without bringing in 1000's of lines of HTML parsing code, etc20:37
dhx_m(ie. keep coupling low)20:37
*** Quits: micahg (~micah@ubuntu/member/micahg) (Ping timeout: 276 seconds)21:12

Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!