Summer of Code projects
OpenSSH hopes to participate in Google's 2009 Summer of Code. This page
lists suggested projects for applicants. These projects are based on real
user or developer needs and all have the opportunity to make OpenSSH a better
product.
If you are interested in, or have questions about any of these projects,
please contact the nominated developer.
Why contribute to OpenSSH?
OpenSSH is the most popular SSH implementation by a wide
margin, the effective reference implementation of the SSH protocol and a
critical tool depended upon by millions of users daily. If you care about
your work being useful and making a positive difference, then OpenSSH is a
good choice.
We are also a well established software project (10 years old in September)
with high aesthetic and quality standards for new code. This
will provide a rewarding learning experience for someone new to free software
development. Students looking for academic projects should be aware that a
number of high quality papers have been written about various aspects of
OpenSSH's implementation.
Contributor requirements
Contributors must be fluent in the C programming language, the standard
Unix development toolchain and the Bourne shell. All code contributions
must adhere to the
OpenBSD style guide. The OpenSSH product itself is a C application, but the
regression tests are mostly written in sh(1).
Source code is managed using CVS
and bugs are tracked using Bugzilla.
Familiarity with these tools is desirable, but not absolutely required.
Final code submissions must compile without warnings and function properly on
OpenBSD and Linux (at least).
After the initial application, selection and project startup,
contributors will be asked to communicate on the public mailing lists and
bugtracker. Contributors should expect debate and criticism of their
proposals and implementation, but they can also expect this debate to be
constructive.
Finally, contributors are not on their own - their mentors and the OpenSSH
mailing list community are good sources of advice, ideas and wisdom.
Available projects
Renovate sftp
Complexity: low-medium
Contact: Damien Miller <djm@openssh.com>
sftp(1) is, at present, primarily an interactive program with a relatively
weak commandline interface. It lacks essential features that are present in
scp(1), especially support for recursive operations.
This project would seek to make sftp(1) a drop-in replacement for commands
that use scp(1) by implementing a compatible commandline syntax. This would
require implementation of recursive uploads/downloads, as these are essential
features supported by scp(1). The new features will need documentation (manual
pages) and regression tests.
Further projects might include:
- Final bugfixing and integration of the tab-completion patch for
interactive mode
- Implementation of inter-file pipelined transfers. Currently sftp will
pipeline uploads and downloads but requires a pipeline flush and server round-
trip for each new file. This causes a slowdown when transferring many small
files.
- An implementation of an rsync-like operation in sftp.
- Automatic tuning of pipeline settings based on network conditions.
Improved testing infrastructure
Complexity: medium
Contact: Damien Miller <djm@openssh.com>
OpenSSH currently has a set of regression and interoperability tests, but
these are by no means rigourous. They do not achieve 100% coverage of the
available configuration and command-line options, let alone code coverage.
There is no support for protocol-level testing, especially fuzzing.
The goal of this project would be to improve testing by
- Improving test coverage of options (commandline and configuration file)
- Establishing measurement of code coverage
- Developing a means to perform protocol-level testing, and using it to
implement basic fuzz tests.
- Development of protocol-level feature and RFC-compliance tests.
Performance improvements
Complexity: medium
Contact: Damien Miller <djm@openssh.com>
There are three aspects of ssh(1)/sshd(8) performance that are particularly
interesting: CPU usage, memory usage and network performance. Some attention
has been given to CPU and network performance, but more work could be done.
This project would examine and make quantifiable improvements to one or more
of these performance aspects. A necessary precursor to this work will be
development the some performance measurement standards and tools that will
be used to assess the outcome.
This is probably the most open-ended of the suggested projects.
Something else...
Contact: Damien Miller <djm@openssh.com>
We are open to new ideas and opportunities to improve OpenSSH, so feel free
to suggest something. If you would like some inspiration, you might also want
to look at
the portable OpenSSH bugtracker,
as many enhancement requests are listed there.
djm@openssh.com
$OpenBSD: gsoc.html,v 1.5 2009/03/25 22:44:11 djm Exp $
Mirror By Cedrat Net Last mirror Update 2009-10-11 03:02Mirror By Cedrat Net Last mirror Update 2009-10-12 03:03Mirror By Cedrat Net Last mirror Update 2009-10-13 03:05Mirror By Cedrat Net Last mirror Update 2009-10-14 03:08Mirror By Cedrat Net Last mirror Update 2009-10-15 03:04Mirror By Cedrat Net Last mirror Update 2009-10-16 03:04Mirror By Cedrat Net Last mirror Update 2009-10-17 03:03Mirror By Cedrat Net Last mirror Update 2009-10-18 03:04Mirror By Cedrat Net Last mirror Update 2009-10-19 03:03Mirror By Cedrat Net Last mirror Update 2009-10-20 03:04Mirror By Cedrat Net Last mirror Update 2009-10-21 03:03Mirror By Cedrat Net Last mirror Update 2009-10-22 03:03Mirror By Cedrat Net Last mirror Update 2009-10-23 03:03Mirror By Cedrat Net Last mirror Update 2009-10-24 03:03Mirror By Cedrat Net Last mirror Update 2009-10-25 03:03Mirror By Cedrat Net Last mirror Update 2009-10-26 03:02Mirror By Cedrat Net Last mirror Update 2009-10-27 03:03Mirror By Cedrat Net Last mirror Update 2009-10-28 03:03Mirror By Cedrat Net Last mirror Update 2009-10-29 03:03Mirror By Cedrat Net Last mirror Update 2009-10-30 03:03Mirror By Cedrat Net Last mirror Update 2009-10-31 03:30Mirror By Cedrat Net Last mirror Update 2009-11-01 03:05Mirror By Cedrat Net Last mirror Update 2009-11-02 03:04Mirror By Cedrat Net Last mirror Update 2009-11-03 03:05Mirror By Cedrat Net Last mirror Update 2009-11-04 03:04Mirror By Cedrat Net Last mirror Update 2009-11-05 03:05Mirror By Cedrat Net Last mirror Update 2009-11-06 03:06Mirror By Cedrat Net Last mirror Update 2009-11-07 03:05Mirror By Cedrat Net Last mirror Update 2009-11-08 03:10Mirror By Cedrat Net Last mirror Update 2009-11-09 03:05Mirror By Cedrat Net Last mirror Update 2009-11-10 03:05Mirror By Cedrat Net Last mirror Update 2009-11-11 03:05Mirror By Cedrat Net Last mirror Update 2009-11-12 03:05Mirror By Cedrat Net Last mirror Update 2009-11-13 03:06Mirror By Cedrat Net Last mirror Update 2009-11-14 03:06Mirror By Cedrat Net Last mirror Update 2009-11-15 04:08Mirror By Cedrat Net Last mirror Update 2009-11-16 03:47Mirror By Cedrat Net Last mirror Update 2009-11-17 03:05Mirror By Cedrat Net Last mirror Update 2009-11-18 03:05Mirror By Cedrat Net Last mirror Update 2009-11-19 03:06Mirror By Cedrat Net Last mirror Update 2009-11-20 03:05Mirror By Cedrat Net Last mirror Update 2009-11-21 03:05Mirror By Cedrat Net Last mirror Update 2009-11-22 03:05Mirror By Cedrat Net Last mirror Update 2009-11-23 03:05Mirror By Cedrat Net Last mirror Update 2009-11-24 03:05Mirror By Cedrat Net Last mirror Update 2009-11-25 03:05Mirror By Cedrat Net Last mirror Update 2009-11-26 03:05Mirror By Cedrat Net Last mirror Update 2009-11-27 03:09Mirror By Cedrat Net Last mirror Update 2009-11-28 03:05Mirror By Cedrat Net Last mirror Update 2009-11-29 03:04Mirror By Cedrat Net Last mirror Update 2009-11-30 03:04Mirror By Cedrat Net Last mirror Update 2009-12-01 03:05Mirror By Cedrat Net Last mirror Update 2009-12-02 03:05Mirror By Cedrat Net Last mirror Update 2009-12-03 03:06Mirror By Cedrat Net Last mirror Update 2009-12-04 03:04Mirror By Cedrat Net Last mirror Update 2009-12-05 03:05Mirror By Cedrat Net Last mirror Update 2009-12-06 03:04Mirror By Cedrat Net Last mirror Update 2009-12-07 03:03Mirror By Cedrat Net Last mirror Update 2009-12-08 03:05Mirror By Cedrat Net Last mirror Update 2009-12-09 03:05Mirror By Cedrat Net Last mirror Update 2009-12-10 03:05Mirror By Cedrat Net Last mirror Update 2009-12-11 03:05Mirror By Cedrat Net Last mirror Update 2009-12-12 03:04Mirror By Cedrat Net Last mirror Update 2009-12-13 03:04Mirror By Cedrat Net Last mirror Update 2009-12-14 03:05Mirror By Cedrat Net Last mirror Update 2009-12-15 03:05Mirror By Cedrat Net Last mirror Update 2009-12-16 03:04Mirror By Cedrat Net Last mirror Update 2009-12-17 03:05Mirror By Cedrat Net Last mirror Update 2009-12-18 03:05Mirror By Cedrat Net Last mirror Update 2009-12-19 03:05Mirror By Cedrat Net Last mirror Update 2009-12-20 03:03Mirror By Cedrat Net Last mirror Update 2009-12-21 03:05Mirror By Cedrat Net Last mirror Update 2009-12-22 03:04Mirror By Cedrat Net Last mirror Update 2009-12-23 03:05Mirror By Cedrat Net Last mirror Update 2009-12-24 03:04Mirror By Cedrat Net Last mirror Update 2009-12-25 03:04Mirror By Cedrat Net Last mirror Update 2009-12-26 03:03Mirror By Cedrat Net Last mirror Update 2009-12-27 03:05Mirror By Cedrat Net Last mirror Update 2009-12-28 03:05Mirror By Cedrat Net Last mirror Update 2009-12-29 03:04Mirror By Cedrat Net Last mirror Update 2009-12-30 03:05Mirror By Cedrat Net Last mirror Update 2009-12-31 03:04Mirror By Cedrat Net Last mirror Update 2010-01-01 03:03Mirror By Cedrat Net Last mirror Update 2010-01-02 03:05Mirror By Cedrat Net Last mirror Update 2010-01-03 03:05Mirror By Cedrat Net Last mirror Update 2010-01-04 03:04Mirror By Cedrat Net Last mirror Update 2010-01-05 03:03Mirror By Cedrat Net Last mirror Update 2010-01-06 03:06Mirror By Cedrat Net Last mirror Update 2010-01-07 03:05Mirror By Cedrat Net Last mirror Update 2010-01-08 03:05Mirror By Cedrat Net Last mirror Update 2010-01-09 03:05Mirror By Cedrat Net Last mirror Update 2010-01-10 03:03Mirror By Cedrat Net Last mirror Update 2010-01-11 03:04Mirror By Cedrat Net Last mirror Update 2010-01-12 03:05Mirror By Cedrat Net Last mirror Update 2010-01-13 03:05Mirror By Cedrat Net Last mirror Update 2010-01-14 03:05Mirror By Cedrat Net Last mirror Update 2010-01-15 03:06Mirror By Cedrat Net Last mirror Update 2010-01-16 03:05Mirror By Cedrat Net Last mirror Update 2010-01-17 03:05Mirror By Cedrat Net Last mirror Update 2010-01-18 03:06Mirror By Cedrat Net Last mirror Update 2010-01-19 03:04Mirror By Cedrat Net Last mirror Update 2010-01-20 03:05Mirror By Cedrat Net Last mirror Update 2010-01-21 03:05Mirror By Cedrat Net Last mirror Update 2010-01-22 03:04Mirror By Cedrat Net Last mirror Update 2010-01-23 03:04Mirror By Cedrat Net Last mirror Update 2010-01-24 03:04Mirror By Cedrat Net Last mirror Update 2010-01-25 03:05Mirror By Cedrat Net Last mirror Update 2010-01-26 03:05Mirror By Cedrat Net Last mirror Update 2010-01-27 03:05Mirror By Cedrat Net Last mirror Update 2010-01-28 03:05Mirror By Cedrat Net Last mirror Update 2010-01-29 03:05Mirror By Cedrat Net Last mirror Update 2010-01-30 03:05Mirror By Cedrat Net Last mirror Update 2010-01-31 03:05Mirror By Cedrat Net Last mirror Update 2010-02-01 03:04Mirror By Cedrat Net Last mirror Update 2010-02-02 03:05Mirror By Cedrat Net Last mirror Update 2010-02-03 03:06Mirror By Cedrat Net Last mirror Update 2010-02-04 03:06Mirror By Cedrat Net Last mirror Update 2010-02-05 03:05Mirror By Cedrat Net Last mirror Update 2010-02-06 03:06Mirror By Cedrat Net Last mirror Update 2010-02-07 03:04Mirror By Cedrat Net Last mirror Update 2010-02-08 03:05Mirror By Cedrat Net Last mirror Update 2010-02-09 04:43Mirror By Cedrat Net Last mirror Update 2010-02-10 03:06Mirror By Cedrat Net Last mirror Update 2010-02-11 03:05Mirror By Cedrat Net Last mirror Update 2010-02-12 03:05Mirror By Cedrat Net Last mirror Update 2010-02-13 03:05Mirror By Cedrat Net Last mirror Update 2010-02-14 03:05Mirror By Cedrat Net Last mirror Update 2010-02-15 03:04Mirror By Cedrat Net Last mirror Update 2010-02-16 03:05Mirror By Cedrat Net Last mirror Update 2010-02-17 03:05Mirror By Cedrat Net Last mirror Update 2010-02-18 03:05Mirror By Cedrat Net Last mirror Update 2010-02-19 03:06Mirror By Cedrat Net Last mirror Update 2010-02-20 03:06Mirror By Cedrat Net Last mirror Update 2010-02-21 03:05Mirror By Cedrat Net Last mirror Update 2010-02-22 03:05Mirror By Cedrat Net Last mirror Update 2010-02-23 03:06Mirror By Cedrat Net Last mirror Update 2010-02-24 03:06Mirror By Cedrat Net Last mirror Update 2010-02-25 03:05Mirror By Cedrat Net Last mirror Update 2010-02-26 03:05Mirror By Cedrat Net Last mirror Update 2010-02-27 03:05Mirror By Cedrat Net Last mirror Update 2010-02-28 03:06Mirror By Cedrat Net Last mirror Update 2010-03-01 03:05Mirror By Cedrat Net Last mirror Update 2010-03-02 03:05Mirror By Cedrat Net Last mirror Update 2010-03-03 03:06Mirror By Cedrat Net Last mirror Update 2010-03-04 03:06Mirror By Cedrat Net Last mirror Update 2010-03-05 03:06Mirror By Cedrat Net Last mirror Update 2010-03-06 03:06Mirror By Cedrat Net Last mirror Update 2010-03-07 03:06Mirror By Cedrat Net Last mirror Update 2010-03-08 03:06Mirror By Cedrat Net Last mirror Update 2010-03-09 03:06Mirror By Cedrat Net Last mirror Update 2010-03-10 03:06Mirror By Cedrat Net Last mirror Update 2010-03-11 03:06