jacksonh.tumblr.com

47 notes &

Manos de Mono: The Manifesto

Although I’ve spent the last five years working on desktop technologies like Windows Forms and Moonlight, my real interest is on the web. I get more excited about requests per a second than smooth scrolling and I don’t really care about grid controls. Whenever possible I like to used web based applications like gmail, tumblr and prezi.

I’ve always enjoyed using and developing web applications but I’ve never been a huge fan of asp.net. 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. Mono and web development just never meshed for me.

Because I love the web and I love Mono, there was only one thing I could do.

Love Child

I had to put them both in a room. Poke them repeatedly with sharp sticks. And deprive them of sunlight until they could learn to love each other. After a few months of forced love, they gave birth to their first child. Her name is Manos de Mono, and this is her story.

Cat climbing Mountain

So what is Manos de Mono?

Manos is a a lightweight web application framework that runs on Mono. The goal of Manos is to simplify the entire web application development process. It should be easy to prototype, design, develop, test, debug and deploy Manos applications. The focus isn’t just on getting you up and running quickly, the focus is on the entire process of creating, managing and updating a web application.

"Simple things should be simple. Complex things should be possible"
-- Alan Kay

Manos aims to be Simple, Testable, High Performance, Reusable and Flexible.

C# sucks for web apps, why bother?

Many web developers don’t consider C# and Mono as a viable language for web application development. However, I feel that there hasn’t been a web app framework built that takes advantage of Mono.

  • C# is a great programming language. It allows for clean, expressive code. It bends nicely to your programming style. I think most people that have actually used C# find the language quite enjoyable.

  • The core class libraries in .NET and Mono are very nicely polished. For the most part the API is clean, discoverable and easy to use. The API documentation on msdn.com is also top notch.

  • .NET is also really nice for multicore/multiprocessor programming. Often all you need to do to take advantage of all of a machines cores is use the AsParallel function.

The problem though isn’t the language or the platform. The problem are the frameworks.

There has been an infection of over engineering and me-too technologies in this space. We have abandonded the Unix/AT&T style of simple programming and have replaced that with layers upon layers of goo.

So Manos is my attempt at getting back to simplicity. Web frameworks really don’t need to be that complicated. For the most part websites get requests and return either HTML or JSON. Is this really that complicated a task?

A closer look at Manos

close up of a cat

Here are some of the main features of Manos, from the bottom up:

  • A scalable non-blocking HTTP server. Manos includes its own high performance web server based on friendfeed’s tornado web server (http://tornadoweb.org). Having an integrated server simplifies deployment and allows the underlying server to be customized to meet the needs of the higher level framework.

  • An HTTP “pipes” system, that allows you to hook into and process all http requests and responses before/after they get to the main routing framework.

  • Simple routing. There are a number of easy ways you can route requests to methods in Manos. Using properties to route to other modules, convention based method signatures to implicitly add methods, attributes on methods to explicitly route to them or by using the HTTP methods to add a delegate for a route. All these routes can be defined with string matching, regular expressions or a simple named group matching syntax that looks like this: “/Articles/{title}/{page}/”.

  • Named parameter conversion on methods. If you create a method Foo (IManosContext ctx, string bar, int idx). Manos will find those parameters in the request data and automatically type convert them for you.

  • HTML5 Boilerplate. When you create a new Manos project you get a layout based on the HTML5 boilerplate project (http://html5boilerplate.com/). This gives you a rock solid place to start for your front end development.

  • A wicked fast, html-centric template engine. The Manos template engine is designed to be designer and developer friendly. You can easily edit the template files without the help of an IDE and if a designer sends you html files, you can easily convert them into templates. To maximize performance the templates are compiled, not interpretted but they can still be generated at runtime.

  • A simple command line tool for creating, building and hosting your apps. No IDE needed. Creating a new project is as simple as typing manos -init.

  • Reusability: The success of todays popular web application frameworks is not just in their API or performance, its in the wealth of community developed libraries that can be easily plugged into your application. To facilate this, Manos is designed with shareable modules in mind. The framework is designed to encourage modular systems design and code reuse.

To get a better look at Manos, you should checkout the tutorial here:

http://github.com/jacksonh/manos/blob/master/docs/tutorial/page-1.md and http://github.com/jacksonh/manos/blob/master/docs/tutorial/page-2.md

So who is this for?

I’d like to defer to my good friend and close business associate, COURAGE WOLF on this one.

finding a niche is for losers

I don’t want Manos to be just for small apps, or enterprise app or a cute web framework for the iphone. I’d like for Manos to kick ass equally across all platforms.

The Beginning

Manos will be awesome. Enough of it is done for me to know.

Unfortunately this is going to be a big change for some people. .NET haters might have to shut up. And .NET developers are going to have to get used to the fact that web application development isn’t a pain in the ass.

Follow the project at http://github.com/jacksonh/manos Sign up for the mailing list at http://groups.google.com/group/manos-de-mono

  1. comunicazioneweb reblogged this from jacksonh
  2. djinkerry reblogged this from jacksonh
  3. marnyshelby reblogged this from jacksonh
  4. juliedunter reblogged this from jacksonh
  5. rhianalvaro reblogged this from jacksonh
  6. biuro-rachunkowe reblogged this from jacksonh
  7. seo-expert-consultant reblogged this from jacksonh
  8. ellenpage2 reblogged this from jacksonh
  9. top-new-songs reblogged this from jacksonh
  10. jacksonh posted this