DOPY - Distributed Objects for Python

DOPY is a small distributed object system written entirely in Python. It is not intended to be CORBA compliant. Instead, it aims to be extremely easy to use and to support Python's dynamic nature - methods are invoked dynamically, parameters are passed by copy. Any python object that can be pickled can automatically be passed as a parameter or a return value, and any Python object can be published as a distributed object.

DOPY is approaching the point where I'm considering giving it a 1.0 version label. At this time, the main thing that is lacking is a good manual. Threading modes need some thrashing, too. However, the current version is quite functional.

Click here for the complete mini-manual.

Change history

2002-04-13 V0.6

Numerous bug fixes for 0.5. Added setup.py file for distutils. Expanded documentation. Added reactors to deal with alternate input channels in single threaded mode.

download

2001-08-04 V0.5

Added support for multiple threading modes. [Note: please review the bug list before trying to use this]

download

2001-02-05 V0.3

Added support for communication over rsh. Fixed usage that was problematic for python 2.0.

download

1999-07-09 V0.2

Added support for server-side-tracebacks, preliminary naming service and persistence service, and transporting remote objects.

download

1999-06-04 V0.1

Very rough initial release.

download

Project Status

I'm considering the possibility of a "1.0" release which would be primarily for cleanup and to add more protocols. Also, I will probably make DOPY interoperable with future distributed object systems that I've been contemplating.

I'm also usually willing to add bug fixes.

Why did I Do This?

Ultimately, because I could. Given Python's built-in support for flattening and resurrection and TCP/IP, DOPY was just too easy and too compelling to resist.

Also, CORBA doesn't support two things that would be very useful for distributed objects in Python:

Finally, I wrote DOPY because I have a very real need for a distributed object system that is able to tunnel through a secure shell connection, and my attempts to figure out how to do this by adding support for a new protocol to Fnorb left me with the impression that it would just be easier to build my own distributed object system.

Return to The Proteus Page