Ian Bicking: the old part of his blog

First ChiPy Sprint: PyPI

ChiPy had its first sprint today. We worked on PyPI. There were some larger goals, but in the end we didn't get a whole lot done. I think this is actually typical for sprints -- they are a chance to get started on something, and become comfortable with a new project, but they aren't exceptionally productive.

We started out the day by getting a working environment going. This proved to be rather difficult. Every one of us happened to have a Mac laptop, but installing SQLite (PyPI's backend database) and pysqlite turned out to be rather difficult, along with making sure Apache was up, CGI was being served, and HTTP authentication was getting through (something Apache makes difficult). Personally I got stuck on pysqlite, because apparently my Python installation is all messed up. The whole thing was just poor judgement on our parts -- we ended up all working on the chipy.org server, where Chris had a decent working environment for a web application. In the future I'd plan on working on a single server from the start, or else making sure everyone got a working environment set up before they come.

Another issue (which we kind of expected) is that none of us had worked on PyPI before, so we weren't familiar with the code or what was involved. But the code is actually pretty straight forward -- it's really just a normal database-driven web application, so it wasn't too hard.

We split up a bit. I worked on creating ZPT templates, and removing the HTML from the main class/module. Brian worked on documenting the SQLite database, and getting stuff in place to make it easier to update the schema and add new fields, while retaining information from the old database. He's also interested in moving it to PostgreSQL. Everyone else worked on adding XMLRPC support. I had thought the server already supported XMLRPC for the distutil register command, but apparently that command just submits a normal POST form. They are really interested in making a command-line client to PyPI, so XMLRPC (using xmlrpclib) seemed like the right way to do it. In the end they mostly spent time learning about XMLRPC and getting exceptions working sanely and whatnot; they didn't have a chance to actually implement useful functions. Luckily that's actually pretty easy with xmlrpclib, and I think they did a lot of the hard stuff in the sprint -- it's a good chance to work on things you aren't familiar with.

The people who worked together used screen, which worked pretty well. There was an editor conflict; I use Emacs, and a couple other people use vi, and Brant was trying to decide which one he'd use, so he wasn't familiar with either. But besides that screen was a good way to collaborate, even though I felt a need to develop a set of CB-like signals to indicate who's driving and when you're done.

We set stuff up in a Subversion repository to share our work; and I think we'll all be continuing what we started so the repository will continue to be useful. (I still have to make a better, more technical summary for Catalog-SIG)

Created 06 Mar '05


I have to say that screen is one of the most useful applications around. I've been using daily it since my college days, though I can't say I've ever used it in group share mode. That's something I'm going to have to try out. I believe someone wrote a collaborative editor in Python for these types of sessions, but I honestly wouldn't find a reason to use it when screen+${EDITOR} works just as well. Perhaps using IRC or Jabber could help with your CB messages. ;-)
# ^chewie

Well, since we were all in the same room, we actually just had to say "ok, I'm done", or "let me edit that." It's just easy to forget and then have more than one person typing (or everyone staring at the screen waiting for someone to do something).

To do it in multi-user mode we all logged in as the same user, and used screen -x. And then hit some magic keys (maybe just ^A-#) -- I haven't used screen much before so I'm fuzzy on the details.

# Ian Bicking

There's an entire suite of access control list commands to use for multi-user sessions. You can apparently create user-specific ACL's or add entire groups to the session, and it allows fairly finite control over windows and commands available. It's a pretty advanced piece of software, most of the features of which are never used by the average end-user. One of my favorite .screenrc lines is the following:

# Always add the status bar
# ------------------------------------------
# "%-w%n %t%+w %= %H(%l) %Y/%m/%d %0c"
# ------------------------------------------
# %-w      All windows up to the current one
# %n %t    Number and name of current window
# %+w      All windows after the current one
# %=       Pad spaces
# %H       Host name
# %l       System Load
# %m/%d %c Month/Day TIME
# ------------------------------------------
caption always "%{+b}%{.gR}%-w%{.rB}%n %t%{-}%+w %=%{..B} %H(%l) %{..R}%Y/%m/%d %0c"
# ^chewie