Notice: The website is currently being udpated. Sorry for any inconvenience.
Introduction
Halcyon is a JSON Web App Framework built on Rack for speed and light weight.
Halcyon has several aims and goals, including:
- Be fast — easy with Rack and Mongrel or Thin
- Be small — also not a problem with Rack and Mongrel
- Be cross-platform — communications are flexible with JSON transport layer
- Be flexible — since it uses HTTP, it’s very simple to be flexible
- Be easy to implement — also easy since we’re developing in Ruby here
Simply put, Halcyon is a web application framework with a twist. The twist is simply that Halcyon applications communicate solely through JSON, both incoming and outgoing.
What Is Halcyon For?
This is the question most often asked about Halcyon, what is Halcyon for? If Rails (and Merb et al) is for quickly developing web applications, Halcyon aims to provide a framework for developing service-oriented applications (SOAs) such as APIs or other non-interfaced services.
The Twitter API is a great example of a SOA where tweets can be submitted without needing any web interface. The power of this type of application is that other client-side applications can be developed to provide an interface to the web service.
Halcyon aims to make writing these types of application interfaces and other similar services trivial.
Functionality & Performance
With Mongrel leading the pack and Rack holding things up, JSON doing the fast talking and with plenty of room to spare, how could you not be interested, even about this new framework? Still not convinced? OK, fair enough, here’s some code for you.
1 class Message < Sequel::Model; end 2 class Messages < Application 3 def new 4 # respond with fields acceptable 5 ok Message.columns 6 end 7 def create 8 msg = Message.create(params) 9 msg.save 10 ok msg.id 11 end 12 def read 13 ok Message[params[:id]] 14 end 15 def update 16 Message.filter(:id => params[:id]).update(params) 17 ok 18 end 19 def delete 20 Message.filter(:id => params[:id]).delete 21 ok 22 end 23 end
You can then run it with:
$ halcyon start -p 4647
That’s all it takes to open up the door to let you communicate with your applications that implement or use the simple client.
Read the Docs.
Supported Platforms
Halcyon is primarily written in Ruby, but Halcyon also supports multiple platforms due to the fact that it communicates via HTTP and packages its messages in JSON. Halcyon currently has Ruby, PHP, and Java clients available, with more clients planned.
You can see the various client implementations at the GitHub project (except for the Ruby client, which is part of the Halcyon gem).
Top 3 Requested Features
Here are some popular user-submitted requests for functionality for Halcyon. Feel free to contribute your own!
Metrics
Ohloh’s pretty cool and we use it to track the development metrics of Halcyon. Check out some of the more interesting details on our project page. You can find the link at the top of the page.
For your viewing pleasure, here are some of the Ohloh project factoids:
I'm speaking at
RubyFringe
about Halcyon in mid-July along with several other notable Ruby developers. RubyFringe is unlike most other Ruby conferences... check it out!
About
Halcyon is a JSON Web App Framework built on Rack for speed and light weight.
It is ideal for creating light-weight service application layers, such as APIs for existing apps, etc.
Recent Entries
Installation
Installation is easy, all you need is RubyGems and you're set. Just run the following:
$ sudo gem install halcyon
If you're interested in the most recent version, check out our GitHub page (link above). You can install the latest development version with these steps:
$ git clone git://github.com/mtodd/halcyon.git
$ cd halcyon && rake install
This will get the latest version of Halcyon and run the install task.
Note:
Due to limitations, only json_pure is a dependency since it is supported on all platforms. However, for faster performance, make sure you run this command which will install the faster C extension of JSON:
$ sudo gem install json
Community
Welcome to the infantile community, I really hope you do choose to stay with us for a while and help us get our feet on the ground.
There are several ways to participate: on IRC, you can find us at #halcyon on irc.freenode.net. Join us on our mailing list hosted by GOogle Groups. Regardless, you can always get a hold of Matt Todd via his email address.