These are categorized chronologically, but their order also roughly corresponds
to importance in most cases. Items with names in [[brackets]] before them are
being actively attacked. Items with names in *{braces}* are finished.
Numbering is sequential.
If you want to add an item, or register to be responsable for or help with one
of these items, please discuss it on the mailing list
(http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python), don't edit
this file directly.
--- TO DO:
000 Documentation. We have sadly let this project become as arcane as Zope was
in its early days. Anybody with free time, please document API calls,
write tutorials, and generally figure out how this stuff works.
Specifically weak documentation subsections include:
* How to write a complex service for PB
* Identities/Perspectives/Services (Passport & how to use it)
* Document "how to schedule" (deferred, timeouts and so on)
001 *{Glyph}* Asynchronous Authentication Service. PB (and similiar) servers
ought to be able to defer their authentication at least to another PB
service. This means that the Authenticator interface has to be revamped to
use callbacks instead of return values.
002 *{Glyph Lefkowitz}* Configuration Application. Twisted needs an
interactive application for exploring and composing the various types of
services that are available; mktap is not adequate. (this is
twisted.manhole.webcoil)
003 [[Paul Swartz]] Integration of TOC and Words. twisted.protocols.toc ought
to integrate with twisted.words, so that AIM, IRC, and PB clients can all
access the same chat "space".
004 [[Moshe Zadka]] Relaying for Twisted.Mail. Twisted.Mail really ought to be
a complete sendmail/pop3d/imapd replacement, but currently it's lacking a
few things. Those things should be added; relaying is at the top of the
list but there are other tasks too. Relaying depends on properly doing
the DNS stuff (030)
005 *{Glyph Lefkowitz}* Twisted.Internet for Jython. Although Java lacks the
select() call, JDK 1.4 *does* have an API for doing asynchronous I/O. Even
previous to that upgrade, it should be possible to fake it by spawning a
bunch of threads. I would probably prefer having the bunch-of-threads
approach initially since old JVMs are all over the place; however, it would
certainly be higher performance to have it actually using an asyncio API;
so I'd like to have both eventually. I would really like to have the
Jython Faucet back up and running again.
006 *{Sean Riley}* "Enterprise". Similiar to WebWare's MiddleKit, it would be
nice to have a library for object-relational interaction. Better yet that
such interaction could be event-based rather than dependant upon blocking
DB APIs. This is a nastier problem than it sounds like.
007 *{Glyph Lefkowitz}* Web widgetry. Twisted.Web ought to have a way of
assembling pages where bits of the pages can be rendered asynchronously
(for example, from pb requests or fetched from other URLs) but the resource
author shouldn't have to manually juggle NOT_DONE_YET requests.
twisted.web.lmx might aid with this. Put more simply: web application
pages should be collections of components, not just flat text generators.
008 File Transfer layer for PB. This would be especially nice for
twisted.words; having standard a way to transfer "large" (100MB+) packets
across or in tandem with a PB connection without breaking anything would be
very good.
009 [[Itamar]] HEAD and other HTTP subtleties for Twisted.Web. There are many
things in the HTTP RFC(s) that Twisted.Web does not do properly and should.
This could perhaps be broken out into multiple TODO items.
010 Profiling, and possibly C optimization of, twisted.internet.main loop and
select calls. There also needs to be some serious load-testing of Twisted
in this area to discover its limitations.
011 WEBDAV protocol implementation for twisted.web. A pluggable infrastructure
would be best, so you could browse different heirarchies (twisted reality
objects, etc) and edit them.
012 *{Itamar Shtull-Trauring}* Twisted.Internet for wxwindows. This might be a
better cross-platform toolkit solution than tkinter, especially given how
poorly tkinter works on MacOS. (At least wxwindows *plans* to support the
mac...)
013 [[Allen Short]] Destroy the sun.
014 *{Glyph Lefkowitz}* Web authentication widget which combines Passport with
Web so that asynchronous authentication won't bother web pages. (this is
twisted.web.guard)
015 [[Itay Ben-Yaacov]] Twisted Names, a full replacement for BIND.
016 *{Glyph Lefkowitz}* Web Session Expiry. (30 minutes seems like a reasonable
default...)
017 mod_pb, an apache module which allows communication with Twisted servers --
hopefully compatible with the current twisted.web spread model.
018 Better win32 integration.
018.1 Support for running twisted servers as WinNT services, with a GUI.
018.2 *{Andrew Bennetts}* twisted.internet support for the win32 event loop as
provided by win32all.
018.3 GUI startup and system tray icon for twistd process on non-NT machines.
018.4 Generating an installer with distutils that actually installs an icon
into your start menu to start twistd (running webcoil).
018.5 Performance Monitor export for twisted.metrics.
019 IMAP support, possibly based on alpha code written by Michel Pelletier
(http://www.zope.org/Members/michel/MyWiki/IMAPServer).
020 NNTP support, server can be based off asyncore code itamar got from Sam
Rushing (and is known to work with Netscape and Pan).
021 [[Glyph Lefkowitz]] Update GTK IM client to be current with twisted.words.
022 *{Paul Swartz}* Update Tk IM client so it doesn't suck so much. (There are
TONS of graphical artifacts and problems with the UI, and the networking
code seems to flake out around the edges)
023 [[Allen Short]] Emacs integration with PB.
024 *{Glyph Lefkowitz}* Refactor twisted.internet so that there is a
single defined API for connecting protocols to their transports.
(listenTCP, listenSSL, connectTCP, connectSSL, etc)
025 *{Glyph Lefkowitz}* Fix C encoder for banana.
026 *{Chris Armstrong}* More ircd-style names for virtual nicks in words; LoginServ (or maybe
NickServ) instead of *login*. The asterisks break some clients.
027 Unit testing of I/O code. There are two possible approaches, both of which
are probably worthwhile at some point: one is to create a virtual_select
and virtual_socket module and a dummy application, sending data to
pre-determined fake FDs. (Note: this could also work with a virtual_gtk
module). Another approach is to create a test framework that starts
separate client and server processes and compares some condition after both
have finished running (or times out if they take too long)
028 [[Kevin Turner]] proper DCC and CTCP support for IRCClient.
029 DCC and CTCP parsing for IRCGateway, to allow interactions with clients on
other protocols. (This depends on 008)
030 [[Moshe Zadka]] DNS
A. Make sure we can serve DNS correctly (half done)
B. Make sure we can deal with asking several servers and dealing
with the answers appropriately
C. Generate unit tests for encoding/decoding
D. Figure a user interface for DNS serving
E. Figure a caching strategy
F. Write acceptance tests (probably via dig(1))
031 Abstract notion of "a group of people", at a higher level than a chat
group.
032 Mailman-like mailing list functionality for twisted.mail.
033 [[Glyph Lefkowitz]] Object Migration layer for Twisted Spread.
034 Voice & video streaming for Twisted Words.
035 *{Glyph Lefkowitz}* Asynchronous equivalent to getPerspectiveNamed, so that
perspectives can be loaded from a database a-la getIdentityRequest.
036 twisted.metrics OS metrics for Linux, FreeBSD, Solaris, etc..
037 twisted.web cookie-based sessions need to be redone in a more secure fashion.
See http://cookies.lcs.mit.edu/pubs.html for details.
038 *{?}* Integrate mbac's client FTP protocol.
039 Remote log viewing and management PB service in lumberjack package.
|