====== OKWS Wiki / Documentation Center ====== OKWS is a Web server, specialized for building fast and secure Web services. It provides Web developers with a small set of tools that has proved powerful enough to build complex systems with limited effort. Despite its emphasis on security, OKWS shows performance advantages relative to popular competitors: when servicing fully dynamic, non-disk-bound database workloads, OKWS's throughput and responsiveness exceed that of [[http://httpd.apache.org|Apache]], [[http://www.cs.princeton.edu/~vivek/flash/|Flash]] (the reigning king of Web server performance) and [[http://www.eecs.harvard.edu/~mdw/proj/seda/|Haboob]] (an academic system reputed to be the fastest Java Web server on the block). Commercial experience with OKWS suggests that the system can reduce hardware and system management costs, while providing security guarantees absent in current systems. As of 30 March 2010, OKWS is still being maintained and worked on. See our [[[okws:releaseplan|Release Plan]] for more details. ===== Release Update ===== **3/30/2010:** OKWS v3.0 released! See [[okws::obtaining|this page]] for details on our subversion repository. ===== A Better Architecture ===== The basic idea behind OKWS is that each Web service you write (such as ''search'' or ''newsletter-subscribe'') should run as a single process. There is no reason to sprinkle the same program across hundreds of address spaces just to get client concurrency. OKWS is built with this principle in mind. A Web service in OKWS is compiled into a free-standing process, calling upon our boilerplate libraries. Other standard helper processes run on the system, to direct traffic, to launch and relaunch applications should they crash, to log HTTP transactions to disk, and to access static HTML templates. Programming in OKWS follows the single-threaded, event-driven model. No need to worry about the synchronization snafus that creep up when using multi-threaded or multi-process Web servers. ===== Who Runs OKWS? ===== Some example sites include: * [[http://www.okcupid.com|Ok Cupid: Free Online Dating]] * [[http://www.movie-madness.org|Movie-Madness.org]] * [[http://www.addgene.com|Addgene: Plasmid Repository For Life Sciences]] ===== Platform Support ===== OKWS runs on most Unixes, and has been tested extensively on [[http://www.freebsd.org|FreeBSD]] and [[http://www.google.com/search?q=linux|Linux]]. ===== Software Tools ===== Programming Web servers with SFS's [[sfs:libasync]] might seem at first seem onerous, mainly because it is. As a result, the OKWS team has been developing several generic libasync tools to help programmers. The first is a [[http://www.python.org|Python]] interface to the SFS core and RPC libraries, and a similar integration into OKWS. For more information on how to install Python support, please see our directions for [[okws:installing]] OKWS along with Python tools. A new tool, that is entirely compatible with existing libasync-based code, is [[sfslite::tame2]], which we urge you to read more about. It's a simple C++-level rewriter that makes your event code look more like threaded coded. I.e., you can make a sequence of serial blocking functions within one function body. ===== Download ===== OKWS is freely available [[okws:obtaining|here]] under a [[http://www.gnu.org/copyleft/gpl.html|GPL]] license. ===== Read More ===== * [[okws:Requirements]] for running OKWS * OKWS's publishing language: [[okws::pub]]. * [[okws::OldInstall|Instructions]] for //manually// installing OKWS. * How to [[okws:configure]] OKWS * Presentation on [[okws:NewFeatures3|new features in v3.0]]. * [[okws:tutorial|Tutorial]] on building Web Services with OKWS. * Up-to-date [[okws:todo]] list and feature requests. * [[okws:features|Feature]] list: Why OKWS. * OKWS [[okws:publications]]. * [[okws:users|Web sites running OKWS]] * Hosting images and other [[okws:static|static content]]. * [[okws:sponsorship|Sponsorship information]]. * [[okws:interal|Internal design documents]] and other ongoing development projects. * Documentation on [[okws:ServiceIPC|IPC Among OKWS Services]] * [[okws:style|OKWS style, convention and coding tips]] * [[okws:international|International Support]] ===== People ===== * [[http://www.maxk.org|Max Krohn]] ===== Patch Contributors ===== * Ben Hollenstein * Ian Rickard (Apple Darwin Patches) * Michael Walfish (various patches and fixes for API problems). * Benjie Chen