Hacker News new | past | comments | ask | show | jobs | submit login
Moving Away From Noir (raynes.me)
91 points by oskarth on Dec 13, 2012 | hide | past | favorite | 13 comments



This is a bittersweet day for me. I have two sites running on Clojure + Noir. I just moved my development to Linux so I can get Leiningen 2 and ClojureScript running with zero fuss.

All the signs were there: The mumbling abound about Noir being "dead;" Grainger doing Light Table; no word about updates.

I agree that Clojure is not a good language for using frameworks, and the community, I think, has done an excellent job of standing behind this philosophy, as I am sure Hickey likes it. Noir, at least for me, was the perfect balance of getting something put together for a new person, as it didn't enforce anything seemingly unnatural or make any demands on what to use or how to use it. In simple terms, it gave me a lot of freedom to explore without hanging a noose around my head.

I never built a website before the two I wrote in Noir, but Noir, or rather, Lisp, let me see the possibilities of all the power that was available without ever having to search. I had an amazing experience, and probably one of the hurdles I'll always look back at and thing that was a step that made me a better programmer. I showed off this really cool thing I figured out and showed it off to people, and they said: "Yeah, programmic routing is really cool." I was like "routing?" Then I spent the rest of the night on the web reading about it.

I love Hiccup. Generating hundreds of lines of HTML from vapor is an amazing feeling. I love bcrypt. I don't know how to hash my data, but at least I know that Noir picked the best damn option. Every time I opened my code, I always felt that Clojure and Noir had the answer and it never let me down.

But here, the maintainers are saying that even Noir was too much framework for Clojure, and that Noir complected, and that to really get the full power of Clojure, it's time to let go. It's a scary thought, to leave Noir behind and venture off into my own without the feeding bottle with the idea that Noir was good enough, but oh how much have I learned, and how much more can I learn?

Thank you Chris and Raynes! I'm a better programmer because of you guys, and I am going to better yet thanks to both of you.

Does this mean Korma is heading off into oblivion as well?


Chris indicates that Korma isn't going anywhere. I think there is probably still motivation to maintain it. At least, even if he doesn't I'd be willing to bet that someone will.


If you looked at the post before 6:10PM CST, please look once more for a quote from Chris Granger and a link to the commits where I moved refheap to Compojure for reference when doing the same thing on your own.


I could never get started with Noir. I know that a lot of people use it, but it was never a good fit for me and I ended up using Compojure + libraries.

That said, I have been using bits and pieces of code from Noir - like the jcrypt bits - for a good while longer than lib-noir has existed, and Noir provided a wonderful resource for learning how certain types of things could be done so I'm sad to see it go.

Finally, I think the Clojure ecosystem really does need something else web framework-wise. I know a lot of people talk about how Clojure is a language of libraries and micro-libraries, and not a language of frameworks, but I think frameworks would go a long way towards speeding up (and making more pleasant) repetitive projects like web design. Re-gluing libraries together for every project gets tiring, and I think frameworks would help with this.

There was a talk I watched a while back about selling Clojure to enterprise (Neal Ford, maybe?) and one of the points was that appealing to the people who are consumed with getting stuff done (ie Delphi and Rails types) is a good way to spread a language because those people tend to leave a trail of projects behind them.

I don't think that Clojure has any frameworks that would appeal to these types of people (others might disagree). I'm not saying that Clojure's libraries are bad (many are quite good), just that they're not designed to get a project up and running as soon as possible. "Up and running fast" is a good option to have.


I won't bother to repeat here the entire comment I left on the blog post, but I would be interested to know if others in the HN crowd have been working with the liberator[1] library (i.e. as a way to augment ring/compojure) and to hear about their experiences with it.

I've found liberator quite helpful, and have been hoping to see it get a bit more exposure and wider involvement from the Clojure community.

[1] https://github.com/clojure-liberator/liberator


I use it extensively. I really like it. It looks a bit verbose at first, but it's easy to create your own wrapper functions to customize it.


For people like me who find enlive/hiccup/stencil (template libraries) inappropriate for web development that involves more than one person I would beseech them to take notice of:

https://github.com/sjl/dram

That's all I have to say about Clojure web dev for now. It's good to know that people are shifting to a more modular approach now.


"Not ready yet. Do not use this."

What remains to be done?


A good contrast here would be stencil.

Things like caching, extensive testing and benchmarking in a production environment, and differentiating dev vs. production behaviors are the most apparent right now. There could be others, I haven't spoken with Steve in IRC about it.


Thanks, this was actually very useful to know! I just started with Clojure, got excited and moved on to the web development with noir, literally last week. So I suppose it's a good thing it happened now, before I spend a lot of time on it... I guess I need to move on to Compojure and Ring, by the looks of it.


Raynes, I see this as a good move - the modular library style fits Clojure well. I hope it can be a drive to get some solid documentation behind tying the various pieces together.

I recently had a delve into Compojure / Ring and found the documentation for getting started wonderful.. but the "next step" guidance a little thin. There are a lot of blog posts out there from 2010 but not a lot of recent examples.

I realize the google groups is quite active, but it's quite time consuming (and daunting) to try and find the "right way" in a scattered collection of gists and example projects. There are a lot of repeated questions - eg. How do I get sessions working? - which could use a central resource which moves with the code base.


I have a legacy app that I wrote using Noir. It was awesome at first, but after a while it felt like it was constraining me. Clojure isn't really a language for frameworks. Ring + Compojure (+ perhaps lib-noir, haven't tried it) is all you really need.


Noir wasn't really much of a framework either. It was mostly a collection of libraries and a bit of code that added the middleware for them for you. The constraining part was the mutable nature of defpage and how hard it made it to actually get at and do anything interesting with your routes.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: