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.
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.
Added support for multiple threading modes. [Note: please review the
bug list before trying to use this]
Added support for communication over rsh. Fixed usage that was problematic
for python 2.0.
Added support for server-side-tracebacks, preliminary naming service and
persistence service, and transporting remote objects.
Very rough initial release.
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.
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:
Passing complex types by value (the latest CORBA spec supports this).
Implicit dynamic method invocation (it supports dynamic method invocation,
but only through the explicit use of the dynamic invocation API).
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.
Change history
Project Status
Why did I Do This?