"There's nothing magic about these function names. There are no required names here. One of our design principles in Pedestal is that all the connections between parts of your application should be evident. You should be able to trace functions from call to definition without any “magic” or “action at a distance” metaprogramming."
Excellent. This is something that has irritated me greatly about a framework I've been working with, and it seems to be unduly popular.
I'm sure its an excellent framework, but there way too much for me to consider using it right now. My concerns:
How difficult would it be to switch out Datomic for PostgreSQL?
What if I don't want ClojureScript at this moment?
What happens if I want to switch X with Z or drop ABC?
How hard will it be to minimize and erase all the things I don't want?
Why are there so many extra words needed for the routing templates?
I've always felt Clojure would get a boost from a Rails-like framework, but I'm concerned that a large, opinionated framework will break the very promise of Clojure: flexibility and easy DSL creation. Once we are faced with something that needs to be reverse-engineered or broken, then this promise is ruined.
I'm all for new frameworks and ideas, but its a little funny to think that Noir was dropped, in part, for being too large and complicated.
Despite my "not-for-me" criticisms, I do hope that you have some nice success in this framework and it attracts people to Clojure.
There are no problems with Leiningen solved. It's based on it like other Clojure libs with project templates etc.
With Compojure it's another story, it only gives you a handler function. Pedestal makes a routing table available, enabling reverse routing. The route definition is data based. It's less repetitive to define routes.
> I'm sure its an excellent framework, but there way too much for me to consider using it right now. My concerns: How difficult would it be to switch out Datomic for PostgreSQL?
Not difficult at all? Have you looked at the datomic tutorial? It does nothing besides setting up a connection and querying the database. What dbs do not support that?
>What if I don't want ClojureScript at this moment? What happens if I want to switch X with Z or drop ABC? How hard will it be to minimize and erase all the things I don't want?
Well, you go through and pick the libraries you want to use?
> Why are there so many extra words needed for the routing templates?
It's a comprehensive description of all aspects of the flexible routing dsv, including the programatic inteface to define routes at runtime.
> I've always felt Clojure would get a boost from a Rails-like framework, but I'm concerned that a large, opinionated framework will break the very promise of Clojure: flexibility and easy DSL creation. Once we are faced with something that needs to be reverse-engineered or broken, then this promise is ruined.
It's not rails. We've all seen where that got.
> I'm all for new frameworks and ideas, but its a little funny to think that Noir was dropped, in part, for being too large and complicated.
It's a set of libraries, not a framework.
Also, it doesn't add state for everything everywhere. Instead it takes the current concept of Clojure web apps and takes it to the next level.
In Compojure you define lots of routes, mostly calling separate handling functions, only passing out the routes parameters. That what pedestals routing does by default. That's just one example of many.
- Pedestal doesn't deal with the DB. I just grepped for datomic on the codebase and found nothing. Relevance is one half of Datomic so it's not surprising they've used it in their example docs.
- The idea is to use clojure across the entire stack. As a clojure developer, this is fantastic. It also uses EDN as it's wire format.
- I'm not sure how far the composability goes but I get the impression that it's one of their design goals.
- The routing syntax looks pretty simple to me.
I don't get the opinion that this is Rails for Clojure. It's dealing mainly with asynchronous real-time client server communication with some great client additions. It doesn't enforce any kind of DB integration such as DB migrations which have always been one of Rail's killer features to me.
Seen that Datomic can be backed by many different types of storage, including SQL DBs, this sounds like a very weird question... I mean: if you want SQL, just use SQL as the backing store for Datomic.
The benefits of Datomic are too huge to go to the old crappy way of designing DBs...
(However, I do think this question is a bit of a red herring: I don't see any obstacles to pulling in a different database in Pedestal.)
Apologies if this is all covered in the full docs
Pedestal provides a few distinguishing values in this space overall:
- Same language on the client and on the server. You can get this with something running on the native OS in both locations, or with javascript and node, or with clojurescript and clojure. ClojureScript and Clojure can sit on top of the browser platform like javascript. We're opinionated and would rather solve problems with Clojure than with Javascript.
- A server-initiated communication mechanism that can send data to those clients without parking a thread or process in order to maintain all the information for managing the communication. Our Server Sent Events mechanism lets clients initiate HTTP connections to the server and hold the connection open. On the server side, we can park those connections without eating a thread to do it, and pick up the connections to send new data down to clients as appropriate.
- A pretty powerful set of libraries for developing client applications in ClojureScript. The libraries let you isolate the scope of change to HTML document trees so that changes to underlying data reflect small changes up to the presentation layer. This foundation has created lots of interesting abilities, like being able to record a set of interactions and replay them with a new presentation layer, or being able to replay specific sets of data being sent from the server to clients.
There's a lot more that we've built up, based on our experiences trying to solve problems for people in Clojure, but I think these are three things we do that deserve giving us some of your time for evaluation.
> In this episode, I talk with my close friend Tim about what Pedestal is, why we wrote it, and what makes it so interesting.
That said, one of my biggest pain points with Clojure is poorly documented libraries. This NEEDS a high-level description of what is provided and where, and the example app needs a lot more documentation so I can figure out what it's doing.
EDIT: Whoops, I found the link to the full documentation:
http://pedestal.io/documentation/
Much better. I still wish the sample chat app had more documentation, but if I have time I'll try to contribute that myself.
- Ryan @ Relevance
My play Clojure / Clojurescript stack is a weird combination of libraries like Noir (+ Chris Granger's Clojurescript libraries) / Lobos / Korma / Hiccup / stuff I ripped from Clojurescript One.
The example explains how to use Datomic with Pedestal, and I notice you're using Domina for DOM manipulation. Is that basically the minimal stack for a database driven app? It'd be nice to see an explanation of what the rest of a Pedestal app might look like, what libraries Pedestal might replace (especially something that integrates with Postgres / MySql).
Congrats on the release and a sincere thank you to you guys at Relevance for all of your Clojure work.
Definitely doesn't seem targeted at newer Clojure users. Also, the use of Datomic as a default data store rubs me the wrong way, mainly because I've never even seen it outside of a few HN articles :p
Also, this is very alpha stuff, so many of the details are yet to be worked out.
Pedestal is a culmination of those efforts into a new set of libraries. Some of the code from other projects inspired what there is today, but an even greater portion was created from scratch to make it more generally applicable. We haven't had the chance to use this incantation of the ideas in production yet, but we wholly intend to. We hope this experience, and that of the community, can help us bring this to beta or fully production ready.
It's a PDF file with a mangled filename, rename with .pdf on the end.
via https://twitter.com/pedestal_team/status/314520340711759873
Why is the creation of a WAR file more complex than it is currently with lein-ring?
.fixed { position: relative; }
body { padding-top: 0; }
in Stylebot. I'm seeking some CSS which disables position: fixed banners globally.What if 100 pending requests and a few stalled connections (third-world wifi/GSM?)
It is not illegal to be a purist.)