Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
The OK Web Server
C Perl C++ Python Perl6 Shell Other

Merge pull request #83 from till-varoquaux/master

amongo: manually closed connection stay closed
latest commit 162578715a
@mmaxim mmaxim authored
Failed to load latest commit information.
build Accommodate perl in either usr/local or usr, for the benefit of new f…
client tell the okssl::con_t that the jig is up
conf clean hose
contrib I think this fixes the coredumps in https clients when the caller tim…
dist small tweak for gnu autotools
docs test checkin
examples clean hose
ezdb clang-analyzer!
htdocs clean hose
libahttp fixes for clang 3.6
libamongo amongo: manually closed connection stay closed and timeout only start…
libamt clang-analyzer!
libamt_pthread svn merge -r5765:5774 svn+ssh://svn3.okws.org/home/max/svnrepos/okws2…
libamysql Fix a memory leak in mystmt
libaok fixes for clang 3.6
libokssl tell the okssl::con_t that the jig is up
libokxml Made the conversions from str to char* explicit.
libpub Merge pull request #73 from till-varoquaux/okmongo
libredis Add a convenience function to run multiple Redis commands in a transa…
librfn fix rfn3.join argument documentation
libweb always cancel the abuf_t when it's time to stop chunking
logd Made the conversions from str to char* explicit.
m4 need empty file to get git to checkin empty dir, for mnahas
notes svn merge -r5280:5301 svn+ssh://am.lcs.mit.edu/home/am8/max/svnrepos/…
okd SSLDisableSSLv3 option added
pub test/pub handle expected failure
py jsonrpc: Use cached constants if we have them
ssld Get rid of warn
test Pub expr now has a fully reversible bson encoding
tmp a failed attempt at a pipelined client (useful for testing)
tools fix for python 2.6
xmlrpcc clang-analyzer!
.gitignore Adding a new library to OKWS that enables support for connecting to and
.gitmodules Now build okmongo in libamong using a git submodule
AUTHORS more authors!
COPYING license updates, etc.
ChangeLog Initial revision
Makefile.am add mongo interface via okmongo
NEWS.md fix teh news
README.md update
acinclude.m4 merge 2411:2412 from devel/1.1
acokws.m4 Now build okmongo in libamong using a git submodule
autoconf.sed svn merge -r5280:5301 svn+ssh://am.lcs.mit.edu/home/am8/max/svnrepos/…
cfg Switched cfg over to bash to enable using printf to handle quoting pr…
configure.in Auto-fill the major/minor/patchlevel version in owks_sfs.h
setup.gnu Added pub tracer.

README.md

OKWS -- The OK Web Server

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. 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 8 Dec 2011, OKWS is still being maintained and worked on, with 3.1 being the active development version. There are no big feature-development plans on the horizon, but we're regularly committing bugfixes and extensions.

News

1 Dec 2011

  • Move everything over to GitHub for primary project hosting!

See our News file for a fuller list of updates.

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:

Platform Support

OKWS runs on most Unixes, and has been tested extensively on FreeBSD and Linux.

Software Tools

Though OKWS is event-based at its core, 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 under a GPL v2 license.

Academic Publications

  • Building Secure High-Performance Web Services With OKWS. Maxwell Krohn, in Proceedings of the 2004 USENIX Annual Technical Conference USENIX 2004, Boston, MA, June 2004. [ ps | ps.gz | pdf ].

  • Events Can Make Sense. Max Krohn, Eddie Kohler and M. Frans Kaashoek, in Proceedings of the 2007 USENIX Annual Technical Conference USENIX 2007, Santa Clara, CA, June 2007. [ ps | ps.gz | pdf ].

Our GitHub Wiki Documentation Center

Active People

  • Mike Maxim
  • David Koh
  • Eli Gwynn
  • Sidney San Martin
  • Till Varoquaux

Patch Contributors

  • Ben Hollenstein
  • Ian Rickard (Apple Darwin Patches)
  • Michael Walfish (various patches and fixes for API problems).
  • Benjie Chen
  • OkCupid team, including Tom Quisel, Mike Maxim, Tom Jacques, and Eli Gwynn.
Something went wrong with that request. Please try again.