Looking for a web end-to-end framework

…but web frameworks are today ten a penny, why would I be still looking for something? Could it be I didn’t look around enough? Am I too finicky? Or blind for not seeing it right in front of me? Whatever, fact is I’m still looking for the „perfect“ web framework. It doesn’t have to be REALLY new – but it certainly would be new to me.

I would like it to be, in no particular order:

An end-to-end framework

I earn my daily bread developing web applications – the kind I cannot imagine living completely in a browser. Heck, so many web applications cannot ever skip a server, now that I’m thinking… even noBackend DOES have a backend despite its name, mind you! Why shouldn’t I have an „offer“ covering the whole stack, from fingers to the magnetic bits? There’s aplenty web frameworks, from lightweight (which do by definition almost nothing – that’s called “elegance” nowadays) to full-stack (unless your full stack needs a backend). That’s not bad per se, but forces everybody to reinvent the wheel again and again and again and again. The standard API proposed by noBackend is all fine and dandy, but it’s just that, an API, and I don’t want to go shopping and PoC-ing around for a new backend each time some NFR hints to a different persistency… which leads me to:

Supporting different databases

It’s MY dream framework, right? So I want it supporting out of the box persistency in SQL AND whatever NoSQL flavor would seem appropriate. All at the same time, because I want it to scale with ease (that’s called data integration) but without killing me when shuffling data around them. Keywords: polyglot persistence, distributed data management… with ORM and (if real need ever comes) ORM-like NoSQL-abstractions – like with Spring Data. Handling clustering and petabytes of data come for free as well („for free“ is a way of speaking, see this PDF of Martin Fowler and Pramod Sadalage). This looks like a bigger picture, so I want my framework…

Handling scalability

I sure won’t be developing a new Twitter any time soon, but it certainly brings a fair amount of safety of the mind if you know beforehand your framework will be able to deal with a few thousand users more. This could mean client-based sessions or drop-in Hadoop, but also stuff traditionally not considered by application developers like Varnish for speedups (sitting right in the middle of the framework, crazy)… all these available at my fingertips. Cloud deployment-compatible? I’ll have one of that too. It shouldn’t be a killer for smaller applications, while at the same time getting your team accustomed to very important (and more modern) concepts. Application architecture evolved quite a lot beyond doing everything in one place and one piece of code, so let’s have a framework showcasing that. Letting the client do stuff, it means I need…

Security out of the box

I’m not talking only about OAuth 1.0a, although that’s have to be included as well. But, why should I always remember to add data sanitization by hand in my application? A framework is supposed to impose best practices upon your projects, right? Security certainly IS good practice, at least that’s what dear OWASP says. Then why doesn’t it come in all projects, by default? Hm? Both server and client side? Are there applications which actually REQUIRE insecure user inputs? Oh, and mentioning user input reminds me of…

Client side processing

The browser is quite a powerful beast nowadays, living proof being the gazillion of JavaScript frameworks doing everything in the browser. That’s application scalability for free! But I don’t want it live completely in the browser either… You can’t live without a server side – not only for security and persistence but also for proprietary code, thus I certainly disfavor the either-or approach most framework projects favor. Honorable mention here: GWT (or better, Vaadin) does try to cover both ends, but its client side principle is even worse than pure JavaScript when it comes to debugging. In other words, all these client-side frameworks share an annoying common feature…

JavaScript? Ummm, no thanks.

JavaScript is everywhere, I noticed it too. Yes I did. This however doesn’t make it „good“, read Wikipedia under „argumentum ad populum“  to get my point. Ever wondering why all those  people create transpilers (asm.js, CoffeeScript and and and)? Of course, you might argue that your projectlet doesn’t actually need debugging (orly?) or source maps cut it for you, or you use fancy extensions to make it OO-like, or that type-safety is overrated and you’re such a GREAT developer mind you’ll never ever need refactoring support… don‘t we loooove putting lipstick on the pig!

I know Flash is slowly dying out and I don’t want to hear about transpilers (no Flex), so unfortunately until Dart or whatever else gets some traction I’ll have to put up with JS, at least on the client side. I’m saying this also because I see no real reason to consider server-side JavaScript. Do I find Node.js reactor principle great? Then I can base my application on vert.x. There’s the whole Sinatra legacy… And is there nobody at all using good’ole fast and small C(plusplus)? …just thinkin‘. Two sides, not necessarily same language, but one maintainable offering. These two sides will be talking to each other all the time, which brings me to…

Whatever communication

The client-server chatter doesn’t HAVE to be REST, really. Maybe I want to expose some actions, you know… However with a nice REST generated directly out of my business objects I’d have something which a different client could talk to with ease. Yes, a mobile client for instance (sorry for my bad habit, I didn’t start mobile-first). And for transport… I’m dreaming about a framework which would hide the transport from me like Atmosphere does, maybe building upon Apache Isis or Restful Objects, while implementing the already mentioned traffic optimizations (did I mention caching?) and of course security around the exposed model…

Model? View. Something.

Yes, I’m talking already about a framework useful for enterprise applications, where „enterprise“ means „big“. I totally want to have some well-founded architecture separation. MVC lived its glory days already, I dare to say. Usage patterns and platforms changed a lot in the meantime, so there came MVVM and MVP trying to modernize it a bit. Then came MOVE, even… Which one I’d summon? I didn’t wrap up my head yet (and can’t tell whether it would be a good head anyway) but the design should exist and it should make sense. I also wonder, what’s the point of having a web application framework only to put it completely in the browser? *coughnockout* A „browser application framework“ just doesn’t cut it, ignoring the hurdles of communication with your data persistence… Friendly recommendations like „set yer dirty flag and transfer only parts of yada yada“ forget the main point of having a framework in the first place: it should optimize access behind my back on connection level with some client side caching and local storage, best-effort delivery and whatnot. In other words: make the framework working for you, not the other way around!

Enterprise friendly

I brought this up for a couple of times as it’s a very important argument for me. Language and all already mentioned arguments aside, I also expect full IDE integration (no silly Maven workarounds) and… I want to be able to do modeling within it! I like OO (can be Java, Scala, C++…), it’s tried and tested and a useful tool for handling abstractions – because I’ll use some UML in the projects. If the framework has a better idea about doing modeling, fine, but it should better be good and ideally also known around. And because the team will be big and have specialized UI designers, the template engine should be HTML and not fancy languages (Scala templates like in Play??? Are we JSP all over again?) These are quite a few requirements, so I’d really want to be able to see what it can – preferably before spending weeks into it:

Real life examples

I have seen enough from „Hello world“ example projects which show actually nothing from what the framework actually can, or what differentiates it from everybody else. How to grab the libs and directories is something I can read from the README.MD thank you very mucho. Which implies there’s a also documentation matching in depth the importance of such a framework… bullet points, videos, whatever, documentation to underline the “paradigm shift”. Documentation with examples which WORK straight out of the box, thank you.

I realize this should become a big integration project, which without interest from some big player will never get the dedicated resources to come true. The ends COULD meet, living proof is the open source project Helios  – although that one has a different purpose. Fine. This being said, I’ll go back waiting for THE framework.

Advertisements

12 thoughts on “Looking for a web end-to-end framework

  1. Pingback: Looking for a web end-to-end framework | Boardmad

  2. I’d use Rails, but then again I’m a Rails guy, so that’s my go to framework for any web project. Despite my obvious preference though, I’ve used Django and J2EE and other frameworks in the past, but found Rails to provide the best balance between ease of development and scalability.

    Reply
  3. Your point is very interesting. Although I do not have extensive experience in using different frameworks, I think Spring is the framework which is closest to your demand. However, it lacks the client-side part, so you still need JS. Sorry, I’m not a big fan of Javascript. Anyway, if you find the perfect framework please let me know!

    Reply
    • I actually always had Spring on the tip pf the tongue, when speaking about the backend. However I could not notice there anything about traffic optimization or deliberately offloading work to the frontend. Spring is still stuck in the web server model. It’s doing it great no doubt about it, but I think the mobile world needs a paradigm shift.

      Reply
    • Hmmm, yes it is… a web app backend in C++ (if done properly) is indeed a welcome addition. But the frontend will transpile to JavaScript (via LLVM), so it cannot be a breakthrough. Well, need to dig it to see what does it say about the communication over the wire. GWT is also an end-to-end framework but doesn’t optimize much here…

      Reply
  4. Nice to see that Apache Isis / Restful Objects made it onto your list of candidate frameworks. If you want to progress those further, please join our mailing list.

    Reply
  5. Pingback: Switching web programming paradigms with vert.x | Trying things

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s