HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mmcgrana
ring
Clojure2010–2012
mmcgrana / ring

ring

Clojure web application library: abstracts HTTP to allow modular and concise webapps

8Distinct people
10Mentions
0Explicit recommenders
846GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Clojure web application library: abstracts HTTP to allow modular and concise webapps

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by month10 dated mentions

Observed mentions: 2010-05-11 22:31:22 UTC to 2012-05-24 08:28:17 UTC.

01232010-05-01 00:00:00 UTC to 2010-06-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMay 20102010-06-01 00:00:00 UTC to 2010-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-07-01 00:00:00 UTC to 2010-08-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-08-01 00:00:00 UTC to 2010-09-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-09-01 00:00:00 UTC to 2010-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-10-01 00:00:00 UTC to 2010-11-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-11-01 00:00:00 UTC to 2010-12-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-12-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-01-01 00:00:00 UTC to 2011-02-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-02-01 00:00:00 UTC to 2011-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-03-01 00:00:00 UTC to 2011-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-04-01 00:00:00 UTC to 2011-05-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2011-05-01 00:00:00 UTC to 2011-06-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMay 20112011-06-01 00:00:00 UTC to 2011-07-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2011-07-01 00:00:00 UTC to 2011-08-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2011-08-01 00:00:00 UTC to 2011-09-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-09-01 00:00:00 UTC to 2011-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-10-01 00:00:00 UTC to 2011-11-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2011-11-01 00:00:00 UTC to 2011-12-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-12-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-01-01 00:00:00 UTC to 2012-02-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-02-01 00:00:00 UTC to 2012-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-03-01 00:00:00 UTC to 2012-04-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2012-04-01 00:00:00 UTC to 2012-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-05-01 00:00:00 UTC to 2012-06-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMay 2012

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
May 20102010-05-01 00:00:00 UTC2010-06-01 00:00:00 UTC101
Jun 20102010-06-01 00:00:00 UTC2010-07-01 00:00:00 UTC000
Jul 20102010-07-01 00:00:00 UTC2010-08-01 00:00:00 UTC000
Aug 20102010-08-01 00:00:00 UTC2010-09-01 00:00:00 UTC000
Sep 20102010-09-01 00:00:00 UTC2010-10-01 00:00:00 UTC000
Oct 20102010-10-01 00:00:00 UTC2010-11-01 00:00:00 UTC000
Nov 20102010-11-01 00:00:00 UTC2010-12-01 00:00:00 UTC000
Dec 20102010-12-01 00:00:00 UTC2011-01-01 00:00:00 UTC000
Jan 20112011-01-01 00:00:00 UTC2011-02-01 00:00:00 UTC000
Feb 20112011-02-01 00:00:00 UTC2011-03-01 00:00:00 UTC000
Mar 20112011-03-01 00:00:00 UTC2011-04-01 00:00:00 UTC000
Apr 20112011-04-01 00:00:00 UTC2011-05-01 00:00:00 UTC101
May 20112011-05-01 00:00:00 UTC2011-06-01 00:00:00 UTC101
Jun 20112011-06-01 00:00:00 UTC2011-07-01 00:00:00 UTC101
Jul 20112011-07-01 00:00:00 UTC2011-08-01 00:00:00 UTC303
Aug 20112011-08-01 00:00:00 UTC2011-09-01 00:00:00 UTC000
Sep 20112011-09-01 00:00:00 UTC2011-10-01 00:00:00 UTC000
Oct 20112011-10-01 00:00:00 UTC2011-11-01 00:00:00 UTC101
Nov 20112011-11-01 00:00:00 UTC2011-12-01 00:00:00 UTC000
Dec 20112011-12-01 00:00:00 UTC2012-01-01 00:00:00 UTC000
Jan 20122012-01-01 00:00:00 UTC2012-02-01 00:00:00 UTC000
Feb 20122012-02-01 00:00:00 UTC2012-03-01 00:00:00 UTC000
Mar 20122012-03-01 00:00:00 UTC2012-04-01 00:00:00 UTC101
Apr 20122012-04-01 00:00:00 UTC2012-05-01 00:00:00 UTC000
May 20122012-05-01 00:00:00 UTC2012-06-01 00:00:00 UTC101

What Hacker News says

