QITAB is an umbrella project collecting Lisp code originally released as Free Software by ITA Software, Inc. (now a part of Google).
There's not quite as much here yet as we'd like, but we'll hopefully be publishing more code as time goes by. Don't expect overly quick progress, as we need to split code from our server code-base and clean it before it's in a shape to be released. However, if there's some library you suspect we possess that you'd like us to publish, please contact us and we'll prioritize open sourcing it.
Note however that ITA (and now Google) has been regularly contributing or funding significant code improvements to free software Lisp implementations (CMUCL, SBCL and CCL), as well as to software such as SLIME, ASDF-DEPENDENCY-GROVEL, ASDF, etc.
Currently, we only publish COMMAND-LINE-ARGUMENTS, CL-PROTOBUFS, INFERIOR-SHELL, POIU, QUUX-HUNCHENTOOT, QUUX-TIME, RPM, and SINGLE-THREADED-CCL below. However, other projects released under the QITAB umbrella but possessing their own project page include XCVB and cl-stomp. Most of these projects are now available through Quicklisp.
COMMAND-LINE-ARGUMENTS is a simple library to help you get and parse command-line arguments.
To get command-line arguments, it
uses cl-launch when available,
or else lets you examine what the implementation provides to you, for you to filter.
COMMAND-LINE-ARGUMENTS was extracted from our QUUX collection of code.
There is some documentation in the
README file.
Note that another project that implements similar functionality is
Didier Verna's CLON;
our library is older, simpler and somewhat more portable,
but Verna's library has a much fancier interface.
You can git clone git://common-lisp.net/projects/qitab/command-line-arguments.git
(If you're a developer,
use ssh://common-lisp.net/project/qitab/git/command-line-arguments.git).
Or you can browse the git web interface at
http://common-lisp.net/gitweb?p=projects/qitab/command-line-arguments.git
CL-PROTOBUFS is a library to use
Google Protocol Buffers in Common Lisp.
Its rivals seem to be
protobuf and
s-protobuf.
The library documentation is included in the sources in a ReST document
cl-protobufs.rst.
You can git clone git://common-lisp.net/projects/qitab/cl-protobufs.git
(If you're a developer,
use ssh://common-lisp.net/project/qitab/git/cl-protobufs.git).
Or you can browse the git web interface at
http://common-lisp.net/gitweb?p=projects/qitab/cl-protobufs.git
INFERIOR-SHELL is a simple library to synchronously execute commands or shell pipelines of commands as subprocesses of your Lisp process, and collect what these subprocesses produced on their standard output to a string, a list of one string per line, or whatever you want. INFERIOR-SHELL depends on a variety of other libraries: asdf xcvb-driver fare-utils fare-matcher fare-quasiquote-readtable fare-mop. There is some documentation in the README file. Unless you need asynchronous execution, we strongly recommend our library (itself based on xcvb-driver) over the very incomplete and less portable attempts from trivial-shell, external-program, executor, elephant, GBBopen, kmrcl, asdf, asdf-install, uffi-compat, iolib-grovel, cffi-grovel, gsharp-play, mcclim, parse-declarations or philip-jose. You can git clone git://common-lisp.net/projects/qitab/inferior-shell.git (If you're a developer, use ssh://common-lisp.net/project/qitab/git/inferior-shell.git). Or you can browse the git web interface at http://common-lisp.net/gitweb?p=projects/qitab/inferior-shell.git
POIU is an extension to ASDF that will compile each of your ASDF systems in parallel. See documentation on top of the source file poiu.lisp. (Currently only works on SBCL, CLISP and (single-threaded) CCL.) You can git clone git://common-lisp.net/projects/qitab/poiu.git (If you're a developer, use ssh://common-lisp.net/project/qitab/git/poiu.git). Or you can browse the git web interface at http://common-lisp.net/gitweb?p=projects/qitab/poiu.git
QUUX-HUNCHENTOOT is a set of extensions to Hunchentoot. Currently, the only published extension is a thread-pooling taskmaster; more may or may not come later. It depends on alexandria, bordeaux-threads, chanl, hunchentoot, lisp-interface-library, optima, uiop. The little documentation there is currently lies in the code itself. You can git clone git://common-lisp.net/projects/qitab/quux-hunchentoot.git (If you're a developer, use ssh://common-lisp.net/project/qitab/git/quux-hunchentoot.git). Or you can browse the git web interface at http://common-lisp.net/gitweb?p=projects/qitab/quux-hunchentoot.git
QUUX-TIME is a library to deal with efficient representation of time. It depends on a bunch of macros and utilities that are currently included in QUUX-TIME but will eventually be published (together with plenty of other ones) in their own package that QUUX-TIME will depend on. The little documentation there is currently lies in the code itself. We don't actually recommend you use QUUX-TIME, though you may freely take code from it to extend your own time library. Instead, we recommend you use LOCAL-TIME. You can git clone git://common-lisp.net/projects/qitab/quux-time.git (If you're a developer, use ssh://common-lisp.net/project/qitab/git/quux-time.git). Or you can browse the git web interface at http://common-lisp.net/gitweb?p=projects/qitab/quux-time.git
RPM is a library to handle RPM packages. It depends on INFERIOR-SHELL. Its functionality is rather limited at this point: it can extract the version and package name from a RPM name, compare versions, list packages installed (all of them, or from a list), and determine which packages to install to match a target list. There is some documentation in the README file. You can git clone git://common-lisp.net/projects/qitab/rpm.git (If you're a developer, use ssh://common-lisp.net/project/qitab/git/rpm.git). Or you can browse the git web interface at http://common-lisp.net/gitweb?p=projects/qitab/rpm.git
SINGLE-THREADED-CCL is a simple library to create a version of Clozure CL or applications based on it that can start and run in single-threaded mode. This will allow you to use fork(1)-based concurrency in your Lisp programs (such as with POIU above, or a pre-forking server). The downside is that you will have to manually call finish-output on the terminal streams, as CCL's background tasks won't be there to do that for you anymore. There is some documentation in the README file. You can git clone git://common-lisp.net/projects/qitab/single-threaded-ccl.git (If you're a developer, use ssh://common-lisp.net/project/qitab/git/single-threaded-ccl.git). Or you can browse the git web interface at http://common-lisp.net/gitweb?p=projects/qitab/single-threaded-ccl.git
Ask your question on the qitab-devel mailing-list.
As we publish more code, we may provide some better way to report and track bugs.
All projects originated at ITA Software are copyrighted by ITA Software and released under an MIT-style license.
Bits that are derived from earlier work retain their original copyright and license.
While ITA uses this software and ITA engineers care about its quality and will do their best to fix any existing issues, ITA itself is not currently selling support for this software or service to develop it in directions that are not priorities for ITA.
However you will have no problem finding Lisp consulting companies to sell you support, development, maintenance and guarantees about this software; just ask on the mailing-list.
No it won't. All the code we release here will be general purpose libraries and utilities.
The code ITA writes for the Airline Industry as well as any data about ITA customers and partners remain confidential trade secrets. If you want to access ITA expertise about the Airline Industry, please contact the ITA sales department.
Ever since the low-fare search engine QPX, all ITA Lisp projects have borne names starting with a #\Q: QRES, QUUX, QUISP, QUAKE, QUICKET, QREDIT, QUEPASA, QULTIVATOR, etc. At the same time, we wanted "ITA" to appear in the name of this umbrella project; ITAQA could have been confusing (because these releases are made by our Eng department, not our QA department), and QITA didn't sound that good in French ("il quitta - he left") or serious in German ("kita - daycare facility for children"). QRITA in English sounds awfully like Creature, which describes this code pretty well: we created it, and though it's ugly we're proud that it exists at all. But QITAB sounds very good in Arabic ("Kitab - book"), and corresponds to what we want this to be: a collection of software used by the Lisp community at large; where ITA itself is deemphasized put between parentheses (ok, a #\Q and a #\B), though it remains present. And so, QITAB It Totally Assuredly Be. Enjoy!
Back to Common-lisp.net.