[Twisted-Python] I was looking for offhanded ways to improve us.
![](https://secure.gravatar.com/avatar/e1554622707bedd9202884900430b838.jpg?s=120&d=mm&r=g)
Looks like 0.9 has been quite a while in coming. The Rt. Hon. Rev. Short and I have been discussing lots of interesting ideas for improvement of twisted reality; I quite some time looking at Squeak and considering strategies for adopting Smalltalk to improve the reliability of the core, but eventually gave up. It looks like the strategy for insulating the game engine from unstable code is going to be server distribution; much like twisted web allows multiple users to run untrusted (except for the fact that gloop sends pickles, but this is an implementation deficiency not a design flaw) web servers on the same machine, I think that the central "reality reservoir" server on Zaibach will allow users to install doors to their areas. I also think that there's going to be a small paradigm shift in TR's approach to game code; I think that twisted.reality was attempting to be unrealistically game-agnostic. The core will start to make a few more assumptions about things like inventory, damage, and containment. The supporting "bulky" code (containing big string and tuple constants et. al.) will continue to live in twisted/library/, but I don't think it's possible to elegantly encapsulate anything meaningful in such a bare-bones simulation that's currently twisted/reality.py. I've written a draft "official twisted python coding standard", currently at http://www.twistedmatrix.com/users/glyph/standard.html Comments, corrections, and pointers to inconsistencies in the existing code will be welcomed, but if anybody says anything about NerdyCaps, I'm going to break some teeth. And finally, I'd like to see some discussion of a release strategy, as charming as "whenever we get around to it" has been :). I recommend something like this (note that I don't put dates next to *anything*... 0.8.5: the fixes which are currently in (CGI, refactorings to Twisted Reality, swing faucet, etc), preliminary demo code, segregation of Inheritance into a separate package, "dead" protocols directory. 0.9.0: "live" protocols implementation, used by at least .web (hopefully .gloop too); full, publicly running TR demo (assuming also some more improvements to the TR core, some more library functionality). 0.9.1: Simple distributed TR server. 0.9.2: Distributed TR server + SSL certificates. 0.9.3: Postgres protocol client, asynchronous DB API spec. 0.9.4: Some sort of relational storage for TR objects (?) 0.99.*: Writing tests and hammering the heck out of what we've got, adding minor features and polish to TR and the TR demo. 1.0.0: unit tests for everything. Media firestorm, we take radix's leash and dash and I run the mop-up operation in-character in the TR demo :) Here, there's some speculation as to whether we should do a fork to "stable" and "unstable" versions of TPy. Any thoughts? Further #s here assume such a fork doesn't happen. These are more of an overarching plan than specific functionality. 1.1.0: Rudimentary relational storage of Things, Radix's config interface. Finished version of Inheritance, packaged separately. Batteries not included. 1.2.0: "dict" protocol client and server for TR. More and better of the config interface. Meatier back-end for mail handling, real mail server (perhaps integrated with PMS?) 1.3.0: better Faucet, perhaps with PyGame. Start of work on _Inheritance_II:Acquisition_, which has a "massively" multiplayer "mode" as well as the multi- and single-player modes. (This will, in truth, be a different game, set in a similiar but much larger world.) The game won't be a strict sequel, but more in the way that Beyond Zork was a Zork sequel. 1.4.0: Fairly complete inet.d replacement: pop3, imap, telnet, talk, ident, IRC client-compatible server; all implemented with Moshe's protocols framework. 1.5.0: 100% for-real relational storage of TR objects, finished version of the schema and extensibility mechanisms for that schema. 1.6.0: Peer-to-peer TR additions; each client is a server too. Finish _Acquisition_, beginnings of serious work on an even larger game. 1.7.0: _Inheritance_III:Collection_, single-player only, but a testbed for features used in a larger game, mostly those which involve automatically generating large areas. If we do spatiality, here's where it gets exercised. 1.8.0: generalizations of peer-to-peer framework and trust web, to do something like mojo nation. 1.9.0: Robustness improvements. netcat from /dev/urandom to a gloop or twisted.web socket fails gracefully. I go to jail for a year because of features released with 1.8.0. 2.0.0: Full implementation of CORBA, NFS, XML-RPC, SMB, SSH, and NTP, all of which are TR-aware. Javascript interpreter. Enterprise. Highly concurrent resource control for multi-user Python. Moxie. Green eggs. Appleshare server and client. Ham. X font server. Kerberos. Zephyr. CODA. built-in remote debugging. Completely transparent python-relational interface with syntax additions built using MobiusPython. Kitchen sink. Bathroom sink. Implement "corridors" before Lilo gets around to it, move OPN to twistedmatrix.com. _Inheritance_IV:Subtype_Polymorphism_. 2.0.1: Internet. 2.0.2: Divunal. -- ______ __ __ _____ _ _ | ____ | \_/ |_____] |_____| |_____| |_____ | | | | @ t w i s t e d m a t r i x . c o m http://twistedmatrix.com/users/glyph
![](https://secure.gravatar.com/avatar/daf660d6890426570e2e2188f4f7b27e.jpg?s=120&d=mm&r=g)
Ok, 3 points. 1) I think 0.9.0 should be feature-complete with 1.0, and 0.9.* only be bug fixes, and all your current 0.9.* releases be 0.8.* releases. 2) package-izing of web. I think this needs to be done (we have webconfig and webutils in twisted, and these should be web.config and web.utils). I've been bitching about this for a very long time. I think it should be done before 1.0. It makes sense to do it now, while the protocol handling part of web is being factored out into protocols.http. 3) Maybe releases >1.0 should be a little more spread out numerically. Maybe not. I donno. On Sat, Apr 28, 2001 at 05:39:14PM -0500, Glyph Lefkowitz wrote:
-- Chris Armstrong carmstro@twistedmatrix.com http://twistedmatrix.com/~carmstro carmstro@dynup.net
![](https://secure.gravatar.com/avatar/e1554622707bedd9202884900430b838.jpg?s=120&d=mm&r=g)
On Saturday 28 April 2001 18:12, you wrote:
The gimp-style versioning is intentional. I think that 0.99.* indicates "slogging towards 1.0!!" whereas 0.9 seems like a decent release in its own right. I'll vote (i.e. use my divine mandate to dictate) that we keep it that way :)
The trouble is that webutils and webconfig are not logically "owned" by web. webutils could grow into a separate distribution; webconfig might just as logically be config.web. I don't see a compelling reason for organizing them in a package yet. (Something like twisted.reality may bear packagizing, since twisted.library *is* logically "owned" by reality). Also, anything called "util" is basically crying out for refactoring. Perhaps web and reality should both be packages and both have a "library" subpackage? I dunno. Suggestions are welcome.
3) Maybe releases >1.0 should be a little more spread out numerically. Maybe not. I donno.
Well, there are 1.0.1, 1.0.2, 1.0.3 releases in between, etc, that were not detailed. -- ______ __ __ _____ _ _ | ____ | \_/ |_____] |_____| |_____| |_____ | | | | @ t w i s t e d m a t r i x . c o m http://twistedmatrix.com/users/glyph
![](https://secure.gravatar.com/avatar/daf660d6890426570e2e2188f4f7b27e.jpg?s=120&d=mm&r=g)
On Sun, Apr 29, 2001 at 11:17:45AM -0500, Glyph Lefkowitz wrote:
Sorry about that, I didn't notice 0.99.* before sending the last mail, and dash straightened me out yesterday. :)
Yeah, web.library sounds good. webutils is basically the same as library, only all classes are in the same file. And where to put webconfig is a toughy, since it's related to both config and web. Which is more important? The way it's implemented, or what it does? I think config.web seems more logical. Then there could also be config.reality, config.gloop, etc. (when we get around to it). -- Chris Armstrong carmstro@twistedmatrix.com http://twistedmatrix.com/~carmstro carmstro@dynup.net
![](https://secure.gravatar.com/avatar/faeb19fbb879e56c1be4a300cfd80ec8.jpg?s=120&d=mm&r=g)
On Sat, 28 Apr 2001matrix.com> wrote:
I've written a draft "official twisted python coding standard", currently at
Thanks.
0.9.3: Postgres protocol client, asynchronous DB API spec.
Wow! Sounds heavy...
Here, there's some speculation as to whether we should do a fork to "stable" and "unstable" versions of TPy. Any thoughts?
No need, until you've got 1000s of users, which won't happen until 2.0, probably, if at all.
And I'm still thinking of APX and SIMAP -- http://em.ca/~bruceg/ -- "I'll be ex-DPL soon anyway so I'm |LUKE: Is Perl better than Python? looking for someplace else to grab power."|YODA: No...no... no. Quicker, -- Wichert Akkerman (on debian-private)| easier, more seductive. For public key, finger moshez@debian.org |http://www.{python,debian,gnu}.org
![](https://secure.gravatar.com/avatar/e1554622707bedd9202884900430b838.jpg?s=120&d=mm&r=g)
On Sunday 29 April 2001 00:33, you wrote:
As you mentioned to me offline, I forgot about whitespace and docstring indentation. I've updated it to include a blurb about those.
0.9.3: Postgres protocol client, asynchronous DB API spec.
Wow! Sounds heavy...
Not that heavy (I hope)... there's a standard for the protocol, there is a reference implementation of it in libpq and a 3rd-party implementation using emacs. The nastiest part, I think, will be in trying to design a database API that makes sense asynchronously.
That's what I thought...
Good to hear :). But first get web integrated with twisted.protocols.http! :)) -- ______ __ __ _____ _ _ | ____ | \_/ |_____] |_____| |_____| |_____ | | | | @ t w i s t e d m a t r i x . c o m http://twistedmatrix.com/users/glyph
![](https://secure.gravatar.com/avatar/daf660d6890426570e2e2188f4f7b27e.jpg?s=120&d=mm&r=g)
Ok, 3 points. 1) I think 0.9.0 should be feature-complete with 1.0, and 0.9.* only be bug fixes, and all your current 0.9.* releases be 0.8.* releases. 2) package-izing of web. I think this needs to be done (we have webconfig and webutils in twisted, and these should be web.config and web.utils). I've been bitching about this for a very long time. I think it should be done before 1.0. It makes sense to do it now, while the protocol handling part of web is being factored out into protocols.http. 3) Maybe releases >1.0 should be a little more spread out numerically. Maybe not. I donno. On Sat, Apr 28, 2001 at 05:39:14PM -0500, Glyph Lefkowitz wrote:
-- Chris Armstrong carmstro@twistedmatrix.com http://twistedmatrix.com/~carmstro carmstro@dynup.net
![](https://secure.gravatar.com/avatar/e1554622707bedd9202884900430b838.jpg?s=120&d=mm&r=g)
On Saturday 28 April 2001 18:12, you wrote:
The gimp-style versioning is intentional. I think that 0.99.* indicates "slogging towards 1.0!!" whereas 0.9 seems like a decent release in its own right. I'll vote (i.e. use my divine mandate to dictate) that we keep it that way :)
The trouble is that webutils and webconfig are not logically "owned" by web. webutils could grow into a separate distribution; webconfig might just as logically be config.web. I don't see a compelling reason for organizing them in a package yet. (Something like twisted.reality may bear packagizing, since twisted.library *is* logically "owned" by reality). Also, anything called "util" is basically crying out for refactoring. Perhaps web and reality should both be packages and both have a "library" subpackage? I dunno. Suggestions are welcome.
3) Maybe releases >1.0 should be a little more spread out numerically. Maybe not. I donno.
Well, there are 1.0.1, 1.0.2, 1.0.3 releases in between, etc, that were not detailed. -- ______ __ __ _____ _ _ | ____ | \_/ |_____] |_____| |_____| |_____ | | | | @ t w i s t e d m a t r i x . c o m http://twistedmatrix.com/users/glyph
![](https://secure.gravatar.com/avatar/daf660d6890426570e2e2188f4f7b27e.jpg?s=120&d=mm&r=g)
On Sun, Apr 29, 2001 at 11:17:45AM -0500, Glyph Lefkowitz wrote:
Sorry about that, I didn't notice 0.99.* before sending the last mail, and dash straightened me out yesterday. :)
Yeah, web.library sounds good. webutils is basically the same as library, only all classes are in the same file. And where to put webconfig is a toughy, since it's related to both config and web. Which is more important? The way it's implemented, or what it does? I think config.web seems more logical. Then there could also be config.reality, config.gloop, etc. (when we get around to it). -- Chris Armstrong carmstro@twistedmatrix.com http://twistedmatrix.com/~carmstro carmstro@dynup.net
![](https://secure.gravatar.com/avatar/faeb19fbb879e56c1be4a300cfd80ec8.jpg?s=120&d=mm&r=g)
On Sat, 28 Apr 2001matrix.com> wrote:
I've written a draft "official twisted python coding standard", currently at
Thanks.
0.9.3: Postgres protocol client, asynchronous DB API spec.
Wow! Sounds heavy...
Here, there's some speculation as to whether we should do a fork to "stable" and "unstable" versions of TPy. Any thoughts?
No need, until you've got 1000s of users, which won't happen until 2.0, probably, if at all.
And I'm still thinking of APX and SIMAP -- http://em.ca/~bruceg/ -- "I'll be ex-DPL soon anyway so I'm |LUKE: Is Perl better than Python? looking for someplace else to grab power."|YODA: No...no... no. Quicker, -- Wichert Akkerman (on debian-private)| easier, more seductive. For public key, finger moshez@debian.org |http://www.{python,debian,gnu}.org
![](https://secure.gravatar.com/avatar/e1554622707bedd9202884900430b838.jpg?s=120&d=mm&r=g)
On Sunday 29 April 2001 00:33, you wrote:
As you mentioned to me offline, I forgot about whitespace and docstring indentation. I've updated it to include a blurb about those.
0.9.3: Postgres protocol client, asynchronous DB API spec.
Wow! Sounds heavy...
Not that heavy (I hope)... there's a standard for the protocol, there is a reference implementation of it in libpq and a 3rd-party implementation using emacs. The nastiest part, I think, will be in trying to design a database API that makes sense asynchronously.
That's what I thought...
Good to hear :). But first get web integrated with twisted.protocols.http! :)) -- ______ __ __ _____ _ _ | ____ | \_/ |_____] |_____| |_____| |_____ | | | | @ t w i s t e d m a t r i x . c o m http://twistedmatrix.com/users/glyph
participants (3)
-
Chris Armstrong
-
Glyph Lefkowitz
-
Moshe Zadka