<?xml version="1.0" ?>

<kc>

<title>GNUe Traffic</title>

<author contact="mailto:psu@manorcon.demon.co.uk">Peter Sullivan</author>

<issue num="10" date="05 Jan 2002 00:00:00 -0800" />

<headquote>
#gnuenterprise IRC defined?:
<cite>Taxes, Finances, Politics, and Free Software don't make good 
party conversations... unless it's an accounting or coding party</cite>
</headquote>

<intro>

<p>This Cousin covers the three main mailing lists for the GNU 
Enterprise project, gnue, gnue-dev and gnue-announce. For more 
information about GNUe, see their home page at 
<a href="http://www.gnuenterprise.org">
http://www.gnuenterprise.org</a>. Details of the mailing lists 
can be found at 
<a href="http://mail.gnu.org/mailman/listinfo/gnue">
http://mail.gnu.org/mailman/listinfo/gnue</a>, 
<a href="http://mail.gnu.org/mailman/listinfo/gnue-dev">
http://mail.gnu.org/mailman/listinfo/gnue-dev</a>,
<a href="http://mail.gnu.org/mailman/listinfo/gnue-announce">
http://mail.gnu.org/mailman/listinfo/gnue-announce</a>.</p>

<p>It also covers, on an intermittant basis (i.e. when I have 
time), the #gnuenterprise IRC channel. A great deal of 
development discussion is still going on in IRC. You can find 
#gnuenterprise on irc.openprojects.net:6667, or you can review 
the logs at <a href="http://www.gnuenterprise.org/irc-logs/">
http://www.gnuenterprise.org/irc-logs/</a>.</p>

</intro>

<section 
   title="DataObjects.txt for GNUe Common" 
   subject="[Gnue-dev] DataObjects.txt" 
   archive="http://mail.gnu.org/pipermail/gnue-dev/2001-December/000007.html"
   posts="4"
   startdate="22 Dec 2001 04:42:46 -0800" 
   enddate="27 Dec 2001 00:00:00 -0800">

<topic>Common</topic>
<topic>Application Server</topic>
<topic>Forms</topic>

<p>Following on from 
<kcref title="GNUe Common Q&amp;A" startdate="21 Dec 2001 00:00:00 -0800"></kcref>, 
Neil Tiffin said that, although you could step through the result 
set using <quote who="Neil Tiffin">the nextRecord() and lastRecord() 
functions</quote>, he felt a random-access <quote who="Neil Tiffin">
getNRecords(startAt=0, number=1) function</quote> would be useful as 
well. Jason Cater said result sets were meant to be 
<quote who="Jason Cater">a cache of a query-set</quote> anyway, so 
there should be no need to transfer large amounts of data at once, 
although he feared he was missing the point. Neil's proposal wouldn't 
be difficult to implement, in any case.</p>

<p>He explained that <quote who="Jason Cater">ResultSets weren't meant to 
be passed back and forth, per se, between a client and server.  
ResultSets were more of a local caching mechanism.</quote> In n-tier, 
both the Application Server and the client would have their own 
ResultSet. He added <quote who="Jason Cater">I am not sure why a 
database would be requeried during the life of a ResultSet</quote>, 
but if it was, this would create a new ResultSet and reset the Next 
Record pointer. If Neil was suggesting that <quote who="Jason Cater">
GEAS can present the client applications with a ResultSet via CORBA
</quote>, this would nullify the business rules/objects functionality 
of GNUe Applications Server (GEAS) - <quote who="Jason Cater">GEAS 
would, in essence, simply be a caching relational layer.</quote></p>

<p>Neil explained in more detail what he meant. Jason clarified
<quote who="Jason Cater">The nextRecord()-type methods are designed for 
the clients to use against their internally maintained ResultSet - they 
do not necessarily correspond to the method used by the ResultSet to 
obtain data from the backend (in your case, the CORBA calls to GEAS.)
</quote>. The database drivers for 2-tier access already supported 
<quote who="Jason Cater">a &quot;pre-fetch cache size&quot; that the 
client can set</quote>, and the GEAS n-tier driver would presumably be 
similar. The client would then use its internal ResultSet cache to display 
records as required. In 2-tier, you could jump around within the cached 
result set, but most databases could not support random access in this way, 
so it wasn't possible to have jumping around between different result sets. 
However, <quote who="Jason Cater">It would be nice if GEAS supported a 
jump-ahead cursor -- this would be yet another advantage of using GEAS
</quote> rather than 2-tier client-server.</p>

