Skip to main content

The Python Web services developer: 10th International Python Conference

Mike Olson, Principal Consultant, Fourthought, Inc.
Photo of Mike Olson
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 (uche@ogbuji.net), Principal Consultant, Fourthought, Inc.
Photo of Uche Ogbuji
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.

Summary:  In this article we will take a short break from writing code and talk about some of the happenings at Python 10 Web Services track.

Date:  05 Apr 2002
Level:  Introductory
Activity:  939 views

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.

Talking Web services

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 Berners-Lee keynote

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.


Resources

About the authors

Photo of Mike Olson

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.

Photo of Uche Ogbuji

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)



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=SOA and Web services
ArticleID=11654
ArticleTitle=The Python Web services developer: 10th International Python Conference
publish-date=04052002
author1-email=mike.olson@fourthought.com
author1-email-cc=
author2-email=uche@ogbuji.net
author2-email-cc=

My developerWorks community

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Rate a product. Write a review.

Special offers