For four days in February 2002, many developers of the world gathered to talk about their favorite topic: Python. The 10th International Python Conference was divided into three sections: tutorials, conference tracks, and developer's day. While there was a tutorial given on Web services, in this column, I'll focus on what happened in the Web Services and Protocols track.
The objective for the Web Services and Protocols track was to focus on cutting edge development of tools in the area of Web services. While these topics were presented, there was a lot of general discussion, both during and between the presentations on:
- what is Web services?
- how are people using it?
- is there a future to it?
Of course, being a Python conference, these discussions all had a Pythonic flavor to them. People were interested in the current state of Web service tools in Python, and examples of how people have been using them to solve real world problems.
The Web Services and Protocols track opened with two talks by Paul Prescod that laid out an introduction to Web services. Paul's discussion defined many of the acronyms that fly through Web services based discussions, and gave a good general introduction to these different technologies. In his talks, Paul broke down many of these technologies, SOAP, WSDL, UDDI, HTTP, XAML, etc., and presented example code of using some of these technologies in Python.
Other talks followed throughout the track to serve as introductions to the world of Web services. Matthew Allum gave a good break down of the Jabber communication protocol and talked about the open source jabberpy project. For those not familiar, the Jabber protocol passes XML messages over raw TCP/IP. The protocol was originally designed for instant messaging, but has been expanded with concepts like "presence," somewhat akin to directory entries in UDDI, to be a more robust messaging protocol. For those of you that are disappointed in the current state of SOAP, Jabber is a good protocol to keep you eyes on as it provides a good alternative transport for XML messages. Jabber, being a more mature technology, can lead to more stable implementations and better interoperability between implementations.
A technology that is not always associated with Web services, but that has been used for distributed applications for over 10 years now is CORBA (Common Object Request Broker Architecture). Duncan Grisby gave a brief introduction to CORBA and the open source ORB, omniORB. However, he spent much of his time during the presentation, and throughout the rest of the conference, defending CORBA against many of the myths that have popped up around it as Web services has started to take off. He showed examples of how CORBA is not "too complex," not "too bloated," and "not the same as SOAP," etc. He argued throughout the conference that Web services is really just reinventing the wheel. Technologies, like CORBA, have been doing distributed applications for a long time and have learned many hard lessons that SOAP will have to re-learn.
Mike Olson and Uche Ogbuji (the authors of this column) gave a talk that introduced RDF and how it can be used in Web services. We used 4RDF (a component of 4suite) to give examples of how you work with RDF and talked about real world use cases where RDF was used to create Web-based solutions. We talked briefly about how you can use RDF as a replacement for technologies such as WSDL. In the case of WSDL, WSDL would become a RDFS used define a Web service.
We also demoed much of what we have been talking about in this column, updated for the latest 4Suite release (0.12).
The focal point of the discussions about what is Web services was the panel discussion moderated by Paul Prescod. The panel members where Uche Ogbuji, Mike Olson, Duncan Grisby, and Keith Jackson. The audience asked many questions about where the panel felt Web services was heading, what their thoughts were on its future, and what the panel members opinions were on practical implementations of distributed applications on the Web. About half-way through the panel, Tim Berners-Lee showed up and became an impromptu fifth member of the panel. At this point, the discussion moved towards how people learn RDF and how it plays into the future of Web services.
Many developers gave talks about projects that they have been working on in the area of Web services. Andrew Kuchling talked about how they are using Web based services to facilitate the testing of fabrications in his MEMS Exchange project. He then went on to talk about Quixote, his Web development environment. It is based on the Python Template Language which extends the python interpreter to make it more suited to Web-based development. As a side note, during the closing key note, Andrew was awarded the Frank Willision award for his contributions to Python.
Mike Olson and Uche Ogbuji gave an introduction to using the 4Suite XML repository as a foundation for building Web services based applications. They talked about how you can create dynamic data driven applications and allow connections to these applications over various protocols including HTTP, SOAP, XML-RPC, DCOM, FTP, and CORBA.
Tim's Key note speech was on Webizing Python. In it he promoted a few of his ideas for making Python a better programming language for the Web. He started by saying how he likes the language in its current form, and how he likes the plethora of third party libraries for creating Web enabled applications. A few of the ideas he mentioned are relevant to our column. The highest on the list being native support for graphs. His proposal created a native graph data type that looked a bit like dictionaries, but allowed for storage of triples to represent a graph. He proposed a syntax like:
x = {sky color blue,gray; madeof air. sea color grey. gray sameAs grey}
|
From the above, we would have five arcs: sky color blue, sky color gray, sky madeof air, sea color grey, and gray sameAs grey. We would then be able to perform simple queries on the graph. Native support for graphs, similar to what is shown above, would be ideal for storing extensible and efficient data about Web services nodes. After all, the "Semantic Web" is a set of very large graphs that need to be represented, queried and traversed efficiently by the applications that use it.
The second idea he promoted had to to with making programs them selves more Web friendly. It was based around the idea that all identifiers in a Python program should be URIs. As examples, modules would be referenced with a full URI
import http://www.w3.org/2000/10/swap/llyn
http://www.w3.org/2000/10/swap/llyn.doSomething()
|
From the above, we have easy support for module versioning as
import http://www.python.org/2002/10/15/string
|
and
import http://www.python.org/2001/12/25/string
|
These would be two different imported modules allowing developers to create a more robust link between thier code and, in this case, a specific version of the standard string module.
From the idea of modules referenced as URIs, he lead to others, such as module level variables, which are then accessible as URL fragments.
print http://www.python.org/2001/12/25/string#hexdigits
|
Changes like this could in many ways build the more useful aspects of Web services right into Python.
In the next installment of the column, we shall get back to our coding examples. We will resist the client and server examples written with SOAPy and ZSI, and see what is required to get interoperation between Python SOAP implementation.
- Participate in the discussion forum.
- Check out the previous Python Web services developer.
- Visit the Python Conference Page.
- Learn more about Jabberpy.
-
onmiORB is an open source ORB project.
-
4Suite is a good Python tool for XML and Web services.
- The Quixote Web application development environment.

Mike Olson is a consultant and co-founder of Fourthought Inc., a software vendor and consultancy specializing in XML solutions for enterprise knowledge management applications. Fourthought develops 4Suite, and 4Suite Server, open source platforms for XML middleware. You can contact Mr. Olson at mike.olson@fourthought.com.

Uche Ogbuji is a consultant and co-founder of Fourthought Inc., a software vendor and consultancy specializing in XML solutions for enterprise knowledge management applications. Fourthought develops 4Suite, and 4Suite Server, open source platforms for XML middleware. Mr. Ogbuji is a Computer Engineer and writer born in Nigeria, living and working in Boulder, Colorado, USA. You can contact Mr. Ogbuji at uche@ogbuji.net.
Comments (Undergoing maintenance)