<p>Neil also asked whether <quote who="Neil Tiffin">the definition of 
&quot;conditions&quot; used to create ResultSets</quote> included 
sorting on the server as well as selecting. Jason explained that 
<quote who="Jason Cater">GConditions is a tree-like structure that 
defines, to use your terminology, &quot;selection conditions&quot; of 
arbitrary complexity.</quote> He gave an example of how a 
GConditions tree mapped into a normal SQL WHERE clause. 
Sorting definitions could be even easier, as a simple list 
could be mapped to an ORDER BY clause.</p>

<p>Neil also asked about introspection, saying that 
<quote who="Neil Tiffin">
if we are planning on making 
the introspection data just system data objects with standard field 
names, then I would be very happy.
</quote>. Jason Cater said he saw two types of introspection:</p>

<quote who="Jason Cater">
<ol>
 <li>System-level introspection -- What objects does the system provide and, 
     from each object, what fields are available and what are their 
     characteristics?</li>
 <li>Result-level introspection -- I have a ResultSet... what fields are in 
     the ResultSet, how many records are in the ResultSet, etc.</li>
</ol>
</quote>

<p>He explained in detail what functionality there currently was for 
both, and added <quote who="Jason Cater">By the way, I have described 
the way DataObjects currently work, not the way they <strong>must
</strong> work. We are definitely open to restructuring our classes 
if they do not fit GNUe's needs.</quote></p>

<p>Some days later, 
<a href="http://www.gnuenterprise.org/irc-logs/gnue-public.log.27Dec2001">
on IRC</a>, Neil (neilt) asked Reinhard M&#252;ller (reinhard) for 
<quote who="Neil Tiffin">your take before i proceed further.</quote>
Reinhard clarified that <quote who="Reinhard M&#252;ller">the GDataObject 
stuff concerns geas in 2 ways</quote> - for Forms to acess GEAS, and 
for GEAS (possibly) <quote who="Reinhard M&#252;ller">to access the SQL 
backends</quote>. He emphasised that <quote who="Reinhard M&#252;ller">
because GDataObject is in any case a client side library [...] 
between GDataObject and the caller there is no network connection 
and no corba (in neither case)</quote>. He added that he was 
<quote who="Reinhard M&#252;ller">going to be virtually non-existant for 
the next month so feel free to discuss this topic further with jcater 
w/o me</quote>.</p>

</section>


<section 
   title="GNUe Enterprise at Linux User Groups" 
   subject="[IRC] 27 Dec 2001" 
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.27Dec2001"
   startdate="27 Dec 2001 00:00:00 -0800" 
   enddate="27 Dec 2001 00:00:00 -0800">

<topic>Why GNUe?</topic>

<mention>Jason Cater</mention>

<p>Derek Neighbors (dneighbo) asked Jason Cater (jcater) 
<quote who="Derek Neighbors">did you ever get in contact with that 
nashville fellow? about presenting gnue at his LUG?</quote> 
Jason said there had been no progress on this so far. 
Derek mused that <quote who="Derek Neighbors">i might add to our page 
some stuff though - like a 'have gnue speak at your lug' :)</quote>
He thought <quote who="Derek Neighbors">we need to create 1 or 2 
powerpoint presentations and canned speeches so we can submit to 
tradeshows for speaking - as well as for local speaking stuff
</quote>.</p>

</section>


<section 
   title="Datestamp issues with DCL" 
   subject="[IRC] 27 Dec 2001" 
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.27Dec2001"
   startdate="27 Dec 2001 00:00:00 -0800" 
   enddate="31 Dec 2001 00:00:00 -0800">

<topic>DCL</topic>

<p>Derek Neighbors (dneighbo) asked about <quote who="Derek Neighbors">
'datestamp' issues?</quote> with DCL. New tickets had the right datestamp 
to start with, but when they were resolved <quote who="Derek Neighbors">
it converts all dates for ticket to 12 01 1969 - 'cept keeps the dates 
for the resolution correct</quote>. He would go and look at the code if 
necessary. Jason Cater (jcater) said <quote who="Jason Cater">I don't 
recall having an issue</quote> with this. Derek asked whether 
<quote who="Derek Neighbors">you have email notification (watches) turned 
on?</quote> as, at one stage, he had though this was the problem, 
<quote who="Derek Neighbors">but its not</quote>. In passing, he noted that
the e-mail notification of watches was one of the most impressive bits of 
DCL functionality.</p>

<p><a href="http://www.gnuenterprise.org/irc-logs/gnue-public.log.31Dec2001">
Four days later</a>, Derek discussed the problem with Michael Dean 
(mdean). He wondered if <quote who="Derek Neighbors">its a postgresql 
6.5ism - as all the samples i can get to work are 7.x</quote>.
Michael thought <quote who="Michael Dean">the problem <cite>could
</cite> lie in the Edit() method of dbTickets</quote>. Derek said that 
was where he had applied his temporary fix, but there were still some 
minor formatting issues. Michael said the date problems were probably 
because <quote who="Michael Dean">pgsql 6.x used a non-ansi format for 
those - had a bunch of junk in it (at least from php's perspective).
pgsql 7.x converted to ansi format, which is actually parseable.
</quote>.</p>

<p>Derek commented that this had been a practical example of the 
benefits of access to the source code - <quote who="Derek Neighbors">
i could look at this and in about an hour trace through to what what 
going on and pin it down to the edit call - and patch it 
(ungracefully). I think this impressed the boss - he is still not 
liking 'unsupported software' much - but seeing problems get fixed 
quickly makes him smile</quote>.</p>

</section>


<section 
   title="Alternative approaches to Object-orientated databases" 
   subject="[IRC] 29 Dec 2001" 
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.29Dec2001"
   startdate="29 Dec 2001 00:00:00 -0800" 
   enddate="29 Dec 2001 00:00:00 -0800">

<topic>Application Server</topic>

<p>Daniel Baumann (chillywilly) h-reffed to 
<a href="http://sourceforge.net/projects/prevayler">
http://sourceforge.net/projects/prevayler</a>, which claimed to be 
<quote who="Daniel Baumann">'Orders of magnitude FASTER and SIMPLER 
than a DBMS. Write PLAIN JAVA classes: no pre or post-processing 
required; runs on any VM; no inheritance from base-class required. 
Clear documentation and demo included. Ready to use.'</quote>
He felt <quote who="Daniel Baumann">this is only for the real object 
heads ;)</quote> It was written in Java, but 
<quote who="Daniel Baumann">'can use any language for which you are 
able to find or build a serialization mechanism'</quote> or where you 
could just output specific memory segments. He noted 
<quote who="Daniel Baumann">damn no irc channel for the project - at 
least not on <a href="http://www.openprojects.net">here</a>.</quote>.
</p>

<p>Reinhard M&#252;ller (reinhard) said he was 
<quote who="Reinhard M&#252;ller">not sure if it is really something new - 
imho it's nothing more than a readahead object cache with a readahead 
rate of 100% or so</quote>. Nick Rusnov (nickr) felt 
<quote who="Nick Rusnov">for what ammteurs use most rdbms for nowadays 
it'd be good though</quote>.</p>

<p>Daniel said a big system would <quote who="Daniel Baumann">
need a ton o ram</quote>, but the project web page admitted as much.
Reinhard wondered how long a large system 
<quote who="Reinhard M&#252;ller">would take to start</quote>. Daniel said 
<quote who="Daniel Baumann">you wouldn't have to start it...it would 
be always running unless youlost power</quote>, in which case you could 
restore it from back-up and <quote who="Daniel Baumann">redo the 
commands in the commdn log</quote>. However, for this, 
<quote who="Daniel Baumann">your objects need to be deterministic
</quote>. The discussion moved on to how 
<strong>non</strong>-deterministic (quantum or random?) objects would 
work.</p>

</section>


<section 
   title="Using McMillan to distribute python executables" 
   subject="[IRC] 30 Dec 2001" 
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.30Dec2001"
   startdate="30 Dec 2001 00:00:00 -0800" 
   enddate="30 Dec 2001 00:00:00 -0800">

<p>Andrew Mitchell (ajmitch) said he was trying to 
<quote who="Andrew Mitchell">figure out how to package up an app with 
python, wxpython, and that inno setup prog :)</quote> Jason Cater 
(jcater) said <quote who="Jason Cater">you first have to package the 
app in mcmillan - then use inno to install this mcmillan-ized package.
</quote> There were sample inno and McMillan config files in GNUe's
CVS. He explained that McMillan <quote who="Jason Cater">basically 
turns a python app into a freestanding application - i.e., for windows, 
it turns gnuef.py into gnuef.exe</quote>. This would include python 
itself. It worked for operating systems other than Windows, but that 
was all he personally had ever used it for.</p>

</section>


<section 
   title="Widget set philosophy for GNUe Forms" 
   subject="[IRC] 31 Dec 2001" 
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.31Dec2001"
   startdate="31 Dec 2001 00:00:00 -0800" 
   enddate="01 Jan 2002 00:00:00 -0800">

<topic>Forms</topic>

<p>Derek Neighbors (dneighbo) suggested adding 
<quote who="Derek Neighbors">exclusive list boxes</quote> to 
GNUe Forms. He had come across several examples where he could have 
usefully used something like this. Jason Cater (jcater) asked 
<quote who="Jason Cater">what does something like this fall back to 
when the underlying UI doesn't support it</quote>? He supported 
<quote who="Jason Cater">jamest's philosophy that we aren't creating 
a widget set</quote> to cover all eventualities (as expressed in 
<kcref title="GNUe Forms User Interface re-write" startdate="13 Dec 2001 00:00:00 -0800"></kcref>
).</p>

<p>Derek said that he supported the idea of 
<quote who="Derek Neighbors">a 'base' widget set that is lightweight 
and easily portable to say WAP, Web, Curses, GUI's etc etc</quote>, 
but felt there was also a place for <quote who="Derek Neighbors">
some more complex widgets to make more competitive pieces but might 
only work on certain UI's</quote>. There was already a precedent in 
the way that the text-only UIs treated images - 
<quote who="Derek Neighbors">in curses mode i just 'ignore' it</quote>.
He added that extra widgets like trees (as mentioned in 
<kcref title="Trees and Lists in GNUe Forms" startdate="18 Dec 2001 00:00:00 -0800"></kcref>
- <quote who="Derek Neighbors">while you all might say just eye candy -
can make an application infinitely more easy to use</quote>. Jason said
that he didn't have a problem with things like image (non-)support, 
<quote who="Jason Cater">but data manipulation-type things must be able
to fall back to something useful</quote>.</p>

<p>Later on, Charles Rouzer (Mr_You) raised the wider issue of 
<quote who="Charles Rouzer">if GNUe provides a small set of widgets, 
how are users suppose to expand upon this?</quote>. Derek said
<quote who="Derek Neighbors">people can add widgets if they like
- they just might not be 'supported'</quote>. Some non-standard widgets
could even be <quote who="Derek Neighbors">in forms out of box</quote>
but would never be used <quote who="Derek Neighbors">in the base 
distribution of gnue apps</quote>. He felt that getting usable 
applications was more important <quote who="Derek Neighbors">
than getting bunches of widgets :) - i think you can do 90% of what you
need with the widgets we have</quote>. Jason said that, in principle, 
<quote who="Jason Cater">a new widget would just be a new python 
package</quote>, but for technical reasons it could get messier than 
that. Derek said that <quote who="Derek Neighbors">like ALL free 
software projects</quote>, there was nothing stopping developers adding
whatever they wanted, and creating a branch if necessary. In practice, 
GNUe would often <quote who="Derek Neighbors">take the patch, though we
might state its not a good thing to use it if you want your 
applications to be in gnue - also if the maintainer stopped maintaining
it we would probably drop it or deem its BROKEN</quote>. Alternatively, 
<quote who="Derek Neighbors">we may find we like some of the new 
widgets and might be willing to support them even if the original 
author or others wont</quote>. Later, Charles suggested
<quote who="Charles Rouzer">maybe you could have widget definitions 
embedded in gfd files in the future?</quote> However, it was not 
clear how this would work, and several people felt it was a bad idea
anyway.</p>

<p>Elsewhere, Daniel Baumann (chillywilly) said that the 
<quote who="Daniel Baumann">big pciture would be if someone actually 
had an xml gui definition that anyone could implement for whatever 
toolkit</quote>. Derek said <quote who="Derek Neighbors">
there is xforms which i htink is kind of what you are wanting...
</quote> but said that GNUe Forms Definitions (.gfd) were a sort of 
standard anyway, as people could write their own GNUe Forms clients - 
there had already been some examples of this. He felt that standards 
that were actually in use giving people practical benefits were better 
than <quote who="Derek Neighbors">'paper' standards</quote> that never 
got used.</p>

<p><a href="http://www.gnuenterprise.org/irc-logs/gnue-public.log.01Jan2002">
The next day</a>, Peter Sullivan (psu) said he didn't see why Derek's
proposed widget <quote who="Peter Sullivan">couldn't work in text
</quote>. Jason asked <quote who="Jason Cater">how would it work in 
html?</quote> - the page would have to be refreshed after each 
selection. Peter asked <quote who="Peter Sullivan">How do we feel about
javascript in HTML clients?</quote>. This would shift work from the 
server to the client. Jason said <quote who="Jason Cater">I would like 
to see a basic html client that worked under lynx and everything else - 
but could see an enhanced html driver that made it more &quot;friendly
&quot; to use, but required a more modern browswer</quote>. He also 
said GNUe might need to work with <quote who="Jason Cater">something 
as basic as a line-oriented forms client in which curses support isn't
there - it basically displays one question/line at a time</quote>. 
Peter said Derek's proposed widget <quote who="Peter Sullivan">
could be done as a Q &amp; A script - it would be hideous, but pretty 
much everything in line based would have to be</quote>.</p>

<p>Derek (derek) said that <quote who="Derek Neighbors">there is a free
implementatoin of 'java script' iirc [...] i think its called 
spidermonkey</quote>. He didn't see much value in lynx support - 
<quote who="Derek Neighbors">we have curses across the web if someone 
wants that</quote>. He said <quote who="Derek Neighbors">i think 
webclients will pretty much have to support some language or it will 
be painful - as you will be sumbitting forms like crazy for the most 
trivial of things</quote>. Jason said that support for non-script 
browsers was important as <quote who="Jason Cater">a lot of ppl still 
use old browsers and a lot of ppl (like me!) disable JS support, etc
</quote> Also, <quote who="Jason Cater">It's a implementation test for 
us... basically, keep us truthful to our abstraction :)</quote></p>

</section>


<section 
   title="Maintenance and security issues for GNUe Forms" 
   subject="[IRC] 01 Jan 2002" 
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.01Jan2002"
   startdate="01 Jan 2002 00:00:00 -0800" 
   enddate="01 Jan 2002 00:00:00 -0800">

<topic>Forms</topic>

<p>Following on from 
<kcref title="Widget set philosophy for GNUe Forms" startdate="31 Dec 2001 00:00:00 -0800"></kcref>,
Peter Sullivan (psu) said <quote who="Peter Sullivan">
If we can solve the issues of distributing client code
</quote>, HTML forms would be less important. Derek Neighbors 
(derek) said that differences between browsers were a significant 
issue - in most environments, <quote who="Derek Neighbors">
putting the client binaries in shared location and the gfd's 
in shared location means clientless maintenance anyhow</quote>.
Peter said that if <quote who="Peter Sullivan">all the apps logic is 
in GEAS you don't have to upgrade GNUe Forms client as often 
- but you will still have to occasionally?</quote> Jason Cater
(jcater) said <quote who="Jason Cater">we use shared binaries
- which solves part of the problem</quote>. In one office, this was
done by using Linux Terminal Server (LTSP). Peter also noted that 
<quote who="Peter Sullivan">at the moment, you can network install
</quote> GNUe Forms. Both Jason and Derek said that was a requirement -
Derek said <quote who="Derek Neighbors">maintenance ease is at top of 
list</quote>. Peter said that the <quote who="Peter Sullivan">
Problem is that people assume that web-based is the only way to 
resolve client code distro problem</quote>, and referred to a 
<a href="http://www.e-envoy.gov.uk/publications/frameworks/egif2/execsum.htm">
British government paper</a> on the subject.</p>

<p>Jason said <quote who="Jason Cater">who knows, we may have 
self-updating forms clients someday :)</quote> Perry Lorier (Isomer) 
said <quote who="Perry Lorier">client side code is very nice in the 
general case</quote>, but he was worried about security issues - 
<quote who="Perry Lorier">While you can limit them with the client to 
certain abilities, you can't necessarily stop them connecting with 
access via ODBC then doing a &quot;DELETE FROM table&quot;</quote>. 
He felt self-updating Forms clients could become a target for trojans 
or exploits. He agreed that <quote who="Perry Lorier">a simple way of 
doing upgrades is a good idea [...] but make sure it does smart things 
like check a signature on the file</quote>. He gave some real-world 
and theoretical examples of automatic update sites being cracked. 
Peter said he felt <quote who="Peter Sullivan">the concept of a 
&quot;mandatory upgrade&quot; for free s/w is an oxymoron</quote>. 
However, once an enterprise had conciously decided to accept an 
upgrade, <quote who="Peter Sullivan">they need the tools to distribute 
that fix as easily/quickly within their enterprise</quote> as 
possible.</p>

</section>


<section 
   title="HTML client for GNUe Forms" 
   subject="[IRC] 02 Jan 2002" 
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.02Jan2002"
   startdate="02 Jan 2002 00:00:00 -0800" 
   enddate="02 Jan 2002 00:00:00 -0800">

<topic>Forms</topic>

<p>Further to 
<kcref title="HTML client for GNUe Forms" startdate="09 Nov 2001 00:00:00 -0800"></kcref>,
Michael Maluck (madlocke) asked about the User Interface re-write of 
GNUe Forms, and how it would impact the HTML GNUe Forms client he was 
writing. James Thompson (jamest) said <quote who="James Thompson">it's 
really just cleaning things up and making it play nice with your stuff
</quote>. Michael said <quote who="Michael Maluck">what i am doing now 
is a different way of linking objects and integrate a layout manager...
some parts work already... want to show it to you after i added a few 
more things</quote>. He said you could now use either 
<quote who="Michael Maluck">x,y coordinates and layout manager</quote>
He explained <quote who="Michael Maluck">the creation of objects will 
be much more transparent - und separation between uibase und wxpython 
is more clean</quote>. James asked <quote who="James Thompson">
can you put in cvs? and does it break lots of stuff</quote>
Michael said he would CVS it <quote who="Michael Maluck">tomorrow
</quote>. James asked <quote who="James Thompson">is this working with 
the wxPython driver as well?</quote> Michael confirmed this had been 
re-written. He also wanted <quote who="Michael Maluck">to get rid of 
this phase init stuff...</quote>. James said they had tried that, 
<quote who="James Thompson">but kept having to kludge in work arrounds
</quote>. Michael suggested <quote who="Michael Maluck">the main 
reason for phase init is because you don't have all information at 
time for object creation that is needed. right?</quote> James said 
<quote who="James Thompson">yes - but it's not just at the UI level
</quote>. Database connections were also an issue. Michael said 
<quote who="Michael Maluck">first thing i'll do is visual stuff, then 
look at the parser again</quote>. He should have the time to work on 
it now.</p>

</section>


<section 
   title="python UIs for GNUe Forms" 
   subject="[IRC] 02 Jan 2002" 
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.02Jan2002"
   startdate="02 Jan 2002 00:00:00 -0800" 
   enddate="02 Jan 2002 00:00:00 -0800">

<topic>Forms</topic>

<p>Michael Maluck (madlocke)  reported <quote who="Michael Maluck">
i have some ugly problems with wxpython.</quote>. James Thompson 
(jamest) said the wxpython layout managers weren't 
<quote who="James Thompson">very stable/usable yet</quote>. Michael 
said he might have to write his own. James said wxpython had 
<quote who="James Thompson">issues in several areas - but we get a lot 
of bang for the buck in having a wxpython driver</quote> Michael asked 
if <quote who="Michael Maluck">tkinter</quote> had been considered. 
James said <quote who="James Thompson">i did some work in tcl/tk and 
quickly grew to dislike it</quote>. Bill Hamilton (Bill_H) 
said he had written <quote who="Bill Hamilton">some really powerful, 
readable code in just a few lines</quote> with it. Derek Neighbors 
(dnwork) said he thought wxPython was <quote who="Derek Neighbors">the 
best python UI out there assuming you want to EASILY maintian 
portablity - the issues it has are minor in comparision to the features 
it has</quote>, and were mainly with newer functionality.</p>

</section>

</kc>
