
Moving Away From Noir - oskarth
http://blog.raynes.me/blog/2012/12/13/moving-away-from-noir/
======
dizzystar
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?

~~~
Rayne
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.

------
Rayne
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.

------
nelsonweiss
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.

------
michaelsbradley
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>

~~~
pelle
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.

------
codewright
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.

~~~
yayitswei
"Not ready yet. Do not use this."

What remains to be done?

~~~
codewright
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.

------
alexakarpov
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.

------
minikomi
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.

------
MatthewPhillips
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.

~~~
Rayne
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.

