IRC log of #schooltool for Wednesday, 2004-09-15

**** BEGIN LOGGING AT Wed Sep 15 11:31:25 2004
-->You are now talking on #schooltool11:31
-TomLogging-This channel is logged -
-->thisfred ( has joined #schooltool12:04
**** ENDING LOGGING AT Wed Sep 15 12:44:17 2004
**** BEGIN LOGGING AT Wed Sep 15 14:04:52 2004
-->You are now talking on #schooltool14:04
-TomLogging-This channel is logged -
<--Aiste has quit (
-->Aiste ( has joined #schooltool14:38
<--tvon has quit (
-->tvon ( has joined #schooltool14:40
<--gintas has quit (Read error: 60 (Operation timed out))15:04
-->gintas ( has joined #schooltool15:30
---Disconnected ().16:48
**** ENDING LOGGING AT Wed Sep 15 16:48:26 2004
**** BEGIN LOGGING AT Wed Sep 15 20:09:57 2004
-->You are now talking on #schooltool20:09
-TomLogging-This channel is logged -
bskahanHi everyone20:16
bskahantvon is running a little late, but he'll be here soon20:16
-->th1a (~hoffman@ has joined #schooltool20:17
th1aOK, I'm here.20:18
th1aShall we begin?  Don't want to keep the Lithuanians up too late.20:19
th1aLet's try to start with the functionality we need to create next, rather than jumping into architectural questions.20:19
bskahanlet me see if I have a good idea,20:20
bskahanright now students are represented by name and DOB20:20
bskahanin real world situations schools are going to be requires to track a set of information, and then probably want to add additional information that isn't required20:21
bskahanthe required info will probably be consistent by region20:21
bskahanso multiple schools may be able to use that required set20:21
bskahanthe type of information ranges from race/ethnicity, gender to family relationships and class relationships20:22
bskahanthe data will primarily be used for searching, sorting and reporting20:23
bskahane.g., give me grade reports for all african american mails in their first year20:24
th1aby class relationships do you mean economic class?20:24
bskahanno, school class20:24
th1aThat's not "student information," in this case.20:25
bskahanhasTaken, isEnrolledIn, requiredToTake20:25
th1aThat'll be handled by other systems.20:25
th1aDynamic stuff like that is different.20:25
bskahanok, needs to be accounted for so they can interelate20:25
bskahanbut makes sense to be seperate20:26
th1aThis "student information" is sort of a bag for static data not handled by other specific systems.20:26
-->tvon ( has joined #schooltool20:27
th1aStuff that will be directly entered and only changed manually.20:27
tvonHello everyone20:27
th1aAt least that's the way I see it.20:27
th1aHi Tom.20:27
bskahanthat makes sense, other systems can refernce it as "more information"20:28
th1aUp to this point, I've been proposing an ambitious and abstracted approach --20:29
th1acreating a system that will allow the school to set up custom fields for student data through the web.20:30
th1aAnd I'd like to have that in the long run,20:30
th1abut it is by no means necessary to have things ready for HTH in April.20:30
*bskahan nods20:30
th1aIt would be adequate to just do an add-on information component for HTH.20:31
th1aAnd perhaps prudent.20:31
tvonYeah, a TTW system can be fairly complicated and time consuming20:31
th1aBut in the long run I'd prefer if one didn't have to write Python to do this customization at a school.20:32
th1aBased on the emails this morning, it is a little more complicated that I gathered to do it all ttw.20:32
mgedminI don't think it's all that complicated20:32
mgedminexcept that you won't get it for free just by using zope schemas and forms20:33
th1aHow would it work in SchoolTool, then?20:33
*mgedmin thinks20:34
mgedminyou'd probably want to define a named schema20:34
mgedmine.g "student info"20:34
mgedminI think you should be able to update the schema via the RESTive interface (some sort of XML description about field names and types)20:34
mgedminand also a TTW editing form20:34
th1aDo you mean a RelaxNG schema in this case?20:35
mgedminnot necessarily20:35
mgedminfull relaxng might be too much to implement20:35
mgedminwe could define a custom xml format or use a subset of some existing standard20:36
mgedminor even a full standard20:36
*mgedmin wishes he knew more about XForm20:36
mgedminonce you have named schemas20:36
mgedminyou should be able to attach facets to persons20:36
mgedminwe'd have a new type of facet -- CustomDataFacet or whatever20:36
mgedminthat knows the name of the schema20:36
mgedminand holds values for all fields defined in the schema20:37
mgedminor maybe we want a different kind of facet for every schema20:37
mgedminanyway, once you put a facet on a person, you have a place to store additional info20:37
mgedminI'd like to mention that currently all person info (name, date of birth, photo) is stored in a facet20:37
mgedminthe web interface hides these implementation details and simply shows the info as something that a person object has20:38
th1aIn one facet with multiple attributes?20:38
th1aOK, I was trying to figure that out last night.20:38
mgedminnext, we'd need a web interface view that could construct forms according to a schema20:39
mgedminand hook it up to the web interface20:39
mgedminone question: once a schema is defined, can it be changed?20:40
mgedminif so, we'd need to deal with schema versions20:40
th1aWell, it would be nice... but versioning is always a bitch.20:40
mgedmin(go through all object that have a data facet with an older version of a schema, and add/remove fields as necessary)20:40
tvonYou mean if server A has a schema at version 'foo' and server B has the same schema at version 'bar' ?20:40
mgedminno, I mean that I create a schema20:41
mgedminfill in the info for a couple of students20:41
mgedminthen decide that I need a new field in the schema20:41
mgedmin(everything on the same server)20:41
bskahando we think that schools will be changing the schema more than once per year (at most)20:42
th1aThey shouldn't be.20:42
th1aThey would change infrequently.20:42
mgedmina simpler solution is to disallow schema changes20:43
bskahanyeah, so there may be a need to upgrade students 20:43
mgedminyou go to the schema definition view20:43
mgedmindefine a schema20:43
mgedminedit it20:43
th1aOf course.20:43
mgedminthe you click 'create'20:43
mgedminand only then you're able to create facets for this schema20:43
mgedminnext year you can create a new schema ("student info 2005")20:43
mgedminif you do not need to update the data for old students20:43
mgedminhowever if you do need to update existing data, it would be very inconvenient20:44
th1aCouldn't you just import the data into the new schema facet?20:44
bskahanunfortunately, the laws for what must be tracked will change, and the existing students wouldn't have that20:44
mgedminyou couldn't just import because the schema is different20:45
bskahanso there would have to be a migration path from "student-info-2005" to "student-info-2007"20:45
mgedminyou could copy the data manually, but that would be tedious20:45
mgedminif we're talking about migration paths, then it would be simpler to allow versioning of schemas20:45
th1aIt is safe to assume that we won't have massive changes in schemas.20:45
tvonyou could come up with some sort of field mapping setup20:45
mgedminwe could store high-level differences between versions (e.g. v2 -> v3: field 'dob' was renamed to 'date_of_birth', v3 -> v4: field 'comment' added, default value "")20:46
tvonwhich we might want anyways for migration from other systems20:46
th1aSchools will get a couple new requirements, drop a few obselete ones.20:46
bskahanthere won't be massive changes, and the probably won't come every year, more like every 5 years20:46
gintasperhaps a simple solution would be enough; newly created fields on a schema are set to None on all facets that conform to the schema20:47
gintaswhen a schema field is deleted, so is all data in all facets that conform to the schema20:47
gintasand we could deal with renames too20:47
th1aThat sounds adequate to me.20:47
mgedminI don't know if I want to mention the possibility of extracting old data via REST, using XSLT or some other transformation, and then uploading the transformed data again via REST; all in an external script20:47
mgedminit's probably not something that schools would want to do20:47
gintasassuming that we want to make things easier...20:48
gintasactually the schema update process might be quite simple if we make it work one-step-at-a-time20:48
th1aWell, regardless, it sounds like we have a path forward on the overall solution.20:49
gintasi.e., you choose to create a field, press 'Submit', and all facets are updated immediately; similarly for rename and delete20:49
th1atvon and bskahan:  do you have a sense of what direction you're looking now?20:50
tvonth1a: yes20:50
bskahana much better one, I'm going to look over the existing student Facet system20:51
th1aOK.  So you guys should dig around there.20:51
mgedminit is somewhat similair to Zope 3 annotations (especially Dublin Core), if you're familiar with that20:51
*bskahan nods20:51
mgedminwe do not use adapters (yet -- initially had a requirement to reduce dependencies on parts of zope 3 to as little as possible)20:52
mgedminbut the syntax is similair20:52
mgedminif you have an application object (or anything that is IFaceted), you can say20:53
mgedminfm = FacetManager(obj)20:53
mgedminand then you can iterate over all facets or get one by name20:53
mgedmin(see IFacetManager)20:53
bskahanI'll take a look at that tomorrow, looked at it last weekend, but hopefully a better context now20:54
mgedminthere is also some facility to say that adding an object to this group automatically adds a new facet of a certain type on the object20:54
mgedminsome facets have a fixed name (and only one copy of the facet can be added to an object)20:54
mgedminother facets get automatically selected names (and you can have many copies of a facet of the same type)20:55
gintasbskahan: feel free to ask us (well, at least me) for help on IRC, that will save you some trouble20:55
bskahangintas: thanks!20:55
th1aCan we move on to a couple other questions?20:56
bskahanyeah, we should20:56
bskahanI have to run not too long20:56
th1aWe're going to be adding functionality to SchoolTool for the next six months -- is there anything POV would like to change in the core before we get into that?20:57
th1aThings that would cause API breakage?20:57
tvonFolks, I have to get going myself. 20:58
th1aOK.  20:58
th1aI think we got through the most important bit for you.20:59
tvonI'm on IRC 99% of the time, so ping me if anyone wants to chat, other wise I'll be pinging all of you at various points to ask questions :)20:59
tvonI'll check the logs to see what discussion I might have missed in here20:59
*tvon tips his hat20:59
mgedminI'm not sure about core changes20:59
tvonNice talking to you all20:59
<--tvon ( has left #schooltool ("Leaving")20:59
mgedminSteveA wanted us to move towards Zope 320:59
mgedmin(publisher, views, etc.)21:00
th1aWas the previous requirement to stay away from Zope 3 based on the fact that it was still changing quickly?21:00
mgedminthat's my understanding of it21:00
th1aWas the decision to use Twisted made for the same reason?21:01
mgedminprobably -- we did not want to implement an HTTP server from scratch21:01
th1aBut it wasn't because of deficiencies in Zope 3's server.21:02
mgedminyou should ask Steve or Mark about that21:02
gintasI don't think that the requirement was based on technical reasons21:02
th1aOK.  Brian sent Steve an email about that this afternoon, actually.21:02
mgedminI think there also was the risk that we would spend time working on Zope 3 instead of developing schooltool21:02
bskahanI CC'd everyone21:02
th1aI think Mark doesn't want us to get sucked in to other related projects.21:03
mgedminback to core changes21:03
mgedminthere was a plan to make URIs objects instead of interfaces21:04
mgedmin(URIs in this context are identifiers for things like relationship types and roles)21:04
mgedmin(see and ISpecificURI in
bskahanlooking at them now21:05
mgedminI do not recall other core changes21:05
mgedminbut in general SchoolTool was developed in an XP way21:05
mgedmin(do what is needed now, do not try to predict the future, you'll refactor when that becomes necessary)21:06
mgedminso the APIs aren't designed to be stable21:06
mgedminI think that's one of the reasons why Steve wants us to move towards Zope 3 component architecture21:08
mgedmineasier pluggability21:08
bskahanmgedmin: what's the reason for moving to objects for URIs?21:09
mgedmininterfaces are clumsy21:09
mgedmine.g. when you have a relationship21:09
*bskahan nods21:09
mgedminand you want to get the name of it21:09
th1aYeah, even I noticed that.21:10
mgedminyou have to use nameURI(relationship_type)21:10
mgedmininstead of relationship_type.name21:10
mgedminwe initially thought what we might want to use URIs as marker interfaces21:10
mgedminbut we never needed that21:10
th1aChanging the URI's to objects wouldn't be too hard, just a bunch of little code changes, right?21:11
th1aSyntax changes.21:11
th1aEverything is just a bunch of little cod changes :-)21:12
th1aBut fairly superficial changes?21:12
th1aI'd be in favor of getting that out of the way.21:14
th1aOtherwise, I guess we should just go forward.21:15
th1aPerhaps we can do the URI switcheroo at the beginning of the next POV SchoolBell iteration.21:15
th1aThen in November I'd like to see an example product and documentation on how to create add-on products for SchoolTool.21:16
th1aAnd then just putting together functionality for the HTH release (which will be 1.0 beta) in April.21:18
bskahanWe're going to do the student data as an add-on product21:18
th1aI don't think so.21:18
th1aI mean, I don't think we need to.21:19
th1aOr, keeping it in the core would be consistent with the way we've been doing things so far.21:20
th1aIf it isn't in the core, than probably several other things should be moved out of the core.21:20
th1aBut there isn't a compelling case to do that now, I don't think.21:20
th1aSince it is a generic, customizable system itself.21:21
th1aAre we following Zope 3 coding conventions?21:22
gintasstyle is fairly consistent in the Python world I think21:22
bskahan4 spaces?21:22
mgedminof course ;)21:22
th1aBut you guys haven't specifically been following anything in particular?21:22
mgedminPEP-8 basically21:22
mgedminalso Zope 3 influence21:23
gintaswell, there's quite enough code for you to look at21:23
th1aIt would be nice to be able to point to something specific on the web site.21:24
bskahanpython guidelines on python.org21:24
th1aSounds good, anything else?21:24
th1aI mean, anything else for this meeting...21:25
bskahannot from our side21:25
th1aIt is getting late in Lithuania.21:25
th1aIs alga on his honeymoon?21:25
mgedminby the seaside21:25
bskahanmgedmin, gintas: what time is it?21:25
th1aHow was the wedding?21:25
mgedminthe wedding celebration was postponed21:26
mgedminAlbert's grandmother died21:26
th1aThat's too bad.21:26
th1aWell, let's adjourn.21:27
th1aThanks, guys.21:27
bskahanhave a good night folks21:27
mgedminsee you on irc21:27
<--th1a has quit ()21:27
---Disconnected ().21:28
**** ENDING LOGGING AT Wed Sep 15 21:28:18 2004

Generated by 2.15.1 by Marius Gedminas - find it at!