Navigation

Recent site activity

Home‎ > ‎

SummerOfCode2007

My initial proposal

Hello Google, Python Software Foundation, and/or prospective mentor!

I'm Paul Swartz (paulswartz at gmail dot com, z3p on Freenode). I'm a 4th
year at Hampshire College (http://www.hampshire.edu), a small
liberal-arts school in Western Massachusetts. My concentration was in
Computer Science and Literature, and my thesis is titled Essays in
Programs as Literature. It's a collection of essays about the
philosophy of programming, and on the relationship between programming
and literature. I've taken classes in networking, computation theory,
and programming language paradigms. I've worked with the Twisted
project with Conch development, but have taken an impromptu
leave-of-absence due to school.

SSH is the defacto standard for remote shell access. It's a very
extensible protocol as well, with support for TCP/UDP forwarding and
file transfer. Twisted Conch is a from-scratch implementation of the
SSH version 2 protocol. It's used in Twisted to provide in-process
support for an SSH server, as well as in other projects to provide a
Python library for connecting to SSH servers. Conch is a project that
enables a lot of functionality. However, this functionality means that
the interfaces can be complicated to use and complicated to test. My
Summer of Code project would be trying to rectify these complications.

My project would fall into two related parts. The first part would
be updating the tests for Conch. The current tests are showing their
age. They have race conditions and intermittent failures: in short,
they are non-deterministic. This part would involve both refactoring
Conch to be more easily testable, and adding and fixing the tests. The
second part is making a higher-level interface to the implementation.
Most users of Conch (like most users of other SSH implementations) do
not need full access to the protocol's power. A higher-level interface,
just giving access to a shell/command/subsystem and port forwarding,
and the basics of authentication, would mean that more applications
would be able to incorporate SSH effectively. These two issues are the
most frequent complaints from Conch users.

Three months is not a long time. In that time, I'd like to see the
tests be update to not depend on race conditions. They should be
updated to use the new Deferred functionality in Trial, and to not use
depreciated functions. I would also like to see an interface for Conch
that makes connecting to an SSH server as easy as creating one subclass
and calling reactor.connectSSH().

I'm an ideal candidate to work on this project. I started
developing Conch in 2003, but due to other obligations have not been
active in it's development since then. I'm one of the people most
familiar with the codebase. I'm also familiar with the Twisted project,
including Trial, the unit-test framework. I've also written one of the
first applications using Conch, so I know what's involved in using the
library.

Updating the tests

Current problems:

connectSSH()/simple interface

Subpages (1): connectSSH