Tarawa
Tarawa is an Web server API, similar to Java's Servlet interface; it provides an abstraction of
the Web server that allows you to easily write Web applications, without
knowing the details of the HTTP protocol.
This project is still under development; the API description and
tutorial reflect the current direction of the project.
Why Tarawa?
Although there are a lot of Web scripting langauges and HTTP APIs, none of
them encourage you to use HTTP well. Take a look at the URIs the next time
you're browsing a site using one of these so-called content management
systems, and you'll see what I mean.
Tarawa is designed to encourage applications to align their object model
with the interface they expose as Web resources. It does this by allowing you
to model resources and representations as objects and HTTP methods as object
methods.
Writing your Web application in Tarawa gives you:
- Well-thought out architecture - because Tarawa
encourages you to model your application as discrete resources, it tends
to encourage good object-oriented design.
- Well-described interface - Tarawa align's your code's
interface with the interface you provide on the Web, with URIs. This
means it's easier for machines as well as people to work with your
application.
- Scalability, searchability (and other -abilities) -
Tarawa will make it easy to take advantage of HTTP mechanisms like
caching and content-negotiation.
- Easy implementation - Tarawa does all of the HTTP
heavy lifting for you, and it does it correctly, so that you see the full
benefit of the protocol's use.
- Server independence - As a bonus, Tarawa serves as an
abstraction layer between your application and your Web server; as long
as there's a Server adapter for your environment, you can move any Tarawa
application to it.
Documentation
- Tutorial - learn Tarawa step-by-step
- API Reference
- Resource modeling - take full advantage of Tarawa by properly modeling
your application
- example.py - a simple Tarawa script shows how easy it is
- Design Notes - an explanation of the
technical choices made in Tarawa
- Extending Tarawa - adding protocol functionality to Resources
For support, updates and general discussion of Tarawa, join the Tarawa-discuss list.
Download
This is alpha-quality software; it is not feature-complete, is
known to contain bugs, may not be well-aligned with the documentation, and
large parts were written when I was tired. Downloader beware.
In the near future, I plan to flesh out a test suite for both the HTTP
module and Tarawa, and complete its functionality (including at least one
more Server). Contributions, tests, suggestions and feedback are encouraged;
please use the mailing
list.
I'm also looking for good sample applications.
Acknowledgements
I'd like to thank Mark Baker, Aaron Swartz and Mike Ciavarella for their
patience and advice in reviewing Tarawa. Thanks, guys!