IRC log of #schooltool for Monday, 2007-04-02

*** pcardune has quit IRC02:23
*** jfroche has quit IRC03:20
*** wjohnsto has left #schooltool05:25
*** wjohnsto has joined #schooltool05:25
*** pcardune has joined #schooltool05:29
*** didymo has quit IRC07:13
*** didymo has joined #schooltool08:13
*** pcardune has quit IRC08:19
*** pcardune has joined #schooltool08:25
*** Aiste has joined #schooltool09:00
*** Aiste has quit IRC09:42
*** wrobel has joined #schooltool09:59
*** Aiste has joined #schooltool10:17
*** thisfred has joined #schooltool10:32
*** pcardune has quit IRC11:33
*** jinty has joined #schooltool11:34
*** jfroche has joined #schooltool11:55
*** ignas has joined #schooltool12:24
*** jfroche has quit IRC13:20
*** jfroche has joined #schooltool13:20
*** jfroche has quit IRC13:51
*** alga has joined #SchoolTool14:26
*** alga has quit IRC14:29
*** mgedmin has joined #schooltool14:56
*** alga has joined #SchoolTool15:27
*** mgedmin has quit IRC15:31
*** mgedmin has joined #schooltool15:33
*** mgedmin has quit IRC15:41
ignasjinty: ayt?16:03
jintyignas: yep16:03
ignasjinty: how important do we want schooltool conf to be? i mean do you prefer things like "which place schooltool person data should come from" to be set in schooltool.conf, or through the web?16:04
* ignas has an idea of how to solve the architectural dilema and database problems (at last)16:04
jintyI think you need to answer the question: Is this something a sysadmin would need to change?16:04
ignashmm16:05
jintyif yes, then it should be in the config filr16:05
jintyfile16:05
ignasjinty: do you have time for a story? :)16:05
jintyguess so16:05
ignasmy idea is having 2 layers of components16:05
ignasseparating the "model" and the "view"16:06
ignasso when initially configuring schooltool16:06
ignasyou would select "model components"16:06
ignaslet's say you would have 3-4 different "Person Source" components16:06
jintyI think I have your answer for you:16:07
ignasexternal database, "some proprietary SIS (TM)", "lyceum DB (TM)", and schooltool built in16:07
jintycan I permanently break the schooltool database by twiddling this value?16:08
ignashmm16:08
jintycan I just twiddle it and see what happens without bad things happening?16:08
ignaslet me try and explain16:08
jintyok16:08
ignasso let's say in the middle of the year you suddenly want to switch to another Person store16:09
ignasand now it depends if you want to "Remove" the old one (as in launch subscribers that clean up after all the objects)16:09
ignasor just "disable" the old one16:09
ignasand same for the new store16:09
ignasyou can say - take persons from here16:09
ignasbut other components will not perform any operations with their data upon switch16:10
ignasor you can "Register" the new data store16:10
ignasso that it will tell let's say to attendance - here we go 20 new persons, do something about them16:10
ignasbut normally - if you are not doing "Unregister" "Register" - the database would stay untouched16:11
ignaswith a web UI16:11
ignasit is easy to say - now we will use this other database, but as it has all the same persons - don't do anything about it16:11
ignasor say - hey, these are completely new persons, remove the data about old ones, and run subscribers for every person in the new database as if he was just added16:12
jintyhmm, this is quite difficult to say16:12
ignaswell - you just pick components you want16:12
ignasand either click "Disable"/"Remove" on the ones you don't need anymore16:13
ignasand "Enable"/"Register" on the new ones that you will use16:13
jintyI think we have 4 possible places to store configuration: python, zcml, config file, ZODB16:13
ignaszcml - will not be used for that if i will succeed16:13
ignaspython - hmm, don't think it is being used now16:14
ignaseven if it is - it's for UI not data components16:14
jintyyes, I agree zcml and python are not the places you want to store this info16:14
jintyespecially if you want non-developers to be able to change this16:14
ignasUI plugins will just say "I depend on Persons and Groups and Lyceum Attendance"16:14
jintyI think the config file is only for system administrators16:15
ignasand if you will have these 3 data plugins set up, you will be able to enable this "UI" plugin16:15
jintyI can't think of much that interests the system administrator in what you've just said16:15
ignasindeed, admins care about ports, the place of Data.fs, the place of plugin files16:16
jintyalso: access control (in/out)16:16
ignas?16:16
ignasaccess control or authentication mechanism16:17
jintythe admin generally likes to be able to say: Never make an outgoing connection to anything.16:17
ignasahh16:17
ignashmm, don't know what to do about that16:17
ignasi mean - LDAP breaks this ...16:17
jintyor "only allow any connections to these IP's"16:17
jintyyeah16:17
jintybut it's nice to have certain unbreakable rules on the filesystem16:18
ignasadmin might want to be the one who configures LDAP, SQL connection etc.16:18
jintythat can limit damage in case of attack16:18
jintydefinitely16:18
ignashmm, so if you add a SQL Person component - it will have it's own config file that admin can tweak16:19
ignaswhile the enable/disable part16:19
ignaswill be left in the Web based UI16:19
ignasso you install Schooltool.SQL plugin, you configure it16:19
jinty(like cross site scripting attack to change the LDAP server)16:19
ignasand then enable it TTW16:19
jintyyes, I'd like that kind of thing16:19
ignasmakes sense16:20
jintyat least for my sites, relational database connections are very important16:20
jintybecause I need to control how many there are16:20
ignasyes, and you wouldn't want to edit them through the web i guess16:20
jintyto limit resource usage on the database server itself16:20
jintyno, I want this kind of stuff only controllable from filesystem files that the schooltool user cannot change16:21
jintyi mean "no to TTW control"16:21
jintybut, then, I am a special case user that want's things secure16:21
jintyothers might want them easy16:22
jintyso perhaps a one line config file for the plugin:16:22
jintyallow_ttw_config = True16:22
ignaswell - it will depend on the plugin :)16:23
ignasi mean - if the author of the SQL plugin will add the UI for ttw configuration - then yes16:23
jintyyes, and the user base of the plugin16:23
jintythe users will _scream_ for this16:24
jinty"Please, let me hold the gun in my hands"16:24
ignasat last i know that it is possible to do the plugin thing in such a way that does not break anything if you remove a plugin16:25
ignasand that allows users to safely play with the UI16:25
jintymind sharing this insight?16:25
ignasplainly isolating persons, groups, resources, calendars from each other as much as possible16:26
jintyThe problem is pickles that don't have a backing class on the filesystem anymore, right?16:26
ignasyes16:26
ignasbut that is a problem only if "schooltool.person" and "lyceum.person"16:27
ignasare storing persons in app['persons']16:27
ignaswhich is the part that is fixable16:27
ignasall the plugins should be contained the way annotations are16:27
ignasin their own small space (even if they are in the same ZODB)16:27
ignasso only schooltool.person can access app['persons'] and only lyceum.person can access app['lyceum.person'] or the equivalent16:28
jintyah, so something like this: app['persons']['lyceum.person']16:28
* jinty waves hands vigorously16:28
*** th1a has joined #schooltool16:28
ignasor just plain IAnnotations(person)['lyceum.person']16:28
ignasor just plain IAnnotations(app)['lyceum.person']16:29
ignasi mean16:29
jintyyeah, use annotations if the infrastructure is already there16:29
ignasso if you remove lyceum person data plugin - UI plugins will yell at you "IPerson data plugin is missing"16:29
ignasuntil you will enable "schooltool.person" or even SQLPerson16:29
th1aWell, looks like I've arrived in the middle of an interesting conversation.16:30
ignasi would go for something like IPersonData(app) i think16:30
jintyyeah, that sounds good, except for the synchronization issues16:30
ignasjinty: which ones?16:30
jintyI mean, now you have lots of people all over the place16:31
jintysuppose you want to add the attribute "Address" to a SQLPerson16:31
ignasyes16:31
jintybut Address isn't in the SQL database16:31
ignasyes16:31
jintythen what do you do16:32
jinty?16:32
ignasthat's the point - you have "schooltool.sql.person" plugin that is an egg16:32
ignasso you either reuse it and modify it16:32
ignaspython way16:32
ignasand add an evolution script to schooltool.sql.person.generation16:33
ignasok16:33
ignassql16:33
ignasno evolution16:33
ignasbut you just add the field to the table16:33
ignasand modify the code16:33
ignasin the data plugin16:33
ignasand fix the UI in the UI counterpart16:33
ignasor rename it to my_school.sql.person16:33
jintyHmm, my issue was more16:33
ignasand do the same16:33
jintyI don't want to store the Address in the SQL database16:34
jintyit's just a place for authentication16:34
jintyLDAP would be a better example, actually16:34
jintybut I want it available to schooltool16:35
ignaswell - mixing SQL and ZODB would be difficult from the plugin perspective16:35
ignasLDAP is different16:35
jintyand I may, may not want it to move if use a different plugin16:35
ignas1 egg to enable LDAP authentication utility16:35
ignas1 egg to add LDAP as a person data source16:35
jintyso how does LDAP as authentication work16:36
ignasyou can use LDAP authentication, but still use schooltool.person as the storage of information16:36
ignasLDAP authentication is not touching schooltool database when authenticating16:36
jintyok, so the issue is kindof avoided for now.16:36
ignasand if schooltool Person is not available16:37
ignasstandard IPersonData interface is used to add one16:37
jintysorry, I know this is taking a long time, but I'm finding it difficult to explain my point16:37
ignasnot a problem, i want as much feedback as i can get16:38
jintyhmm, so lets assume that a "extra_person_data" plugin exists16:38
jintyperhaps demographics16:38
ignasi'd go for schooltool.demographics.person plugin as a separate data store, but it can be done as an addon as well16:39
ignasso let's say an addon16:39
jintyso to get demographics info, you would do:16:39
th1aNo jfroche this morning?16:39
jintyIAnnotations(app)['schooltool.demographics'][integer_person_id]16:40
ignasjinty: no, you would do:16:41
* th1a is perfectly happy following along with this conversation for now...16:41
ignasIDemographics(app).getDemographics['string_person_id']16:41
ignasIDemographics(app).getDemographics('string_person_id')16:41
ignasth1a: http://licejus.pov.lt/groups/1a/view_timetable.html16:42
jintyyeah16:42
jintythat's cool16:42
jintyI was about to suggest classing plugins according to the interface of the data they can provide16:42
ignasand you would either use UI that has IDemographics as a requirement, or enable a Demographics UI plugin16:43
jintythat's cool as wee16:43
jintywell16:43
jintyso the ZODB demographics plugin would probably do what I mentioned16:43
ignasso if you disable Demographics Data - UI plugin either yells at you, or disables itself until you enable either the same plugin or another plugin that provides IDemographics16:44
ignasyes, ZODB plugin would do that under the hood16:44
th1aignas: What is that showing me?16:44
jintywhile the SQL demographics plugin would do something completly different16:44
ignasth1a: deployed the new things lyceum asked for16:45
th1aIs pamoka a period?16:45
ignasth1a: yes16:45
jintyignas: hmm, interface suggestion: This looks like the gateway pattern16:45
* jinty checks his books16:45
ignasnow the lyceum database will stay stable as i have evolution scripts for it going16:45
th1aIs "1a" a form?16:45
ignas"1a" is a class16:45
th1aIs "1a" a form?16:45
th1aIs 1a a form?16:46
th1aoops.16:46
th1aSorry.16:46
ignasform?16:46
th1aDidn't mean to repeat myself.16:46
th1aWhat do you mean by "class" in this case?16:46
ignasgroup of people16:47
ignasstudents16:47
th1aSo at some times the class has students in three different sections?16:47
ignasyes, some students have german, some have french for example16:48
ignasgirls have sport with one teacher in one place, guys with another teacher in another place16:49
th1aOK.16:49
jintyignas: permutations of the interface IDemographicsGatway(app).getDemographics(PersonId) where the return object implements IDemographics16:49
ignasjinty: hmm, that would make sense16:50
jintyignas: why isn't app a Utility?16:50
jintythen it would just be getDemographics(PersonId)16:50
ignasjinty: because we had the idea of having multiple apps in the same ZODB16:50
jintyyes, but then a local utility16:50
ignasgetDemographics - you would have to import it from somewhere so we still want an adapter or a demographics utility16:51
ignasbut yes - ISchoolToolApplication(None) is acting like a utility lookup16:52
jintythough that should probably be more explicit call to getUtility16:53
ignasfixable in the long run :)16:54
jintybut I now disagree with myself about getDemographics, for the same reason I don't like zapi16:54
jintyrather not introduce a simple wrapper aroung the component interface that just obscures things16:55
jintyok, anyway, it looks good16:55
jintyIt also works well with the Object-Relational-Mappers that abound16:55
jintythe only problem I see if you want to make a fully SQL schooltool16:56
ignasyou will still have the app in ZODB16:56
ignasbut the rest will work16:56
ignaswell - ok16:56
ignascalendars will stay in ZODB16:56
ignasunless you really really want to store them in SQL16:56
ignasand will rewrite everything16:56
th1aI don't think a fully SQL-able SchoolTool is ever necessary.16:57
jintyyes, but if you apply this pattern to all other things eventually, you will be eventually able to do those things in SQL as well16:57
* jinty is thinking ___far___ into the future16:57
ignasjinty: not much need to have it in full SQL, but that gets us a lot lot closer to it16:58
th1aignas: I'm a little unclear on how extensive the changes you're discussing here are.16:58
jintythe biggest problem I find when I do such things is normally efficient searching16:58
ignasjinty: try eficient sorting in UTF-8 strings in SQL ... :(16:59
* jinty normally just sorts the bytes, no customers have comlained yet17:00
ignasth1a: very extensive, but knowing the direction helps to not mess things up for the future17:00
jintyI mean when you want to do a join over people and demographics17:00
th1aignas: Right.17:00
jintyyeah, I think that the fact that the pattern makes a SQL schooltool foreseeable is a side effect17:01
ignasjinty: and i am talking about the nasty detail that different languages sort differently and SQL can't cope with that (indexing is quite impossible)17:02
ignasth1a: so now i will start merging the resource booking branch17:03
ignasand talking to lyceum about some related UI improvements17:03
th1aignas: Cool.17:03
ignasand begin working on the journal17:03
jintyignas: yep, but all my clients havn't cared about that detail yet, nor even that the bytes of UTF-8 sort differently to unicode17:04
ignas:) good to you17:04
ignasthe first assignement i got was "sort students by surname"17:04
ignasand make "čibiraitė" appear before "filipavičius" not after "Zigmuntaitė"17:05
* jinty loves his clients, their non-techiness, and their englishness :):)17:05
th1aignas:  Coul you make me a very simple report that I could put on the web site that goes through the list of features in your quarterly plan and has a screenshot illustrating the feature.17:05
th1aThis would be partly for confirmation of your bonus and partly to show people what's going on.17:06
ignassomeone should do it for the resource booking as well17:06
ignasth1a: priority screenshots, or priority merging ?17:07
th1aWell, do you want your bonus now or in a month?17:08
th1aIf you do it now you can give me a new invoice.17:08
th1aI don't need the report to be elaborate.17:08
ignasok, i'll see to both as soon as possible :)17:09
ignasi still have to look through everything i did this quarter ;)17:09
th1aI don't have much else, especially without jfroche here.17:10
th1aHe must be sleeping off his sprint.17:11
th1ajinty: Did you book yourself a flight to Seville?17:12
ignasth1a: i am talking to Bronius Skūpas now about some possible improvements already17:18
th1aignas: such as?17:19
ignasmaking timetables for every teacher public17:19
ignasmaking it possible to see the timetable for the whole school for Monday, Tuesday etc.17:19
ignashaving timetables for sections public as well17:20
th1aYes, those would be generally useful.17:20
ignashaving timetables for rooms as well17:21
th1aignas: Do you think you can come to a sprint in the US (in Washington) from August 5-8?17:21
ignasi think so17:22
th1aThat's not, say, immediately before school opens in Lithuania?17:23
ignasno, schools open 09-0117:23
th1aOK.  That's the last big CanDo sprint of the summer, and it would be very helpful to have you there.17:24
th1aignas: So can I tell Jeff you'll be there, or do you want to check your calendar more closely and let me know?17:26
ignasi'll look at it17:27
ignasand write you an email today or tomorrow17:28
ignasok?17:28
th1aOK.17:30
th1aThat's all I've got.17:30
th1aHave a great week.17:30
* th1a drops the bag of gravel.17:30
*** bnguyen has joined #schooltool17:35
*** kjcole has quit IRC17:43
*** mgedmin has joined #schooltool18:18
*** pcardune has joined #schooltool18:23
wjohnstopcardune: ayt?18:34
*** jinty has quit IRC18:39
*** jinty has joined #schooltool18:56
*** pcardune has quit IRC19:13
*** thisfred has quit IRC19:52
*** pcardune has joined #schooltool20:12
* pcardune will be back at 2pm EST20:22
* pcardune will answer questions at that time...20:23
*** th1a has quit IRC20:28
*** ignas has quit IRC20:37
*** alga has quit IRC20:46
*** pcardune has quit IRC20:46
*** Aiste has quit IRC21:10
*** pcardune has joined #schooltool21:10
*** pcardune has quit IRC21:43
*** pcardune has joined #schooltool21:54
*** pcardune has quit IRC22:20
*** Aiste has joined #schooltool22:21
*** pcardune has joined #schooltool23:04
*** Aiste has quit IRC23:10
*** pcardune has quit IRC23:44

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