[Twisted-Python] Progress report on splitting packages

Clark C. Evans cce at clarkevans.com
Tue Apr 20 15:56:28 MDT 2004


On Tue, Apr 20, 2004 at 04:21:49PM -0400, Glyph Lefkowitz wrote:
| >We want to allow people to use latest version of Twisted with old
| >versions of other packages. So if the package you use has a major API
| >rewrite, you can still use the old version with the latest and coolest
| >core Twisted.
| 
| In particular, this was a release management problem for Divmod, 
| because we've been making changes to the imap4 code (which is in the 
| "protocols" package), that our code depends on, but we can't release 
| all of Twisted at once fast enough to roll out a minor change, because 
| going through the full QA process for the whole system takes too long.  
| We are trying to decouple things more so that a project which requires 
| bugfixes in twisted.web doesn't accidentally suck in in-progress 
| changes to the reactor as well.

This seems the driving reason.  What ever choice is made, it should
be there to support this need.

My perspective:

  1.  I think it is best to stick with one top level
      package name.   Splitting twisted.* into 
      twisted and tmlabs or whatever dillutes the
      value of the overall product and creates
      unnecessary distinctions.

  2.  Overall, naming should be as boring as possible
      so that what is being implemented is clear,
      'ssh' is better than 'consh'.  Also, while more
      than one implementation is the 'open source'
      way of doing things, more than one way in the
      twisted project, imho, is not a great idea
      (it dillutes the marketing value)

   3. If release management is causing this distinction,
      I suggest making up sub-packages:
      
      twisted.core.python
                  .trial
                  .internet
                 
      twisted.web.client
                 .server
                 .http
                 .ftp

      twisted.mail.smtp
                  .pop
                  .imap
                  .client
                  .server

      twisted.rpc.jelly
                 .spread
                 <other RPC stuff>

      twisted.im.jabber
                .aol
                .client
                .server

      twisted.database. <database stuff>

      twisted.libs.xml
                  .flow
                   (other othgogonal non-protocol libraries)

     4. In particular, I don't see that "enterprise" and 
        "jelly+spread" are any more 'core' than jabber... ;)


Sorry for being so boring.

Clark




More information about the Twisted-Python mailing list