about summary refs log tree commit homepage
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README96
1 files changed, 96 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..ca41e10
--- /dev/null
+++ b/README
@@ -0,0 +1,96 @@
+= upr - Upload Progress for Rack
+
+upr is Rack middleware that allows browser-side upload progress
+monitoring.  It is based on the "mongrel_upload_progress" module, but
+allows any Moneta-backing store in additon to DRb.  There is also a
+packaged example for using an ActiveRecord model for Rails.
+
+== Web Server Compatibility
+
+While upr is completely Rack::Lint-compatible, upr is only compatible
+with Rack web servers that support a streaming "rack.input".  Currently
+this is limited to {Rainbows!}[http://rainbows.rubyforge.org/] with a
+handful of concurrency models:
+
+* ThreadSpawn
+* ThreadPool
+* Revactor*
+
+For use with Revactor, the use of network-based Moneta stores or DRb is
+only advised if those stores are using Revactor-aware sockets.
+
+== JavaScript/HTML Compatibility
+
+The current developer does not react well with GUIs.  Thus all (R)HTML
+and Prototype JavaScript code was stolen from mongrel_upload_progress.
+Contributions to add compatibility to newer JavaScript frameworks such
+as JQuery and browsers are very welcome.
+
+== Backend Compatibility
+
+We depend on {Moneta}[http://github.com/wycats/moneta], which allows the
+use of a multitude of key-value stores.  We also provide a
+DRb+Moneta::Memory server to ease transitions from
+mongrel_upload_progress.
+
+Additionally, there is an example for using Rails ActiveRecord as a
+backend storage mechanism.  Cookie-based upload tracking may eventually
+be used, too (contributions very welcome).
+
+== Proxy Compatibility
+
+No proxy is required when used with Rainbows!
+
+The only incompatible HTTP proxy we know of is nginx.  nginx will buffer
+large requests to the filesystem before sending them to the backend.
+nginx has its own 3rd-party module for
+{upload progress}[http://wiki.nginx.org/NginxHttpUploadProgressModule]
+and may be used instead of upr.
+
+Most other HTTP-aware and all TCP-only proxies should be compatible.
+Disabling Nagle's algorithm in both the Rack web server and proxy is
+advised for lower latency, especially with stunnel.
+
+== Unicorn Compatibility
+
+While {Unicorn}[http://unicorn.bogomips.org/] provides the streaming
+"rack.input" for Rainbows!, using Unicorn with upr is generally NOT
+recommended.  Unicorn only supports fast clients and progress reporting
+is unnecessary unless clients are uploading files that are hundreds of
+megabyte in size or larger.
+
+== Getting Started
+
+  gem install upr
+
+For Rails, look at the Rails application
+{example}[http://git.bogomips.org/cgit/upr.git/tree/examples/rails_app-2.3.4]
+and RDoc.  More documentation is on the way.
+
+== Disclaimer
+
+There is NO WARRANTY whatsoever if anything goes wrong, but let us know
+and we'll try our best to fix it.
+
+== License
+
+upr is copyright 2009 by all contributors (see logs in git).  It is
+based on mongrel_upload_progress and carries the same license (Ruby +
+GPL2).  See the included LICENSE file for details.
+
+upr is 100% Free Software.
+
+== Contact
+
+All feedback (bug reports, user/development dicussion, patches, pull
+requests) go to the mailing list/newsgroup.  Patches must be sent inline
+(git format-patch -M + git send-email).  No top posting.
+
+* email: mailto:upr@librelist.com (follow instructions)
+* git: git://git.bogomips.org/upr.git
+* cgit: http://git.bogomips.org/cgit/upr.git
+
+We will adhere to mostly the same conventions for patch submissions as
+git itself.  See the Documentation/SubmittingPatches document
+distributed with git on on patch submission guidelines to follow.  Just
+don't email the git mailing list with upr patches :)