10 sources
Some of my favourites - * Enlive, a HTML scraping & templating library implemented on top of DOM parsing & state machines https://github.com/cgrand/enlive * Core Logic, a Prolog-like logic programming library https://github.com/clojure/core.logic * The ClojureScript compiler, a Clojure compiler that targets JavaScript https://github.com/clojure/clojurescript/blob/master/src/clj... * Ring, a Rack/WSGI like web-app library https://github.com/mmcgrana/ring * Midje a very powerful test framework https://github.com/marick/Midje * Carmine, a Redis client lib in Pure Clojure https://github.com/ptaoussanis/carmine/ [EDIT] Added Midje, Ring.
In Ask HN: Clojure code worth reading?
I also switched from Python to Clojure. After picking up the syntax (there is almost none) I spent a few weeks reading the source of Ring by Mark McGranaghan [1] and constantly referring to ClojureDocs [2]. (My goal was to port Ring to Python [3], but after I did I realized I now knew Clojure and could just use Ring.) [1] Ring: https://github.com/mmcgrana/ring [2] ClojureDocs: http://clojuredocs.org [3] Pump: http://adeel.github.com/pump
In Poll: What's Your Favorite Programming Language?
There is no one framework (in fact, most of clj's web ecosystem is not frameworks) that is far and away more popular than the others. At the heart of everything is Ring[1]. Ring is roughly equivalent to WSGI or Rack. However, if you use Django in python you basicly dont ever have to know about WSGI. In Clojure you do want to know about Ring. Thankfully Ring is very simple; its a spec describing request maps and response maps. In addition provides common adapters for various JVM web servers (In the general ring ecosystem there is support for Jetty, Netty (via Aleph/Lamina), Google App Engine (via appengine magic), Servlets, Mongrel2) and middlewares. There are three sets of libraries on top of ring that are commonly used to build sites: ## Moustache Probably the closest to raw ring of the three, moustache provides a sophisticated url routi
Read the rest
ng API. Of the three I'm mentioning here it is probably the least suitable for clojure beginners, however it is my personal favorite. ## Compojure This was the most popular [noir is apparently on par] and oldest (it predates ring but was rewritten ontop of it in the 0.4.0 release). The best analogy here is apparently sinatra for ruby. ## Noir Noir is the most recent addition and is higher level than Moustache or Compojure. In fact, Noir is built on Compojure. I havent had any real experience with Noir myself but it is probably the easiest entry point into web programming in clj. Compojure and Noir both use Hiccup for HTML generation, and Moustache uses Enlive. Enlive is extremely powerful; even if you choose hiccup I would encourage you to take a good look at enlive anyway, the two solutions dont need to be mutually exclusive. [1] Ring: http://github.com/mmcgrana/ring/
In Clojure's Webframework "Noir" hits 1.2.0
Regarding Clojure, while compojure is popular, a compojure centric view of web programming is misguided. Compojure is part of a growing ecosystem of libraries built on top of ring[1][2]. Firstly this ecosystem is not analogous to rails or django. The closest is that Compojure is similar to Sinatra i believe. If you are looking at getting started with web programming in Clojure you need to get familiar with ring (the http abstraction) and look at Compojure and Moustache (routing and handler composition), and Enlive[4] and Hiccup[5] (templating/html generation). Compojure and Moustache are fairly similar, but Enlive and Hiccup are extremely different. A web application will consist of ring plus one of each layer. As has been mentioned by others in this thread, the depth, breadth and currentness of documentation for these libraries varies. D
Read the rest
avid Nolen has a great tutorial for enlive[6] that i would encourage anyone looking at these libs to work through. Enlive is one of the most compelling aspects of the clojure web ecosystem at present. These libraries provide the core pieces you would expect to see in any web framework, but a lot of the smaller details are missing. Of note there is no ORM for clojure (for obvious reasons) - If you are looking for a good SQL abstraction you should look at ClojureQL[7] - and aspects such as form generation, validation and processing is still in early days. My day job has me building web apps with Django. I wouldnt suggest that my coworkers and I jump to clojure / ring et al yet. The breadth of libraries and out of the box stuff in django is still a huge advantage for the day to day rapid web site / web app development, however clojure's story is improving rapidly and i think that the functional model is a particularly good fit for web applications. I cannot compare clojure's story with the other languages and frameworks mentioned. [1] https://github.com/mmcgrana/ring/ [2] This is true of compojure 0.4 and newer. compojure existed prior to ring (with hiccup as part of it). [3] https://github.com/cgrand/moustache [4] https://github.com/cgrand/enlive [5] https://github.com/weavejester/hiccup [6] There is a link in the enlive readme [7] https://github.com/LauJensen/clojureql/
In Ask HN: Snap v Nitrogen v Lift v Compojure

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.