Hacker News new | past | comments | ask | show | jobs | submit login
Manos de Mono: The Manifesto (.NET Web Framework) (jacksonh.tumblr.com)
76 points by eduardoflores on Sept 22, 2010 | hide | past | favorite | 22 comments



One unanswered question:

What specifically does this project bring that isn't present in ASP.NET MVC, OpenRasta, FubuMVC or MonoRail?

Or that couldn't have been achieved by porting one of those to Mono (if they aren't there already)?


Just from reading through it quickly it includes the following things I believe are absent in all of the above (although I have only worked with ASP.NET MVC and MonoRail).

1) It has a built in web-server. This is hugely awesome, especially since it is based on Tornado. No mucking with Apache or Nginx, CGI, etc.

2) It includes command line app generation and compilation - missing from at least ASP.NET MVC.

3) Simple Routing - did you look at the route and lamba? That is awesome.

Some of what is here is similar to what exists, but this looks much improved. Pipes looks to be an improvement over the current HttpModules of ASP.NET. The view engine looks like an improvement over .aspx. The HTML5 template looks like an improvement over the crappy templates that MVC creates.


What happens if Tornado doesn't meet your needs? How easy is it to move this framework onto something else?


To be clear it isn't Tornado, it's a custom server inspired by Tornado. It sounds like the framework is fairly tied to the implementation of the server (most likely where routing, pipes, etc are all hooked up)


I posed the same question to the author on his blog. As far as I know at least ASP.NET MVC will run on Mono, and I would bet the other frameworks would as well.

I'm all for any new tool that would make my life easier, but it would be great to hear what this framework is going to offer that isn't already offered in the other existing frameworks.


> As far as I know at least ASP.NET MVC will run on Mono

ASP.NET (MVC or classic) is not efficient on Mono, the pipeline is too heavy, and Mono (at least until 2.8 / 3.0 is released) leaks memory if you're not careful with the object allocation patterns you're using, since the GC is conservative ... and of course ASP.NET leaks memory.

Mod_mono even includes a setting for automatic restarting of the Mono server, which kind of sucks. See http://www.mono-project.com/Mod_mono

Async I/O is built around async sockets in the Windows kernel, and as such the API couldn't be implemented efficiently on top of poll/epoll. See this thread which is fairly recent:

     http://lists.ximian.com/archives/public/mono-devel-list/2010-January/033814.html
ASP.NET (both MVC and classic) is designed for usage in an IDE ... and you shouldn't ignore this point. For references, compare the experience of using JSF / Struts2 to the PlayFramework.

It's practically the reason Java/.NET programmers say they can't live without IntelliSense, and Python/Ruby programmers are saying they can live just fine ... the difference it's in the design of those sucky APIs you have to use with Java/.NET

I also haven't heard of any web apps that are running on Mono, and if there are apps out there, pretty much nobody heard of them ... so this whole argument is a myth.


We've been building our web-based product on Mono and MVC2 for two months and are set to launch in under two weeks.

Initial benchmarks showed that the performance isn't that great compared to the same application running on Windows, but compared to similar applications on rails and django show that performance is comparable, even better than the dynamic frameworks (which is somewhat obvious since it's compiled).

Haven't profiled for memory leaks though.


I don't know of any .NET/Java programmers who say they can't live without IntelliSense. I certainly know I can, and do, frequently. Why, just this morning, I wrote some Java in Emacs. No IntelliSense there.

As far as async I/O, that is a problem. It might get better with the new GC, but proper async I/O would need to use one of the async I/O implementations available (libev/libevent, libaio, etc.).


I'm primarily a .NET developer on Linux. While I'm comfortable with other languages, and am quite proficient at using vim & and a little emacs - it simply makes no sense to not use an IDE for Java or C#.

These are tools built around the language and the workflow, and thus have been extremely tailored to ensure that productivity is high. While you can type the code out in any editor, and maybe even get CTAGS based completion and jump-to-type support, I haven't seen as tight an experience as MonoDevelop or Netbeans (or VS, but I don't know that very well).

There exists a tradeoff - you won't get the extensibility of Emacs or the efficiency of vi (they have vi-modes but it doesn't come close). Ultimately, when it comes to simply getting the idea from your head into the code, IDEs do help a lot.


As a .NET/PHP on Linux developer, I 100% agree. I just wanted to provide a counterexample. ;)


OK, take a look at the samples on this page ... http://bit.ly/9NPVtg

And then honestly tell me you can live without Intellisense.

Don't you just love the ... private @Inject @PojoExecutorProxy IServiceExecutorProxy serviceExecutor ?


How many frameworks is the right number? One is too few. One hundred is too many, it will just fragment people's skills.

Experimentation and inventing your own wheel is good for learning. But most of the time those wheels shouldn't see a wider audience - unless they have something new to offer.


This seems to be what Flask is to Django and what Sinatra is to Rails (From a very brief amount observation). There's a huge trend to move into more "lightweight", "self-hosted" types of development.

After building a moderate sized application (currently around 5-6k LOC) in .NET MVC2, some of Jacksonh's decisions start to make a little sense. However, there are a lot of situations when a paradigm seems neat but in reality it might not be _that_ useful.

For instance you can respond to queries using Lambdas/Anonymous delegates like Get("/foo", ctx => ctx.response.write ("foo")); YAY! I made a HTTP Response in just one line.

But looking at about 17 different endpoints I have in my application, not one will benefit from this feature. In the current model, I may spend a minute or two defining an action and specifying the route, but will spend atleast half an hour implementing it. For some reason, everyone seems to be focussed on cutting down the two minutes to one minute.

Also, this means that the routes aren't in one place. MVC2 has named routes and I can quickly change things from a single function. I used to like Flask's technique of making routing easier by simply specifying the route as a function attribute/decorator - but this made maintaining it quite hard.

Also, this tries to do everything. For instance, it allows you to serve static files as well like -Route ("/Content/", new StaticContentModule ()); When I have something like nginx which is known to serve files in a very efficient manner, there isn't any reason why I'd choose to let this server do it.

This seems fantastic for a quick hack and a tiny mashup, but for anything bigger, I'd definitely give it a second look.


> When I have something like nginx which is known to serve files in a very efficient manner, there isn't any reason why I'd choose to let this server do it.

For localhost development.


A major selling point of this seems to be that you can package your application into a nice little bundle and just push it into your deployment environment.

In fact, I would appreciate if there was a way to make static files (like js and css) location-agnostic.

I could say: <% Html.Stylesheet ("styles/foo.css") %> and it'll map to /Content/styles/foo.css or my nginx server or my Amazon cloudfront storage, etc.


The offer in the manifesto is to be simpler. I'm not to judge since don't know all the other frameworks, but at least seems promising.


You'd have to know all the other frameworks in order to know that yours is simpler.


No. You would have to know all the other frameworks in order to know that yours is simplest. You only need a few points of reference to be able to say it is simpler.

FTA: "To me, writing apps with Django or Tornado has always been much more enjoyable. MonoRail and MVC were big improvements over webforms, but still they felt difficult to me, especially if you aren’t using an IDE."


I do wonder how much of that simplicity is because of dynamic languages and not directly because of the framework. I've done quite a few projects with ASP.NET MVC and in my opinion it makes most things pretty easy. But there seem to be some things in Rails that make life easier, but they are really features from Ruby that you can use in Rails.


http://www.playframework.org/ is more likable than ASP.NET MVC, while Java is more rigid / verbose than C#.

Start from there.


+1 for play. much better, simple and complete than asp.net mvc


Well, it's not my framework, I just posted the link. So, I'll not judge if it's simpler or not. All I say is that it looks promising.




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

Search: