Monday, April 7, 2003 -- field trip to PorPIG

I attended the Portland Python Interest Group (PorPIG) and spent a few days with Brian "Ingy" Ingerson designing PyYAML version 2. This was right after the PyCon conference, of which you can read my notes [there will be a link here when they're on-line].

The PorPIG meeting was small, less than ten people. Besides Ingy and me, there were Kevin Altiss (multitalented organizer), Kevin Turner (Twisted's Request Broker), Robin Dunn (wxPython), and others.

PorPIG now has a web site: http://porpig.7technow.com/ (porpig.org was already taken, unfortunately.) [Note: the link doesn't work for me at the moment. Neither does seapig.org. I'm not sure if it's the sites or my ISP.] The site has pictures of PorPIG members, which is an idea we may want to imitate. The site also has an article on using Plone.

Somebody summarized PyCon, and Kevin Altiss and I also gave our input.

There's a Python 3.0 proposal on the Python wiki. http://www.python.org/cgi-bin/moinmoin/PythonThreeDotOh Actually it's a meta grant proposal to fund development for parts of 3.0.

I'll save the YAML portion till the end because it's a big topic.

After the meeting, we went to a pub in SE Portland called the Happy Labrador, with a dog mascot and motif. Kevin Altiss discussed the bill in the Oregon legislature to promote Open Source. PorPIGgies are considering a "What is Python?" conference in Oregon to educate those who are impacted, and they are also hoping to leverage OSCon in July, which happens to be in Portland this year. Kevin A's biggest concern is that some of the legislators are Linux fanatics who are framing it as a Linux-vs-Windows debate, which ignores its other merits and may ultimately doom it. Getting developers/managers who prefer Windows to use Open Source products like Python is just as important as trying to wean them off Windows.

Also at the pub, I talked with Kevin Turner (kevin at freegeek org), who had given a talk on Twisted's Perspective Broker. (Not to be confused with the Perspective Broker talk at PyCon, which was given by someone else.) It's a simple RPC-like mechanism that allows you to call a method on a remote object, passing it Python arguments and getting back a Python return value.

Kevin T is also involved with freegeek.org (http://www.freegeek.org/), an organization that gives people refurbished computers with Linux installed, in exchange for a few hours helping build same. They also have beginners' classes for using the computers and Internet. It's an interesting complement to used computer stores like Re-PC, and something we may want to imitate in Seattle someday.

Ingy's talk

Ingy discussed PyYAML, Freepan, his new wiki, and Fit. He's one of the three core developers of YAML and also maintains the Perl version.

At PyCon, I had met with Steve Howell who wrote PyYAML 1, and also talked with some users and potential users. Three wanted to use PyYAML with Zope:

Over the weekend, Ingy and I designed a package structure and interface for PyYAML 2 and the next version of YAML.pm. Both packages currently combine parsing/loading into one method, and dumping/emitting into another. Ingly wants to split that out to allow alternate loaders to be plugged in, as well as eventually a C version of the parser (which others are working on). This will allow more flexibility and greater speed. The new structure we're building is outlined at http://yaml.freepan.org/.

yaml.freepan.org also demonstrates his wiki, called Kwiki or CgiKwiki. He also wants a parallel version in Python eventually (which I suggest be called KwikiPy :) "The Queen of Hearts she made some tarts... The Knave of Hearts he stole some tarts...." You could have picture of a knave with caught red-handed with his thumb in the pie...

Anyway, some pages also demonstrate Fit, a web interface for unit testing, developed by Ward Cunningham (?) and extended by Ingy. Fit is a CGI script you link to. The referring page contains an HTML table with a header row naming a class in the CGI's language. The second row contains names of methods. Each row below that contains an argument string for the respective method. Fit runs the method and displays the output in the cell, coloring the cell's background to indicate success or failure. Thus, you can have a YAML stream in column 1, and the following columns show it being loaded into a native data structure and dumped back to YAML twice, so you can inspect the result and/or view the error messages. Another version compares the loaded YAML with a control data structure, to verify they are equal. This obviates the need for bug tracking, since anybody can check the page at any time to see whether a certain bug has been fixed (i.e., whether a certain test passes). (One version allows users to specify eval'able code through the wiki page, which is a security risk, so his program disables the new code until he manually adds the MD5 sum to an approval file. Adding support for another language requires merely installing a Fit CGI in the target language on some server, putting a hyperlink from the test page to that CGI, and away you go. That will enable us to continuously compare the capabilities of PyYAML, YAML.pm, Ruby's YAML, the future C parsers, and PHP's future YAML.

Freepan

Ingy also demonstrated Freepan (www.freepan.org), which he introduced on the SeaPIG list recently. Freepan is like CPAN for all scripting languages. (He prefers to call them "agile languages".) Its design eliminates some of the baggage and manual processing CPAN has picked up along the way. Each package consists of a property listing consisting of package name, version, description, categories, license and owner. The "owner" is the person who maintains the listing. (There's provision for reassigning a new owner when necessary.) The package is stored in a directory based on the owner, and symlinked into its various search positions. Freepan *includes* the downloadable. Ingy thinks this is better than just linking to the source because 25% of the links on Parnassus etc are dead, and the ones that are live require you to navigate a different web interface for each package. Whereas CPAN has shown that there are sufficient mirrors willing to donate the space and bandwidth. Furthermore, the downloadable can be a tarball, binary install file (for Windows/Mac), or text source file. CPAN handles Perl modules well (especially with Perl's universal installer) but it doesn't handle standalone Perl script. Whereas Freepan accommodates whatever formats users need. Freepan has sections for several languages, but only the Ruby section is filled at present because its listings are available in bulk in the required format. Some people also requested sections for non-language projects like Zope Products; Ingy is open to this.

One current issue is the categories. Freepan lets listers define a category. But PyPi (the new Python software catalog at http://www.python.org/pypi ) uses Trove's nested category hierarchy, which Freshmeat also uses. Methinks it would be better to use these categories, to provide a consistent way for people to find things, and also to allow data sharing between the catalogs.

Freepan needs a Python liaison who will coordinate it with the needs of Python community. That means conveying issues and concerns between Freepan, the distutils developers, PyPi, the defunct Catalog-SIG or whatever replaces it, and promoting Freepan in Pythondom. Anybody interested?

Freepan also needs developers. It's only partly finished. It's written in Perl, but portions and extensions can be written in Python or other languages.

April2003NotesPortland (last edited 2008-03-04 08:33:08 by localhost)