Domain specific language to specify web services
Python PHP
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



This project is no longer developed but left online for inspiration. A more pragmatic solution is WsgiService started by the same author as servicegen.


servicegen is a small domain specific language to specify web services. The idea is to lower the barrier for creating a new service.

The simple service description will abstract a few common tasks:

  • Getting input parameters and validate them.
  • Get data from other web services or a database.
  • Configuration handling for deployments.
  • Logging.
  • Caching using e.g. memcached.
  • Correct handling of HTTP caching.

A few features can be provided based on the input format:

  • Create service in various programming languages and frameworks. I can imagine creating output for, Okapi, Spring, etc. This would allow to easily switch deployment platform depending on current requirements.
  • Create documentation for the service in a consistent format.
  • Maybe even create clients for various programming languages.


Started on May 26, 2008 by Patrice Neff during a hack day. Currently doesn't do much. There is:

  • An ANTLR grammar for a basic service description.
  • A generator in Python which gives some output based on what it parsed.
  • An extensive grammar documentation showing what's the intention.
  • An output target to create a basic application.
  • An output target to create a basic HTML documentation.


On a shell execute like this:

$ ./ docs/meteo-service.txt

Design Choices

  • Variables can't change their value once the value is defined. This way on assignment of each variable it can be determined whether the variable can be read from a cache or not depending on the keyword "cached".


  • Specified but to implement:
    • Caching
    • Caching of output blocks
  • Custom "not found" handler
  • Add JSON output