GNUe Traffic #29 For 18�May�2002

By Peter Sullivan

Awful pun of the week - ".aq is antarctica - perhaps gnue can move its cvs there, then code freezes are much easier"

Table Of Contents


This Cousin covers the three main mailing lists for the GNU Enterprise project, gnue ( , gnue-dev ( and gnue-announce ( . It also covers the #gnuenterprise IRC channel. A great deal of development discussion for this project goes on in IRC. You can find #gnuenterprise on, or you can review the logs ( . For more information about the GNU Enterprise project, see their home page at ( .

1. Business objects in GNUe Application Server

6�May�2002�-�8�May�2002 (12 posts) Archive Link: "[Gnue-dev] Appserver Documentation"

Topics: Application Server

People: Reinhard M�ller,�Neil Tiffin,�Jens M�ller

Reinhard M�ller announced that "The appserver documentation (the whitepaper as well as the API documentation)" had been moved into CVS. It could be compiled using the make command and texinfo. Neil Tiffin suggested "I think there is a need to define collections of business objects. We went to far with GEAS having inheritance, but I think flat business objects are not quite enough." Reinhard was not sure if there was any "practical use of this" when it came to writing applications.

Jens M�ller gave an example using Amazon. Neil said that "We have said that business objects will mask the relationship with tables so that there may exist a 1 to many relationship between business objects and tables." Therefore, "I would like to be able to define a master business object that consists of regular business objects that ultimately relate to various tables. The relationship between master business objects and regular business objects would be many to many." . He added "This allows us to define smaller scale business objects that are related to master business objects but remove the various join details from the GUI." . He thought "that implementing general inheritance is a bit much" but that "Maybe there is a better way of doing this."

2. Danish non-free ERP software firm bought by Microsoft

6�May�2002�-�12�May�2002 (7 posts) Archive Link: "Microsoft Navision buyout?"

Topics: Financials (Accounting), Why GNUe?

People: Todd Boyle,�Reinhard M�ller,�Derek Neighbors,�Christopher Brown,�Kenneth Reiszner,�Christopher Brown

Todd Boyle cut & pasted the announcement of the take-over of the Danish enterprise software firm Navision by Microsoft, and asked gloomily "Can any competing midrange or enterprise software survive on Windows, against the $Billions of Microsoft resources?" . Reinhard M�ller was more up-beat - "Sure it can. If it is Free Software. Free Software always survives." . Todd felt that "On Windows? That's debatable." Derek Neighbors said "If microsoft uses the same greedy licensing schemes it does for operating systems, surely people will survive. Free Software who is not concerned at a primary level with fiscal profit certainly will survive."

Earlier, Christopher Brown agreed in part with Todd - "The APIs change often enough that what's Particularly Keen now isn't likely to function anymore in another few years" , relating his experiences of "trying to run Corel WPOffice on Linux; it uses WINE as part of its execution substrate, essentially "running on Windows" even when running on Linux." However, "I'll bet that a lot of X11R5 software is still quite usable, though..." Derek said that deliberate changes to APIs to lock out free software were possible, but "remember they have partners and people other than themselves that write applications for their platform." Making changes "at a pace that actually locked free software developers out would drive them out as well" . He cited "AOL Instant Messenger" , where AOL had tried something similar, but had to back down after user complaints.

Kenneth Reiszner said the buy-out fitted the pattern of "other acquisitions like MSNBC which will continue even if" Windows "goes belly up" . He felt the only ways that Windows would survive more than another 5-10 years would be "Legislation making free software illegal" or "Microsoft to somehow embrace open source (maybe only the OS at first)" , both of which were unlikely.

3. Object Transparency in GNUe Application Server

8�May�2002 (2 posts) Archive Link: "[Gnue-dev] [GEAS] [doc: White Paper] GOAT: Object transparency"

Topics: Application Server

People: Reinhard M�ller,�Jens M�ller

Jens M�ller asked what the possible uses of Object Transaparency were. Reinhard M�ller said that "not every field in an object is mapped 1:1 to a column in the database" as there could be fields in an object that were "calculated fields that have no database column" . Not all database columns would necessarily have object fields, either. This might even apply "the same on object/table level: not every object will have a directly assigned database table."

Jens also asked "Is there already a consensus about how abstract base classes should be implemented?" Reinhard said that the previous version of GNUe Application Server (GEAS) had tried to support inheritance, but "This is one of the features that never really worked perfectly but made a lot of troubles. Apart from that, in the real application business objects we designed so far, we didn't find /much/ use for inheritance. So we are still undecided if the new Appserver will support inheritance at all." He pointed Jens to the thread in Issue�#29, Section�#1� (6�May�2002:�Business objects in GNUe Application Server) for further details.

4. New Toolbar icons

8�May�2002�-�14�May�2002 (1 post) Archive Link: "[Gnue-dev] toolbar icons"

Topics: Forms, Designer

People: James Thompson,�Derek Neighbors,�Bajusz Tam�s

Further to Issue�#28, Section�#15� (5�May�2002:�Planning for next release) , James Thompson (jamest) reported on IRC ( that "prequery works again - and we have tenatively have new icons for the tbar" , as reported in Issue�#28, Section�#28� (7�May�2002:�New Toolbar Icons) . Derek Neighbors (dneighbo) said "i think gnome 2 icons are gpl" but noted "its good to triple check :)" .

Later, Derek said he was not sure about the arrows in the new toolbar icons - "i understand its more correct to point up and down" for record navigation, but "windows users will be confused - as they are used to << < > >> or such" . James, possibly with pun intended, said "i've got back and forth on that - as I've started describing forms like a rolodex" . However, they could include other icons and let people change them in the gnue.conf file. Derek thought that the icon for 'undo' was "a bit scary (only becuase some people might not see the undo arrow) and think its save :) - but over all they are slick looking :)" . James said he had e-mailed the author of the GNOME icons, "no responce" . He thought that the new icons would be fine, at least "until we can snag us an artist - i think i cc'd a few people on that" .

Later, on the mailing list, Bajusz Tam�s said he liked "nice new icons on toolbar" , but felt "The Clear Form icon is misleading i think." He suggested an icon of a pencil eraser.

5. GNUe Documentation

8�May�2002�Archive Link: "[IRC] 09 May 2002"

People: Reinhard M�ller,�Derek Neighbors,�James Thompson,�Gontran Zepeda

Further to Issue�#28, Section�#13� (4�May�2002:�GNUe Documentation) , Reinhard M�ller (reinhard) said that, although he used texinfo, "currently everybody uses what fits him best - which is ok IMHO as long as it can generate pdf" . He noted that "docbook is used by many gnu projects actually" and also by the Linux Documentation Project (LDP). He wasn't keen on relying solely on tools like "doxygen/happydoc" because "for several reasons i don't think documentation should be embedded in the source code" .

Derek Neighbors (dneighbo) said "officially docbook is GNUe's official format - but we dont FORCE people to use it - we want documentation, so we arent too picky" . He had used happydoc, but "i agree with reinhard i dont want our docs all in the source code - i would like to see methods and such have one line descriptions - that would be pulled by happy doc - so the 'skeleton' of the API can be autodocumented - and then someone can add 'filler'" . Reinhard said "i would consider this "dangerous" - because it tempts you to document the api from the code side view - instead of the user side view - however if the documentation is good i wouldn't mind how it was started" .

Later, James Thompson (jamest) noted "python also added a pydoc module recently" but agreed "i wouldn't mind having code docs but don't want it to be only docs" . Gontran Zepeda (gontran) suggested that happydoc-style documentation was "a good way to shoehorn new developers into productivity ;)" as opposed to fuller documentation aimed at users. Derek said he preferred happydoc to pydoc as the latter "has a lot less features" . James said that using the built-in pydoc would reduce the number of "external dependencies :)" .

For general documentation, James confessed that he had "secretely thought about going to openoffice :)" Derek said he had spoken "with norman walsh (author of docbook) and we have been brainstorming on what it might take to make abiword do docbook right" . James clarified that he was a big advocate of docbook as a format - "so a docbook friendly abiword would go a long way toward wooing me back to docbook - the only thing I don't want to see in docs is me having to program them - to spend tons of time looking for a missing / in a closing tag is not cool" . Amaya html was suggested as a format which could be converted to docbook. Derek said "i have suggested this - no one liked the idea - that and best i could tell amaya in debian still didnt support things properly" .

6. Application Server without object support

8�May�2002�Archive Link: "[IRC] 09 May 2002"

Topics: Application Server

People: Derek Neighbors,�Reinhard M�ller

Derek Neighbors (dneighbo) asked "would it be worth doing the first version of geas while TOTALLY ignoring objects altogether" ? They could just "get the rpc and remote methods working? i.e. bringing us n-tier with minimal fuss then building on that? or is that the wrong approach?" . Reinhard M�ller (reinhard) said "i think we could as a first step implement appserver with 1:1 object-table mapping - and then add more and more oop features as development goes on" . He would "write up a summary for whitepaper what oop features i think we will see in appserver" . Derek expanded "im thinking geas for first pass uses datamodel of forms(common) entirely and doesnt try to make it into objects - maybe to teh point where the concepts of 'gcds' dont exist or are limited - rather instead its just triggers" . He emphasised that this was just "for the first pass (not long term)" . He felt "someday i would love object to relational mapper with an onslaught of features - but realistically there is huge value in remote triggers via rpc today and thats a much more obtainable task - however, if it means doing one way we can never get to the other i dont think that is necessarily good - and why i asked for opinion on it" .

7. Curses (text-only) Forms client using nstti

8�May�2002�-�13�May�2002�Archive Link: "[IRC] 09 May 2002"

Topics: Forms, Why GNUe?

People: Gontran Zepeda,�James Thompson,�Derek Neighbors

Further to Issue�#28, Section�#22� (6�May�2002:�Curses (text-only) Forms client using nstti) , Gontran Zepeda (gontran) reported his testing on nstti was going well, and he was "looking into some enhancements and to get more familiar with ... :) oh" . James Thompson (jamest) said "that cvs isn't on a mail list so i have no idea what's been done" - it was not in the main GNUe CVS for copyright reasons. Gontran said he had "added a changelog in nstti/ to attempt to keep track .. (heh)" . Derek Neighbors (dneighbo) said that "i.e. if your commit messages are good" changelogs could be automated.

Some days later ( , Gontran reported "just right now had a breakthrough by using obvious test form" , which had 'sort-of' worked. However, he needed to use "curses.wrapper around nstti to clean up the scren properly in the case of mysteriously timed exits." He really ought "to play around a bit with UIdriver first i think" but "fsckd terms might get annoying enough to do something about" that first. James said that the "stty sane" was a useful command "if your term gets screwed up" - "even if you can't see yourself typing it" . Derek tried "jamest sane" , but James reported "jamest: Error: not supported attribute "sane" :)" .

Gontran would submit his changes once he had completed his Free Software Foundation copyright assignment. Derek explained "the paperwork was never meant to be a draconian way to stop code production, more a" way of protecting both the developers and the project. He noted that FSF "dont 'require' copyright they merely request it, we as a project have decided to be a little more 'hardass' (and protect our users) and do require it :)" .

The next day ( , Gontran reported he had "got my papers, posting the both (gnue, and nstti) today" to FSF. He asked about the history of nstti. Derek said "i think jamest found it and liked it - he contacted the maintainer who basically said he wasnt really using it anymore so wasnt maintaining - jamest felt it was better than what existed - so him and the maintainer agreed it would be ok for us to put in our cvs tree and alter it - i think the idea is that if we start to alter it that we will just 'adopt' it - and it will be pretty much GNUe Curses (under the nstti name) or such" . Gontran noted that it only used the Lesser GNU Public License (LGPL), not the full GPL. Derek said "the problem is that we dont put things in our tree w/o assignment - so its in our off tree" . However, "there has been talk amongst us of whether its worth getting assignment from original authors - at which point it would be come official gnue" . He added "the issue there was current maintainer isnt current author - so its kind of been handed from person to person without good record - which is why i preach that REGARDLESS of what license a project is under if you contribute code to it make sure it has its copyright in order or you could learn lessons the hardway :)" He added "with gnue i think we approach nicely because we ask for the copyright so we dont have the hodgepodge, but we dont want to restrict the contributor from his own work so we leave full copyright with them" as well.

8. Possible Application Server functionality TODOs

8�May�2002�Archive Link: "[IRC] 09 May 2002"

Topics: Application Server, Financials (Accounting)

People: Jan Ischebeck,�Jens M�ller,�Reinhard M�ller

Jan Ischebeck (siesel) asked whether "every row in a table be represented as Object, or should a whole table be represent by just one object?" Jens M�ller (ICJ) thought this would be "not difficult to implement" . Jan was more worried about performance. Jens asked about using "Common Lisp Object System, or something like that" . Lisp-based reports could be useful for things like "German tax returns and tax calculations (tax optimization)" He felt "all this prediction stuff is AI, IMO - perfectly suited for LISP" .

Reinhard M�ller (reinhard) suggested "i think every single row is represented by a geasInstance instance (if the mapping between object and db is 1:1)" . He referred to "neilt's diagram ( of the geas parts?" Although it was very high level, he still found it useful in keeping concepts clear - "for example the geasMetaObject belongs into the "object repository" and geasList belongs into "object server"" which suggested they should not be combined into one object. Jens asked what the transaction processor and workflow server on the diagram were. Reinhard said they were "good looking buzzwords that aren't defined in detail ;)" Jens suggested a games of 'Buzzword Bingo' with "an extra point for not knowing the meaning of the buzzwords you are using" . Reinhard said "seriously these are things that are needed for upperscale business systems" but "as they are marked "future" i didn't bother much with trying to understand" what they did as of time of writing.

9. Dots or colons in object names

9�May�2002�-�13�May�2002 (5 posts) Archive Link: "[Gnue-dev] class name -> table name"

Topics: Application Server

People: Jens M�ller,�Reinhard M�ller,�Derek Neighbors,�Jan Ischebeck,�Daniel Baumann

Jens M�ller asked what the relationship was between class names in GNUE Application Server (GEAS) and table names in the underlying database - "The same with underscores instead of dots?" Reinhard M�ller said that, in the old version of GEAS, "modules were separated from the class name by a ::" , which conflicted with how it was used in C++. He suggested using "a dot to separate the module name from the class name, or another special character" , keeping the :: just "to separate the class name from the field/method name" . Derek Neighbors said he preferred "class.method opposed to class::method." . Reinhard pointed out that "As we will support namespaces, references and compound types, we need (at least) two different separators." He thought that "base.item::sales.price.currency" was better than "base.item.sales.price.currency" . Derek was not convinced.

At the database end, Reinhard earlier said that GEAS version 1 had "used double underscores (__) so that single underscores are still valid in all identifiers" , as previously discussed in Issue�#11, Section�#3� (6�Jan�2002:�Old and new parser for GNUe Class Definitions) , which he would like to keep.

Earlier, Jens asked if there should be "a separate function to" map object names to database tables, probably in GNUe Common? Reinhard explained that there would be an "object repository" which "would provide a means for looking up a class and getting the table name" , and looking up database column names for class field names.

On IRC ( , Jan Ischebeck (siesel) asked about "object-relational mapping stuff" . He thought "the mapping should be handled by the metaObjects." Daniel Baumann (chillywilly) agreed - "because the meta objects define the schema of our appserver (as do the odl/gcd definitions)" . Jan said they also "define how much and how data has to be loaded from the database to build objects and vice versa" .

10. Type definitions in GNUe Application Server (GEAS)

9�May�2002 (5 posts) Archive Link: "[Gnue-dev] type (not class) in .gcd files"

Topics: Application Server

People: Jens M�ller,�Neil Tiffin

Jens M�ller asked "What is special about types? As they have no methods and are just replaced instead of a type definition mentioning them, how are they stored? In data columns in the table for the class of which they are a a member?" Neil Tiffin said that "types are expanded in a way that the type definition disappears and the data definitions are inserted directly into the object. They were a shorthand for assuring consistent usage of groups of data definitions such that they would be consistent throughout the design (by only being defined once.) Therefore if the base design (type) was changed it would automatically be changed throughout." Jens wasn't sure he liked the sound of this - "When used in an automatic setup, this can be quite difficult to handle, because we have to find all classes/types which use this type. Will be necessary to track where a type definition has been replaced by the type's fields. Well, I suppose it will be common policy that fields are not removed from types also?" Neil said the other possibility was "when the definition of a type changes the new type is not used until the main object is loaded or accessed (main object = the one containing the type)." However, he was "not sure I understand what you mean by automatic setup?" Jens clarified he meant "A package management system." .

11. Loading methods in GNUe Application Server

9�May�2002�-�13�May�2002 (7 posts) Archive Link: "[Gnue-dev] When are methods loaded?"

Topics: Application Server

People: Jens M�ller,�Reinhard M�ller,�Derek Neighbors,�Jan Ischebeck

Jens M�ller asked "When will the methods be loaded and the method table created?" He preferred "In __init__" rather than "when a method is called" . Reinhard M�ller saw three possibilities:

  1. at application server startup
    . However, this
    means that you have to restart the server every time a method is changed. This can be a big problem in a live system.
  2. at creation of a business object instance
    , but this
    probably means a high performance impact, especially because all available methods of an object are loaded even though most of them will not be used at all
  3. whenever it is called
    , as long as this was combined
    with some caching of already loaded mehtods
    to provide
    very fast access to the method code

Derek Neighbors said that "on demand" and "in batch (variation of on demand)" were also needed, as previously discussed in Issue�#4, Section�#11� (17�Nov�2001:�Configuring GNUe Application Server for multiple methods) . He added "I think also there should be option [...] that checks to make sure the object is not in a 'transaction' state before applying." . Reinhard said he wasn't sure these extra two options were needed, "as when we have 3 we can do "on demand" by just copying the new method code over the old code at a specific time." Derek was not convinced.

Jan Ischebeck suggested "What do you think about an object "geasMethod", which handles method creation/loading, building/compiling, caching and releasing. These "geasMethod" would be the first building blocks of the GEMA (GNUe Method Adapter)." He gave some sample code/pseudocode. Reinhard commented on some of the details, but said it "looks good at first sight."

On IRC ( , Jan (siesel) explained that "if you add a __call__ method to an object, you can handle it as an function." Jens (ICJ) said that he was going to "write someting for GEOR - without inheriting other classes - and asking when I want to use functionality which I know is in common but which I do not understand" Jan thought "many geas classes shouldn't inherit too much, because that would make them too slow." Jens noted that the GEAS whitepaper said "GEOR will hold all the business object definitions: what fields the object consists of, what methods exist, which triggers should be called on what event, and so on." . Jan noted that "On my papers buissness object definitions are also objects" themselves. Jens thought "that would be quite a nice recursion ..." . Jan said that "buissnes object, methods and buissness object definitions can all be geasObjects. and if we have an easy way to store and retrieve geasObjects from a database, it makes everything easier" . He added "Just think of a framework, which can handle persistent "geasObjects", which can have versions, can be locked, can be elements of transactions..." . Jens felt this was "getting more and more complex" , and suggested "I will first implement something whcih directly accesses the databases - using dbdrivers, of couse - and then you can implement your stuff" . He felt "we need a usable implementation - otherwise you cannot work good on higher level stuff" . He noted "as long as we don't release, we can still change arch" .

Earlier, on the mailing list, Jens asked "How are triggers implemented? As methods?" . He recognised that "trigger methods could also be (tried to be) loaded when needed, but I think this would cause performance losses)." Reinhard confirmed "Triggers are methods that are called automatically."

12. GNUe Application Server (GEAS) development

9�May�2002�-�12�May�2002�Archive Link: "[IRC] 10 May 2002"

Topics: Application Server

People: Reinhard M�ller,�Jens M�ller,�James Thompson,�Jan Ischebeck,�Daniel Baumann,�Christian Selig

Reinhard M�ller (reinhard) said that Application Server development was going "slowly - however it seems to have attracted a lot of people - sledge, siesel, ICJ..." . Jens M�ller (ICJ) started to look at the phaseInit code, as previously discussed in Issue�#10, Section�#8� (2�Jan�2002:�HTML client for GNUe Forms) . He noted it "uses a default of 5 itererations" . James Thompson (jamest) explained "the first phaseInit was hardcoded to 5" but it was subsequently changed to use a variable number. Jens asked "but this function can be used, right?" . James said "it is absolutely required" . Later, Jens said "I need to dig into both what has been done and what has to be done. But I think I have realized that GObj is primarily for XML input and output, for initializing and for traversing through tree structures - but a reference doc would be nice anyway ;-(" . He concluded "well, now I have to figure out that trigger support" .

Some days later ( , Jan Ischebeck (siesel) asked about the best way "to set attributs of an geasInstance" . Daniel Baumann (chillywilly) explained "the methods provide encapsulation" . He asked "is it Python style to name exceptions WhateverError?" Jan said "allmost. The Base class is called "exception" but the rest is call "whatever"Error." Daniel asked "if I called something WhateverException would I be breakin some sort of unwritten Python rule?" Jan said "Yes, the python god would send a snake to bite you and poison you deadly ;)" Daniel didn't like the sound of this, and decided to "define my little exception heirarchy using "Foo"Error then ;)" .

The next day ( , Daniel said he was "reading the relevant GEAS threads on gnue-dev again" , saying "I am partial to the API's described in the standard, but that's just me" Jan supported this, saying "Although I like the GEAS API proposal, because its quite direct and simple, its just missing some important features... especially the ones discribed in odmg.txt ;)" . Daniel said he "didn't know that supporting inheritance was up for debate" . Christian Selig (sledge_) asked "is it really important from the beginning? i think it's nice from the CS standpoint and it may simplify things, but it adds a bit of complexity." . Daniel said it was "relatively easy with python - you just process rthe ODL file and if there's inheritance of a type you just generate the stub with the inheritance line, imho" .

Christian asked if "gcd's are converted to python objects;" and "geas2 "just" handles them" ? Daniel said "the way I see it ODL defines the objects and we write a parser/compiler to generate stubs for the Python class and the Meta Object classes in the object repository" , as in his diagram ( . Jan suggested "you call geas2 to parse a ODL file (or a gcd) and it creates persistent objects on the fly." Daniel agreed, but added "you should be able to go either way" .

Daniel said that the meta-objects were "data (Objects) about objects (i.e., introspection)" . Jan explained "you can use metaobjects to change class definitions, add functions" which meant "so meta objects can change objects on the fly" . Daniel said that "modules, classes, scope, definfingscope, etc. are all meta objects that help describe the class definitions" . He expected "every object would have a definition, a python class for that object, and correspondgin meta objects for the definition" , and convert from GNUe Class Definitions (gcds) to objects and back again. Jan noted "there is a test version with working metaObjects and method loading in appserver/src/_featuretest" .

13. DCL as a bug-tracking system - and more

9�May�2002�Archive Link: "[IRC] 10 May 2002"

Topics: DCL

People: Jens M�ller,�Peter Sullivan,�Derek Neighbors

Jens M�ller (ICJ) asked "what is so cool about DCL?" He preferred Mozilla as a bug-tracking system (BTS). Peter Sullivan (psu) said DCL was being integrated into GNUe, as discussed in Issue�#22, Section�#3� (21�Mar�2002:�First fruits of the GNUe/DCL merger) - "Derek already has some "simple" Forms that point at DCL tables" . DCL was not "just a bug tracking system" . Derek Neighbors (dneighbo) confirmed this - "DCL is coming form the other perspective - it is more a project management/help desk tool - than a bug tracker. I'm trying to add some more 'bugtracking' features to it - as i think free software projects need both management/helpdesk/bug tracking" . The main weakness at the moment was "how it handles contacts and hierarchies - much of which is painful in lack of RBAC" . However "we have started to make the contact portion more robust - tackling some organizaitonal hierarchy issues in the process - i think once those are in place that RBAC can be implemented fairly quickly" . He said "we use it more than anything because it has a gracious maintainer who shares our vision - and it made sense to collaborate" . He didn't like some of the DCL terminology, but "in many cases i ahve altered the terms :)" which was one of the practical benefits of access to the source code with free software.

14. Grids and scrollbars in Forms

9�May�2002�Archive Link: "[IRC] 10 May 2002"

Topics: Forms

People: Marcos Dione,�James Thompson,�Christian Selig,�Derek Neighbors

Marcos Dione (StyXman) asked about adding "widgets to a form in *runtime*." James Thompson (jamest) suggested "what I would typically do would be to just put the widget on there hidden then make visible via a trigger BUT while the start of this is in there it's not complete" . Marcos said he wanted to be able to add "wigets as necesary. if I need 10, I add 10. if I nedd a thousand, so be it." He gave an example of "we need to do an invoice form. in the header, there'll be the client and below all the items selled to that client. as there's no grid or such thing, we thought of adding new widgets as they were needed (i.e., as the already there ones where full)." Christian Selig (sledge_) agreed - "that's what i've always missed: a grid (or something comparable)" . Derek Neighbors (dneighbo) said "there is a grid" , as previously discussed in Issue�#14, Section�#19� (28�Jan�2002:�GNUe vs E/AS) - "say you have five columns (read five entries) - simply add rows="" to the tag - where "" is number of rows to display" .

Christian asked "how to add new items to such a list?" Derek said "it will show 5 in the widgets - but if you navigate through the rows - it will show all 100 (5 at a time) just a like a normal grid would" . He emphasised "everything is editable, savable etc" . James Thompson (jamest) suggested "look at forms/samples/zipcode/zipcode.gfd for example" . Derek admitted that there was "no scrollbar :(" as of time of writing. James said "the scrollbar exists - just no events tied to it yet to move the focus :(" . However, the up and down arrows worked on grids - "it's just like navigating records - as that's what each row is" . Derek said "it is rather usable - its just not 'pretty' as native grid" .

15. Hook system for interacting classes in GNUe Application Server

10�May�2002�-�13�May�2002 (2 posts) Archive Link: "[Gnue-dev] Hook system"

Topics: Application Server

People: Jens M�ller,�Reinhard M�ller,�Jan Ischebeck

Jens M�ller posted a "paper for a hook system for the interaction of classes." This would allow one class "to be informed about changes of objects" of another class, using a "Trigger/hook system for classes" . He gave some examples of how this might work. There were several maintainability issues, such as persistance and keeping deterministic behaviour. The GEAS Object Repository (GEOR) would need "to track which hooks a class provides and which functions are connected with a hook." Reinhard M�ller said "I think I agree with most points. I will include the text into the whitepaper" when he next revised it.

On IRC ( , Jens (ICJ) asked if there had been any work done yet on GEOR. Reinhard (reinhard) said "no not yet - i'm not quite sure if we should keep all those acronyms - or maybe just call it obj-repos or something to that effect - which would be much more understandable" . Jens said he would make some notes on his next trip "and then I will start to do some coding on GEOR - next week or so" .

Jan Ischebeck (siesel) said that 'hook' was a good description of Jens' proposal, "but you could call it trigger also." as "it looks like the TRIGGERS you have in databases, which are defined after tables are defined." He preferred "the EVENT modell." . Jens said he had "once read a bit in the Java tutorial" abou events - "there you had to register listeners for events just like my hook proposal" . Jan gave an example using "object "customer" which raises event "bought new computer" - now you have defined a trigger. "ON customer.boughtcomputer DO send message("Do you need new software too?")" . Also, "you also can define a trigger like. ON customer.boughtcomputer + 20 day DO sendmessage("Do you still not need software for you computer?)" . Jens thought this might be part of the role of the "Workflow Server?" Jens said he also "wanted to use the hook model for dynamic updates" . Jan suggested "you think of something like employee.takeAdayOff triggering holiday statistic" ?

16. Writing Financials in GNUe Application Server (GEAS)

10�May�2002�Archive Link: "[IRC] 11 May 2002"

Topics: Financials (Accounting), Application Server, Forms

People: Peter Sullivan,�Daniel Baumann,�Perry Lorier

Peter Sullivan (psu) pointed to the General Ledger (GL) "proposal on the website" . He emphasised "it's just a proposal - we have held off implementing uintil we have an appserver" . Daniel Baumann (chillywilly) said "our middle" tier would "do object-relational layer, support various remote protocols, support various langauges for object methods, etc." . Peter said "the key thing is that the middle tier enables you to seperate the biz logic from the Forms" . He gave an example - "a basic rule of accountancy is that journals must balance" . In two-tier, "you would have a trigger on the journal form submit button to validate and print a "add it up, bozo" error msg - In three-tier, the validation would be done by the middle tier & would sned the error msg back to the forms client" . Daniel explained that the Application Server was ""in the works" - well we scrapped the old one" , as agreed in Issue�#19, Section�#1� (28�Feb�2002:�GNUe Application Server (GEAS) version 2 Discussion) .

Peter said that one of the advantedges of n-tier over 2-tier was that there was only one place to change form definitions if bugs were discovered. N-tier also gave you "redundancy, scalability etc - Also ability to use OO" . Daniel pointed out that, even with 2-tier, "GNUe allows you to store your forms on HTTP doesn't it?" Perry Lorier (Isomer) said that way "you could update the HTTP server and suddenly they're all updated :)" . Later, Daniel cut & pasted the code which allowed you to "have http://my.webserver/form.gfd" as your location for a form, noting "this is used throughout" whenever a Forms definition was referenced. Peter said that "The other claimed benefit of 3-tier is that you can have "thin clients" - but this is fairly notional" as even thin clients required high-specification PCs or long downloads. He felt Linux Terminal Server Project (LTSP) was a better thin-client solution than a browser.

Peter said that if anyone had any comments on the GL proposal, they should "post them to" , as the current work on Application Server meant that the Financials proposal might start being programmed soon. The source ( was in lyx, but could be converted to straight text by using egrep to remove all lines starting with a backslash.

He felt "Accountants who know SQL are like cops with guns - they can be far more effective in some situations that there unarmed conterparts could never handle - but there's always the risk that they'll shoot their partner in the foot" . However, "SQL is about the only thing that can break their addiction to spreadsheets (which, 99% of the time, means Excel" .

17. Timesheet application for GNUe

10�May�2002�Archive Link: "[IRC] 11 May 2002"

Topics: DCL, Forms, Reports

People: Jeff Bailey,�Peter Sullivan,�Daniel Baumann

Jeff Bailey (jbailey) asked "Are there any timesheet apps for Gnue yet?" . Peter Sullivan (psu) said that "DCL has some time recording in it" but that was not its main focus. However, "You could knock up a fairly quick timesheet mini-app using Forms in two-tier" . Daniel Baumann (chillywilly) noted "you can use a url for the form" to avoid problems distributing the GNUe Forms Definition (.gfd) files. Peter added "reports is now getting beyond proof of concept stage - so you can even get data back out again ;-)" .

18. Object Life Circle for GNUe Application Server

10�May�2002�-�13�May�2002 (4 posts) Archive Link: "[Gnue-dev] GEAS Object Life Circle Proposal"

Topics: Application Server

People: Jan Ischebeck,�Jens M�ller,�Daniel Baumann,�Jason Cater,�Derek Neighors,�Reinhard M�ller,�Derek Neighbors

On IRC ( , Jan Ischebeck (siesel) asked for comments on his object life cycle ( diagram. He explained "The picture shows the state diagrams of two objects. The diagram on the left hand side shows the life cicle of a business object in general and the one on the right side shows the states of the local copy of this business object. A local copy will be created, when the object gets locked by an user who wants access this object during an transaction." .

Jens M�ller (ICJ) said that, linking this to his hooks proposal, "the hook causes another class (AdLetter) to create a new instance of itself - this new class then tells" the GNUe Event # and Workflow Server (GEWS) "to call a method of itself 20 days later" . Jan agreed - "GEWS knows about the 20 days rule and save the "boughtComputerEvent" in a list. 20 days later during the daily "check for daily events" loop it will execute that action. I thought of a design like this, because the event modell I've read had event rules like "A in (B,C)" which would trigger only if event A occured after event B and previous to event C. But this is extra stuff which should be implemented in the overnext version. The cool thing about the event modell is, that you can take care of things like sessions, or transactions which should be closed (=timeouts), daily calculations, special tasks (if event "bank safe door opens" occures between 7pm and 7 am then do "call the police"...)" .

Two days later ( , Jan said there would be "ONE cache in memory and the database = TWO" . Daniel suggested "mayeb you could break things up into dirty/old cache, new/clean cache" and so on. Other systems he had seen did lazy loading - "you use the proxy object and finally whrn it really needs to it will pull from the database" . Jan said that "if we make the database and cache manager an object, we can inherit it and add new caching principles... :)" . Daniel said he needed to document some of this.

Later, Daniel cut & pasted the code for object locking - at first he wasn't sure how the deadlock scenario it was trying to avoid could ever arise, but then he grokked it. He suggested that this needed further documentation. He asked how the ODMG interfaces could be implemented in python, as "Python really has no 'interface' concept" , with various ways of working around this. He felt "this is key because I think we should write the code similarly to how the ODL compiler would output other GCD/ODL stubs to get a feel for that" . Jan suggested writing "classes for it." Daniel said this would need "classes that just define the methods and thrown NotImplemented exceptions or something" . Jan thought "this would be better. If someone don't like this implementation he still can overwrite it" .

Later, Jason Cater (jcater) noted that the proposed object locking system might prove very limiting in practice, except as a "first-draft short-term implementation" . Daniel agreed that it was "a pessimistic locking policy" but "there's nothgin that says you can't use other locking policies - in fact ODMG standard says that locking policy is the "minimum" and you can do it different ways - better ways" . He said "we are in no way bound to it" - "it's like the least common denominator" . Jason said that "sounds reasonable - just didn't want that to be our "preferred", long-term method" . Daniel agreed.

Earlier, Jan posted an announcement about the diagram to the mailing lists, explaining some of the details. Derek Neighbors reckoned "Without reviewing this might be what is needed to safely load methods real time." . Reinhard M�ller said he was "Not sure if we should generally lock an object when a "local copy" is created. I think we should support something like that we can read locked an non-locked." Jan said "In my test implementation the transaction directly access the global object for reading." Local objects were only created when writing. Reinhard also asked about "the difference between "active" and "inactive" state" . Jan explained "inactive: the object is just data in the database - active: the object is an python instance, which can react on function calls etc." . He noted that "Daniel Baumann told me that odmg.txt defines three types of locks: readlock, writelock and upgradelock" , which he would add to the diagram.

19. Parameters for method definitions in the Object Repository

11�May�2002 (2 posts) Archive Link: "[Gnue-dev] GEOR: method parameters"

Topics: Application Server

People: Jens M�ller,�Reinhard M�ller

Jens M�ller felt that method definitions in the Object Repository of GNUe Application Server (GEAS) should "have named and typed parameters" , as should "hook definitions" , as discussed in Issue�#29, Section�#15� (10�May�2002:�Hook system for interacting classes in GNUe Application Server) Reinhard M�ller agreed on both points, noting that ""Hook definitions" are methods."

Jens also asked "What should be allowed parameters? Every field type that an object may consist of?" Reinhard agreed - "Actually I would think even "Object" and "List" should be valid parameter types." . Jens felt this was implied.

20. Class and Object Methods for GNUe Application Server

11�May�2002�-�13�May�2002 (4 posts) Archive Link: "[Gnue-dev] GEOR: class/object methods"

Topics: Application Server, Financials (Accounting)

People: Jens M�ller,�Reinhard M�ller

Jens M�ller asked about class and object methods being stored in the Object Repository of GNUe Application Server - "Is there a need to make a distinction" ? He felt storing both would be useful. Reinhard said he was "not sure about class methods. We always have to keep in mind that the typical non-programmer accountant should be able to write business objects (and hook functions) by himself. Probably the concept of class functions is not easy to understand for a non-programmer." Jens said that letting users make changes to "a biz software system" might cause problems with certification, which was a legal requirement in Germany, as previously discussed in Issue�#27, Section�#20� (29�Apr�2002:�Overview of GNUe) . Reinhard said that "The user's right to alter the software to adapt it to his need is one of the basic principles of Free Software." Jens said that he "only meant that a system modified in this way has to be re-certified if it shall be used for accounting purposes." .

21. GNUe Application Server (GEAS) as a generic application server

11�May�2002�Archive Link: "[IRC] 12 May 2002"

Topics: Application Server

People: Jan Ischebeck,�Daniel Baumann

Jan Ischebeck (siesel) asked "do you think that geasV2 should be able to store and retrieve JUST business objects?" Daniel Baumann (chillywilly) thought not - "it should store any python object decribed, imho - in ODL or whatever - this is what I mean when I talk about a "generic" app server" . He asked "what make an 'object' different than a 'business object' anyway?" . Jan agreed - "for me object can be anything, while business objects are objects to store and calculates data directly needed by the application." . Daniel felt "but either way you have to define them right?" He said GEAS needed "langauge to describe the schema of our objects (GCD, ODL, etc.)...those do not constitute the object fact we can get picky and say that an object is an "instance" of a python class (which is generated from the description)" . Jan said he had thought "to make as much as possible of the building blocks of the application server objects in the application server" as "I think there is no way to create a python class in a programm (without dirty tricks), so I though of an geasMetaObject which holds the class definition and can build instances." Daniel agreed - "there's going to be a whole meta object api for adding types on the fly the way I see it - but one could also just parse" GNUe Class Definitions (gcds) "or go from the current repository and generate gcds from what the system currently contains" , as in his diagram ( .

22. GNUe at trade exhibitions

12�May�2002�Archive Link: "[IRC] 13 May 2002"

People: Derek Neighbors,�Reinhard M�ller,�Andrew Mitchell,�Jason Cater,�James Thompson

Derek Neighbors (dneighbo) asked if anyone was going to be able to attend Linux World Expo in San Fransisco in August. He had "submitted paperwork earlier this month and plan on following up - but hoping to have some help" . Jason Cater (jcater) and James Thompson (jamest) both said they would like to, but were unlikely to be able to make it. Derek asked Reinhard M�ller (reinhard) if he was "interested in representing us in bordeaux" . Reinhard wasn't keen about having to "speak to a crowd - especially in a language that isn't my native one" , asking "you ever heard an austrian speaking english? - think of schwarzenegger :)" . Derek said "everyone loves arnold" . Andrew Mitchell (ajmitch) suggested "get onto that weightlifting :)" The discussion quickly went off-topic, as everyone wondered what sort of things Arnold Schwarzenegger would say if he was a GNUe spokesman.

23. CVS freeze for new release

13�May�2002 (3 posts) Archive Link: "[Gnue-dev] CVS Freeze [Common, Forms, Reports, Designer]"

Topics: Forms, Designer, Reports, Common

People: Jason Cater,�Jens M�ller

Jason Cater announced "We are preparing for a release of Forms, Common, Reports, and Designer. Please temporarily suspend any non-bugfix commits to any of these tools. We need to avoid introducing any big changes. This freeze should only be in place for a few days. Also, it does NOT affect App Server or Navigator." . Jens M�ller asked "Why don't you create a new CVS branch?" Jason said "Currently, this is more trouble than it's worth. As we grow, we will probably resort to branching HEAD for a release."

24. Zip code look-up with GNUe Forms

13�May�2002�Archive Link: "[IRC] 14 May 2002"

Topics: Forms

People: Mat Rice,�Derek Neighbors

Mat Rice (ratmice) reported some problems he was having with the sample GNUe Forms, and commented "it'd be a little useful if state and city weren't readonly" . Derek Neighbors (dneighbo) explained "that form is old but it was killer in its time - it expects you to have a populated zipcode database - you then enter the zipcode - and the city and state are automatically populated for you - thus why they are readonly" .

25. Using GNUe for distributed databases instead of Microsoft Access

13�May�2002�Archive Link: "[IRC] 14 May 2002"

Topics: Forms

People: Michael Maluck,�Bajusz Tam�s,�Reinhard M�ller,�ra3vat,�Dmitry Sorokin

It was asked about using GNUe as an alternative to PHP/Postgres for database applications. Michael Maluck (madlocke) explained that GNUe was written in "python" , so didn't need compiling. Bajusz Tam�s (btami) suggested looking at the "designer wizards" to get started after installing GNUe. They both confirmed that GNUe needed python 2.x rather than 1.5.2, and Bajusz added that there were some issues with 2.2.0, although Dmitry Sorokin (ra3vat) confirmed that 2.2.1 was OK.

It was noted that Microsoft Access was not ideal for non-trivial distributed systems, and that GNUe used XML for its form definitions. Reinhard M�ller (reinhard) said GNUe could easily handle multiple sites connected via the internet - "you just have to set the correct parameters in connections.conf" .

As far as needing python skills to use GNUe, Reinhard said this "depends on what you want to do - if you need to code triggers then yes" .

26. Non-free/'Open source' ERP alternatives to GNUe

13�May�2002�Archive Link: "[IRC] 14 May 2002"

Topics: Why GNUe?

People: Reinhard M�ller,�Derek Neighbors,�Jens M�ller

Reinhard M�ller (reinhard) noted "it's so funny how many germans join the project lately - because at the time when linux-kontor was alive we had zero germans here" . This project was now dead as far as he knew. Jens M�ller (ICJ) said he had looked at both Kontor and OpenSource ERP, and had not been impressed with either. Derek Neighbors (dneighbo) said that OpenSource ERP had e-mailed the main GNUe mailing list last year "not saying 'are you interested in collaboration' but rather 'hey come join opensource erp and help us make an open source erp'" . Jens noted that the website that was hosting the project said "OpenSourceERP This project appears to be defunct; the domain is no longer registered." Derek said that he had said at the time that "This seems a little to corporate for me. That is one thing you can count on GNUe. :) We are not out to make a quick buck. Simply to free users. :)" . There were already several "open source" (as opposed to free software) ERP packages such as "POSSL (panther) and NOLA and Compiere - all of whom i stated seemed to be on a similar path only already having capital" .

27. Mail-merge with GNUe Reports

13�May�2002�-�14�May�2002�Archive Link: "[IRC] 14 May 2002"

Topics: Reports, DCL, Integrator

People: Derek Neighbors,�Jason Cater,�James Thompson

Derek Neighbors (dneighbo) asked "can i today create records.xml for mail merge with current reports" ? Jason Cater (jcater) said "oh, absolutely - that's a piece of cake" . He explained "create a GNUe:Reports:MailMerge namespace" in "gnue/reports/filters/MailMerge - add an XSLT script in there - then modify report-filters.conf - under mappings, add mailmerge = GNUe:Reports:MailMerge" . He added "I *think* you can arbitrarily create namespaces - the mapping will only come into place if we create filters" .

Derek said that his first try came out as "<field name="Date" value="December 25, 2001"/>/index.html" rather than "<value>myvalue</value>" , which would be easier to work with. He cut & pasted his "very basic .grd file" , but this was generating an error. Jason pointed out that "you have no section tag" . On fixing this, Derek did a "happy dance its making the file - now if mail merge works im in bidness" . Jason said "well, it won't initially - because you changed the field tag - but should be a quick fix :)" .

Derek noted that "merge-rtf merge-latex and are not executable out of cvs" as of time of writing, and asked for this to be fixed. Jason said he was "setting it up so you can do grcvs -d myfile.rtf --filter mytemplate.rtf myreport.grd" to execute the whole process.

Jason wondered "should this actually be called mailmerge? that's what I'm so used to calling it but is that appropriate here?" Derek said "honestly its for more than 'mailing' - but i think mail/merge is the industry term" . Jason said "it's more of a templated document merge - but that is long :)" James Thompson (jamest) suggested "docMusher(tm)" .

Derek was still having problems with "the way parses things" and asked for a patch. Jason was jealous - "I'm not sure - as if you get this working - you will be the first w/reports in production - and that just isn't fair :)" . Derek said "well techincally its for a demo - but i can bet if the demo goes well it wont be long till production and feature creep" . Jason had a look at the code, as did Derek, who asked "how are you normally keeping track of the parent" ? Jason said he had no test report to test with at the moment. Derek asked "is master/detail in reports working?" Jason said it "should be - but haven't tested much - last time I tested, they did :)" . James asked "dneighbo: you making notes for a users guide/tutorial?" Derek said "more than likely i will make this a real example - since it IS going off of dcl" . He noted "btw: the grd with custom name space is pretty powerful db to xml tool" . Jason agreed - "yes - it's the start of GNUe Integrator :)" Derek said "yeah it just needs its better half - xml to db :)" .

Later, Jason confirmed "I committed my changes... grcvs supports mailmerging as it sits now" . After some hassle, Derek got the changes and noted "he didnt address how i had hoped - he did it the proper way - not the quick way - will have to tackle tomorrow :(" . Later, Jason said that, to run the new version, you needed to "add an entry in report-filters.conf - (there is an example there) - then run as grcvs -D file -d myoutput.rtf --filter myfilter.rtf myreport.grd" . Derek said "i like it all cept having to make the entry for the file but this is in the right direction" . Jason said "the alternate is to either put the file in your shared/filters/MailMerge directory (or a symlink) - it's not ideal, certainly - but I am sans-a-pretty-solution" .

Later, Derek cut & pasted his error message. Jason asked "lemme see your grd file" . Derek put it on the web ( . Jason realised that, as it was "standard dcl tables" then "I can test this puppy too :)" . Derek said "you just need the rtf file - or create your own" . Derek found the problem - the XML output had an ampersand in some text that wasn't being replaced by &amp;. Jason said "I thought I was using encode() for those - lemme look" . He found the problem, and fixed it, saying "btw, I consider this my 0.0.1 RC1 :)" .

Derek ran the report sucessfully, but both Abiword and Microsoft Word were fairly slow opening the output rtf file - "open office didnt bitch though" . James said "ooooo man - if this plays w/ openoffice - and if we get the label sizes - i can use, yesterday" . Jason said "well, I have no idea if I'm creating valid RTF - if we have any RTF experts in the house, please look" . He pointed to a utility ( that would "let you print RTF from command line, iirc" . He added "these merge examples support embedded images too :) - I tested that out with my marketing campaign" . Derek finally got the ouput to open in OpenOffice, but reported "it appears to be same record over and over - 327 pages" . He would look at this further tomorrow.

The next day ( , Derek (laurie) said "i think the rtf page break is not working correctly - when i created that output.rtf - on windows the first page is almost correct and every subsequent page is paged incorrectly but every page has correct data starting at SR 1 and going through - on openoffice in linux the paging is also out of sync" . Jason said "it's gonna take some tweaking w/the rtf" but "there's some changes in CVS" , although he wasn't sure whether they would be in the automatic nightly CVS tarball posted to the website ( . Derek said "well i have heard before that mfs does wild rtf (not quite standard) so this could be part of issue to perhaps?" He felt "by the time we get this working - it will be like 0.5 state :)" . Jason asked if that meant "it'll be half useful" ?

Later, Derek (dneighbo) said he was "going to play with master/detail in the grd i think - and then will play with parameters - so i only print one of these things at a time :) - nulling the need for paging :) - at least temporarily" . Jason said "I find the rtf format thoroughly confusing - so I'm still trying to figure out just which tag is the table tag :)" . Derek reported "we have case sensitive issues in datasources again i think" - but Reports was using the same code in GNUe Common as Forms, which wasn't having a problem. Jason said "I'm sure it's an initialization problem" . Derek confirmed "ok its definitely a reports issue" , as he copied the datasources from a working GNUe Forms Definition file into a GNUe Reports Definition file "and get the same error" .

After a while, he asked "how can you use params as query options?" Jason cut & pasted an example, using an <eq> tag for 'equals'. He explained "you HAVE to pass parameters on the command line at the moment" . Derek asked if there was a tag for 'like' (pattern matching) as well as 'equals.' Jason said "lemme look" , warning "btw, you are getting into untested waters, right now - just be forewarned - the code is there - but isn't heavily tested" . He confirmed "yeah, I think there;s a <like>" , adding "for an idea of what's supported, look at common/src/ - at the bottom of that file is a dictionary of supported tags" .

Jason did a one-character patch(!) to the code, and Derek reported "kick ass params work - i think this will over come my paging issues for now - since i will only be generating one sr at a time" . He said "only thing outstanding i think to make this work" with DCL "is a. getting master/detail working - b. making php call the reports via 'exec'" . Jason said "I'm doing b. right now :) - well, indirectly - if you want my script, I can send it to you - it's a little specialized to my setup though" . James suggested "have your php exec an ssh which commands reports to dump to stdout - then you can put reports on a debian box - wonder if that'd hurt responce time much :)" Jason said his set up was, if anything even more complicated - "you should see what I'm doing w/my Zope setup :)" . He had "my zope server talking to Oracle on my solaris machine w/no problem - however, I want to let out sales reps download the actual reports we print for them - so I've hacked Oracle Reports to spit out PDF to a file (thank you ghostscript!) - so I have apache+php running on the reports server - which exec's oracle's runrep - zope calls this php server - to retrieve the pdf reports - and sends them on their merry way" . Derek said "im hoping php has an exec that waits until completion - as in my case i will have dcl call a page that passes the sr_number - execute the report and create the rtf. When exec is done - php checks file exists - if it does it merely opens the rtf otherwise it errors - or something SIMPLE - as i want a different solution long term this is the 8 hour fix" .

Later, Jason said "if you can whip me up a master/detail test report - I can debug it tonight" . He would also see if he could hack datemasks "if you want to be beta tester for them" . Derek said this was "not huge item, master detail much more important" .

28. Data type validation in Forms and Application Server

14�May�2002�Archive Link: "[IRC] 15 May 2002"

Topics: Forms, Application Server

People: Derek Neighbors

Derek Neighbors (laurie) noted that "forms isnt particularly bitchy about data typev - you can set datatypes in the entry tags so that it will validate against that type in entry - and 'masks' exist to format things as date/money etc (though i havent confirmed usage)" . However, "geas i suspect will be much more bitchy about data typing - as it should be" .

Sharon And Joy

Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License version 2.0.