# The Road to API-stable Twisted

The maintainers on each of these packages are not necessarily the people who will be responsible for writing most of their code, although I've certainly tried to do that in most cases :). I would like to start delegating responsibility for deciding when something is done to my various lieutenants, as linus calls them, that are currently working on Twisted. If you don't think you're the right person to maintain a package, let me know.

--glyph

## Twisted API-Stable Platform

Package | Maintainer | Description | Necessary | Desirable | Possible Remaining Incompatible Changes | Release to be Stable By
--- | --- | --- | --- | --- | --- | ---

twisted.internet

Glyph Lefkowitz

A main loop that dispatches events based on network input and the passage of time, and mappings for the Twisted API on to other main loops which it does not necessarily control.

connectTCP should take a factory, not a client. Application needs to be decoupled from cred; services need to manage their own authorizers, not have one handed to them by the application. Connectors for SSL. UDP refactor.

Improved Jython support, and support for Java 1.4's nbio, C optimization of the regular mainloop, refactor of app.connectTCP so Connector doesn't touch reactor implementation.

New connectTCP signature will be incompatible. cred will work differently once Application is removed from the picture.

1.0

twisted.protocols | Moshe Zadka | Wire-protocol implementations of various protocols, decoupled from any processing logic. | Improved handling of FTP | A readline-style input line for telnet, curses-over-telnet, ssh protocol implementation | None that I can think of. | Individual modules by 1.0; probably the whole package will never be.
twisted.mail | Moshe Zadka | E-mail support: POP3, SMTP protocols. | twisted.cred awareness | mailman integration | pretty much everything; lots will break when we move to support twisted.cred. | 1.4
twisted.web | Chris Armstrong | Support for document- and file-based protocols: http, ftp, WebDAV, XMLRPC. | HTTP 1.1 support completion | ZPT integration | Probably some templating things will be changed around in future releases. | 1.0, mostly
twisted.names | ???? | Nameserver and client -- DNS and other protocols related to name resolution. | Real DNS server support, finding someone to maintain this code! | Complete BIND replacement. | Since it's not really being used, I'm not concerned about breakages. | 1.4
twisted.enterprise | Sean Riley | Database support. | A simple asynchronous object-relational mapper. | Everything should be returning Deferreds, not accepting callbacks. | The change mentioned above will break compatibility. | 1.2
twisted.cred | Glyph Lefkowitz | An authentication abstraction. | API cleanup. Removal of dependence of twisted.internet. | More authentication back-ends. | A few redundant methods should disappear, but I don't think anyone was using them. | 1.0
twisted.im | Paul Swartz | A universal client for Twisted, with support for multi-protocol chat. | Migration of all PB clients (manhole, faucet) into this framework. | Blue sky on chat-client features... | It's not really in use yet, so breakages should not affect external parties. | 1.4
twisted.words | Glyph Lefkowitz | Individual and group chat server for Twisted. | Multiple servers rebroadcasting messages. Moderation facilities. | Lots of bots that do cool things on the server side. Total IRCD compatibility with respect to Hybrid Services-style bots. | PB wire protocol will break and there will be a near-total rewrite, moving to refpath-style protocol. | 1.4
twisted.manhole | Kevin Turner | Direct manipulation interface for Twisted. | Easier to use COIL interface. COIL interface to usage.options and mktap which allows for creation of boilerplate servers. Fix manhole GUI so that it works again. | More services related to debugging. | None that I can think of. | 1.2

twisted.spread

Glyph Lefkowitz

Twisted's remote object protocol support.

An RFC cementing the wire-level protocol. pb.setFactoryForClass(className, factory) function which will allow for use of persistentLoad-style objects in PB (ones where the component state is given to the constructor, rather than the initializer). Perspective.observe() and other methods to automate automatically unsubscribing for events on logout. Standardized way of per-object protocol versioning.

Persistent stateless references. Full implementations of PB for more languages. ASCII version of the 'banana' level protocol for debugging and easier protocol implementation.

Object-level protocols may have a small breakage as we move to a different model for locating services, but it should be possible to avoid this.

1.1

twisted.tap | Moshe Zadka | Simple Application Configuration for Twisted. | Integration with COIL's web-based frontend. | None I can think of. | This isn't really a package that external developers use. It may be best to destroy this package and move tap modules into their appropriate packages rather than aggregating them here. | n/a
twisted.sister | Glyph Lefkowitz | Clustering Support | Better tests. Failover. Integration with Enterprise to allow cancelling transactions when a resource dies. Some mechanism for loading plug-ins, so you can run a vanilla sister & parent server w/ your particular application. | Blue sky... | Not used by external developers yet, so the API will totally break several times, I'm sure. | n/a