Pedestal is still very alpha and I'm not sure that I would use it for any of my projects... yet.
For instance, using the example apps provided I couldn't get the chat application to work properly -- if I opened up two windows to the app, only one of them would work at any given moment.
I wonder at the real use case for this style of application, the included hello world app was almost 2 megs of javascript resources (this was without minification or advanced google closure compilation) it seems excessive for a small 'your page updates when server sent changes happen', and certainly more expensive than the approach taken by projects like meteor for similar functionality.
I think some of the features it offers are a glimpse into the future, tracking the state changes from one moment to a next rather than firing off and forgetting about events, almost like version control for your clientside state. This sounds incredibly useful, but for what I'm not quite sure. What sort of apps need that sort of functionality to the point where the extra ceremony required becomes justified?
Another interesting concept is that it is theoretically possible to shift the generation of the app tree deltas to the server and turn the clientside into nothing but a dumb renderer. The thinner the renderer the easier it becomes to target alternate graphical environments.
I know the guys at relevance have hinted about the above, it'd certainly be interesting to see.
While I agree with most of what you're saying, the 2Mb JS file is entirely expected behavior if you don't use advanced compilation, which eliminates unused JS code and would hence cut down the file size to a fraction of what you see.
A tool for building "web applications" seems a little far-fetched, given the values and conceptual model pedastal is based on. On services and scalability...
> Built with scalability up front rather than an afterthought
And
> Pedestal gives developers a solid foundation to build highly scalable backend services [emphasis mine]
Pedastal seems more like a framework for building enterprise services, not simply "web applications". It's serving a type of use case, for sure. Just not one suited for all web applications.
If you're a pre-product-market-fit startup, trying to validate a concept, pedastal isn't for you. But, if you're square, or linkedin, or [insert successful startup here] and you're going to introduce a new service into your existing infrastructure, yea, it should be performant, and then maybe pedastal and the mental model that backs it makes sense.
But for an early stage startup, you're not likely to have to solve many of these problems, especially the scaling ones. And doing SOA from the get-go is orders of magnitude more complex than the standard monolithic application. You won't reap any of the benefits from SOA until you have the requirement for some form of scale -- either team scale or product performance scale. The more likely case for an early-stage startup taking the approach pedastal is "peddling" (forgive me, I had to) is that your application architecture will be significantly more complex, making it harder to work on, grow, and hire for.
The stuff pedastal is trying to do is for grown-ups, and grown up applications. And in this metaphor, early-stage startups are teenagers.
How this looks to me is that relevance has a specific perspective on how to build services. I'd guess that perspective is highly informed on the types of clients they work with. Given the mental model of pedastal, I'd also venture to guess that they don't do much work with early-stage startups. Excuse my presumptiveness on the nature of Relevance's business, but if a consulting shop tried to sell this bill of goods to my early-stage company, I'd probably sound the architecture astronaut alarm and show them the door.
Hmm, I wonder though, is this any more complex than a client plus server combo of MVC frameworks like, say, Ember and Rails? It certainly took me a while to wrap my head around how Pedestal apps are structured but once I managed to do that, the jump didn't seem much different than the one it took me to move from ad hoc PHP to MVC in Rails back in 2007.
That being said, Pedestal's sweet spot definitely doesn't seem to be simple interactivity sugar a là jQuery, but I would by no means say it's not suited for startups. Scalability just happens to be one of the benefits of the architecture they chose.
> Pedastal seems more like a framework for building enterprise services, not simply "web applications".
Can you point out where in the docs you got this impression? So far for pedastal services (the backend stuff) all I can see is a replacement for ring and middleware. Once it leaves your handler it is back to whatever you were doing in clojure already.
Or am I missing something? Serious question. I've read the docs, but they are pretty light so far. I haven't looked at the sample code yet.
Pedestal ships with absolutely zero dependence on Datomic, and we intend to keep it that way. Datomic is a fantastic tool, but even we understand that it might not always be the right tool for the job. As such, we've built Pedestal with little to no opinion on backing store.
This was discussed the last time this link was posted and it appears Pedestal is in no way integrated with Datomic. That being said, I too got the same first impression when reading the docs.
> Simple means planning for architectural needs from the ground up. Simple means decoupling your service layers into individual pieces that flow together instead of a single monolithic codebase. Simple is difficult.
For instance, using the example apps provided I couldn't get the chat application to work properly -- if I opened up two windows to the app, only one of them would work at any given moment.
I wonder at the real use case for this style of application, the included hello world app was almost 2 megs of javascript resources (this was without minification or advanced google closure compilation) it seems excessive for a small 'your page updates when server sent changes happen', and certainly more expensive than the approach taken by projects like meteor for similar functionality.
I think some of the features it offers are a glimpse into the future, tracking the state changes from one moment to a next rather than firing off and forgetting about events, almost like version control for your clientside state. This sounds incredibly useful, but for what I'm not quite sure. What sort of apps need that sort of functionality to the point where the extra ceremony required becomes justified?
Another interesting concept is that it is theoretically possible to shift the generation of the app tree deltas to the server and turn the clientside into nothing but a dumb renderer. The thinner the renderer the easier it becomes to target alternate graphical environments.
I know the guys at relevance have hinted about the above, it'd certainly be interesting to see.
Definitely a project to watch :)