A Recipe for New Media

Visual Studio 2008 vs Ruby on Rails

I had the pleasure of attending an information session with Bruce Tate, CTO of WellGood LLC, a die hard Ruby on Rails fan, and before that a die hard fan of Spring and Hibernate in the Java World, and before that a die hard Java fan :-)  To be fair, Bruce is about doing things quickly and efficiently and I agree Ruby allows you to develop simple websites quickly that are mainly CRUD applications.  So I understand why Bruce abandoned the Java world for the Ruby on Rails world, I left the Java world in favor of ASP.NET because of many of the same reasons that Bruce jumped on the Ruby on Rails bandwagon.  But there are some things about Ruby to Rails that still bother me.

About 2 years ago, I looked into Ruby on Rails, even learned how to use it (loved the Pragmatic Programmer's books on Ruby and Rails), but it was a pig to host and get up and running on anything other than the infamous http://localhost:3000/ and don't even think about hosting a high volume website at that time.  Now, Bruce told us that most websites do not deal with the scale that would require a more powerful platform like ASP.NET, and I agree.  But fast foward 2 years to today and I asked Bruce the question "what about hosting?".  His response?  "That continues to be a thorn in my side.... but I've written a book."  Thanks Bruce, I don't want a book, I want an answer.  I'm sure it's a good book, but it is still a very telling thing that it is hard to get a good hosting environment.  ASP.NET may be "big, bloated, and have a lot of configuration files", but have you seen what Apache magic you have to do to get this RoR thing hosted?  Sure Ruby on Rails itself doesn't have a lot of configuration files, but Apache does and so does MySQL (the choice among open source developers).  With Windows 2008 server coming down the pipe with IIS 7, configuration is much simpler than it used to be and the fully integrated ASP.NET pipeline makes for a very fast system.

 The second question I asked him was about design, there are currently no Ruby specific WYSIWYG systems out there, but you can design your look in Dreamweaver and then edit in the dynamic content.  That is how I used to do it with Java / Tapestry, so it's not new to me.  But I've gone to ASP.NET and I don't want to give up my WYSIWYG with all the wizards that make my design life easier.

Finally, I asked him to show us an actual Ruby on Rails scaffold.  He spent most of the time, granted he had a very short time, praising the Ruby language and ActiveRecord.  Both of which I think are great, I wish I had ActiveRecord in ASP.NET.  He quickly showed us a scaffold and how it works and I was impressed (especially with the new migration capabilities of ActiveRecord).

So the question is:  Are all the great things they are saying about Ruby on Rails really worth switching?  I'm sorry Microsoft, but ASP.NET is awesome for complex websites dealing with heterogeneous data sources within a clustered environment where the ability to monitor and manage the application and it's performance is important and where the pages are more complex than a simple data presentation... actually... well done Microsoft!!  Being that our company develops for the DotNetNuke platform, and Ruby doesn't have anything approaching a Portal platform with modular components and full membership management and granular security model (asked Bruce he couldn't think of any), we feel that Ruby on Rails answers a particular set of questions / problems that were the blight of the Java world and in same cases of the ASP.NET world as well, and when we do a project from scratch that fits the bill, we will definitely look at Ruby on Rails as a possible solution.

So some people who know me and know Bruce, may be asking "What is Bruce Tate, a big name Ruby on Rails person from Texas, doing in New Brunswick, Canada?"  Well, it's simple.  A local company switched their whole operation to Ruby on Rails and moved one of the big internet success stories from an ASP platform to Ruby On Rails.  PropertyGuys.com, a For-Sale-By-Owner website franchise started here in New Brunswick, moved from ASP to Ruby on Rails.  They looked at ASP.NET / C# for their system but found that Ruby on Rails allowed them the speed, flexibility and readability they wanted to quickly and easily prototype their new applications (more or less their words, I paraphrased it).

So do I think PropertyGuys.com was right to make the move?  Faced with current technologies, Yes.  Wait. Wait.  Don't start throwing the rotten vegetables yet.  Notice I said, faced with current technologies.  Microsoft, despite many people's opinions, hasn't been sticking it's head in sand.  They have been working towards Visual Studio 2008, which I think shows a lot of promise in answering the issues that Ruby on Rails raised.  So let's look at them:

ActiveRecord

For those of use who have been subjected to DataSets, anything had to be better.  I have quite enjoyed developing with NHibernate Object Relational Mapper (ORM) and a visual design environment from Puzzle called ObjectMapper.  Since it is open source, I have "hacked" it up to better match my "brand" of development (mainly that it didn't support NHibernate 1.2).  It allowed me to define the data model and produce the NHibernate code from the same visual model.  It works great, but ActiveRecord and Bruce Tate are right.  It's too much.  ObjectMapper doesn't do everything I want (and sometimes gets it wrong), so I have to dig into the XML description file and make some changes by hand, recompile the Class Library and restart the application.  That is too much work.

ActiveRecord on the other hand, simply looks like this:

class Item < ActiveRecord::Base
end

And you're done.  That's all you need for a full fledged ORM.  You can do things like Item.find_all_by_name, Item.find_by_id and ActiveRecord interprets (because it's a scripting language) what you mean and runs the SQL to retrieve what you want.  You can even say Item.find_all_by_name_and_price, it's that good at understanding what you want.  I have to admit that ActiveRecord is a hard act to follow.  So how does Microsoft answer the challenge? LINQ.

What I like about LINQ is that fact that I can open a database connection, drag a table onto a form, see it visually along with all it's relationships, and have that generate the code for me.  Yes, it's more work than ActiveRecord, no it doesn't have migrations (migrations are a feature of ActiveRecord that allows you to define the versioning of your database and roll forward and backwards based on what you need, adding or deleting columns, indices, whole tables).  Yes, migrations are specified in Ruby code and require seperate files and properly named classes (How was I supposed to know that a file named 001_Create_Item_Table.rb should contain a class called CreateItemTable...), but they are a neat idea and make it very easy to upgrade a production database to the current version of the site.  Oh, sorry.  Back to LINQ.  So though LINQ is no ActiveRecord, it is definitely far better than DataSets and probably better than NHibernate in many respects.  The fact that you will be able to use LINQ with NHibernate is cool.  (LINQ doesn't have any built in caching ability like NHIbernate, at least as far as I know).  There is enough stuff out on the web about LINQ, I won't bore you with the details.

Dynamic Language
Ruby as a language is quite cool.  It supports continuations, method objects, enclosures, dynamic type system, the ability to extend classes on the fly by adding mixins and new methods.  I can't argue with the language.  But a lot of the things that are part of Ruby are now in Visual Studio 2008 (except I haven't heard anything about continuations).  It has lambda statements, delegates, variable type.  The only big thing it lacks is the ability to redefine a class on the fly.  And there are many things in the standard Ruby library that I wish were in .NET APIs.  But for the most part, Ruby's benefits are being answered in one way or another in C#.  Some may say "too little, too late".  To those I say "Well, Ruby runs on .NET thanks to IronRuby".  Yes, you can run Ruby on .NET.  It's not a full implementation yet and it's not as fast as it could be, but it's not done yet.  And being that it is fully backed by Microsoft, it will be the best it can be when it's completed.  (I know, it is the same company that gave us Windows, but their development department is really quite good.)

Scaffolds
I admit, I like the idea of being able to say "Generate Scaffold Item" and get a complete CRUD system that just works, that is until you change the database and have to regenerate the scaffold.... At least with the GridView in ASP.NET it could dynamically regenerate the Grid (including edit forms) and Details View (so you could insert) based on the underlying database changes.  And with the addition of Dynamic Forms to Visual Studio 2008, you get the power of scaffolds and Grid View combined.  So Scaffolds are less of an issue compared to Visual Studio 2008.

DRY
Every where I turn with Rails, people are talking about Do not Repeat Yourself.  That means "If you do something once, you shouldn't have to redo it again."  I actually find that kind of funny coming from a system that doesn't really support componentized development.  You generate a scaffold, then have to edit it to make look the way you want, rinse and repeat with every form you need.  Yes, you can make reusable components in Rails, but in every place they tell you you can do it, they say "Don't do it!! It's too slow.  They are hard to manage."  Hmm... I like the fact that I can develop full components and place them into a DLL and simply by referencing the DLL, the components become available for WYSIWYG insertion and configuration.  Again, Ruby on Rails answers a particular challenge and answers it very well.  But when you don't want to completely rebuild a site every time you get a new project, you might want to look DotNetNuke.  With DotNetNuke, we can build a site very quickly, easily, and visually.  Yes it probably takes me longer to build a new component, but then the component is fully reusable.  Yes, DotNetNuke is a framework on top of ASP.NET, but Rails is a framework as well.  So let's just say that DRY is an over used word.

Code completion and compile time error checking
There is one big advantage with Ruby, no compiling.  There is one big problem with Ruby, no compiling.  When you don't precompile an application, you don't find the logic errors until the line of code is run.  When you don't compile, you don't have the benefit of true Code Completion (or at least all the IDEs I've tried don't have code completion that works / works right / actually tries to narrow the options to the selected class!!)  Yes, I know that Ruby on Rails comes with a great code coverage tool... but it needs it!!  If you don't test every line of code you don't know if you've made stupid mistakes.  Yes, I know code coverage is a good idea and that everyone should do it, but if you need code coverage to find semantic errors.... well, let's just say I don't want to look like an idiot when my co-workers run the code coverage tests to find I can't spell :-)

So all in all.  If I had to make a choice today, I might choose Ruby on Rails for new development.  But for existing development and for projects that fit the portal model, I will definitely stick to DotNetNuke/ASP.NET.  When Visual Studio 2008 comes out, I might be less inclined to go for Ruby on Rails.....

Comments

Kent Sharkey said:

Take a look at Subsonic (http://www.subsonicproject.com). Rob is a huge RoR fan, and the framework he's built for ASP.NET is very much the benefits of ActiveRecord, but on ASP.NET. You also get scaffolding to start up the app, and assorted other candy. It's flexible, well written (source available), and uses all the .NET goodness of partials, generics, etc. Combine that with the upcoming MVC framework, and I think ASP.NET will (again/still) be the best of all worlds.

# October 23, 2007 2:50 PM

Alex G said:

Interesting title you have... IDE vs Platform?

In any case, I was to say a few things having read your entire post :) I started off with .net beta 2 and picked up ruby just last year... in my opinion, there's nothing in C# that even remotely approaches flexibility that ruby offers. Here's just a few things that i wish:

1. Whoever came up with the keyword "internal" needs to be crucified. This kind of closed box approach is used through out the framework core. Firing up Reflector every time just to find out that there's a method just to do what you need, only some bitch made it internal is really harsh... I've had that happen more times than I'd like to remember.

2. Ruby mixins are remarkably powerful. C# 3 is trying with extensions, granted. Mixins give you code reuse, extensibility and rudimentary AOP all in one.

3. Nothing is off limit in Ruby. You can take any class and change its behavior without having to modify any original source. If you need behavior other than provided, simply redefine the method and every extending class will pick up on that change.

4. Object.method_missing() allows people to write DSL extremely easy and make builder type functionality.

Also, as a developer, you don't need WYSIWYG and as a designer you don't need VS.NET. No WYSIWYG gives you anything that remotely resembles what's in the browser and most of the time is spent looking at the source. I barely ever used it through out my 4 years of asp.net development. If you are a web developer you have to know your HTML and your CSS.

Finally, precise code completion is impossible in any dynamic language. That's just the fact of life. Netbeans does a good job of guessing some of it, but not well. It was very hard at first, but it actually made me remember my code  and the libraries that I'm using a lot more.

Yes, the hosting is still awkward in RoR. It's no XCOPY. I'm no hosting engineer, i can't configure IIS beyond basic set up nor Apache. It's enough to let me do my job. I then simply deploy my apps to a shared hosting where all configuration has been perfected for me. Otherwise you probably have a network administrator to take care of that for you.

Also, ruby has Capistrano deployment tool, which is amazing once the deployment recipe is written.

Bottom line, i love ruby so much more than i ever loved c#. Last month I had a tiny asp.net project and i was hating how limited and closed everything is.

# October 23, 2007 3:09 PM

Denny Ferrassoli said:

Excellent article! As mentioned above SubSonic is great... Still needs some work but it does the job well. I have heard they will implement migration in the next version too.

I'm very anxious to see what the .NET MVC Framework has in store. I have a trigger finger ready to go when the beta comes out.

# October 23, 2007 4:46 PM

The Other Steve said:

I'm starting to work on my own project at home, and I've been debating.  The problem is, I have an architectural idea that relies heavily on components.  It's sort of like DotNetNuke, although in a different direction.  I'm trying a different approach to overcome limitations I felt with DNN, and I may be completely nuts.

But without the components, I couldn't do it the way I want.  So I don't understand how RoR would be useful.

I do like the idea of the easy data layer, and I'm presently trying to identify which route to go.  I've looked at Subsonic and find that to be nice.  I'm also considering LINQ and ADO.NET Entity Objects from 2008.

Anyway, interesting discussion.  I still want to understand why Ruby.

# October 23, 2007 5:00 PM

Mark said:

I'm surprised that you didn't mention, or weren't familiar with SubSonic. As far as RoR is concerned, both you and Rob, the creator of SubSonic, drink from the same well but don't like the bitter after taste...

# October 23, 2007 5:16 PM

Gabor Ratky said:

Hey,

cool post! I wanted to point you to the MVC framework that the ASP.NET guys are working hard on. It has been introduced at Alt.Net (Scott Guthrie gave an informal presentation about it) and it is totally worth to check it out if you have a strong .NET background but envy all the RoR people doing stuff fast :)

weblogs.asp.net/.../asp-net-mvc-framework.aspx

Release date is set early next year. Interesting times!

Cheers,

Gabor

# October 23, 2007 5:29 PM

foobar said:

So what would I use in the RoR world when I'm making non-web apps?  Pixie dust?

As for Alex G's points, I find most of his "advantages" to be disadvantages.  The problem with the anything-goes approach that Ruby offers is, well, anything-goes.  Yeah, that's great you can change whatever the hell you want, but replacing what you consider to be overly constrictive OOP idioms with utter chaos will lead to well, utter chaos.  Besides, what OOP developer worth their salt uses a lot of inheritance anyway?

And what, Alex G, are you needing to change in the .NET framework that's internal?  Whatever happened to using composition?  You know, whenever you see "internal", it's a clue to you that perhaps using inheritance isn't a good idea.

# October 23, 2007 6:46 PM

Alex G said:

@foobar,

"utter chaos" is created by developers. It's the same as stating that Perl leads to spaghetti code. Bad developers writing horrible code leads to it, not Perl.

Limiting developers in using provided code and telling them HOW they should use it is counter productive. By all means tell me how your code works and what you consider the best approach, but if I think I need to change it, or for that matter use any part of it, I should be able to do so freely and without restrictions.

# October 23, 2007 7:23 PM

IronRuby said:

Hi,

IronRuby + VS2008 + Asp.Net MVC is going to break all the allegations made on Asp.Net by other communities.

The above Trio is going to be a killer application of the year 2008.

Just waiting for DLR, IronRuby and MVC now.

Silverlight 1.1 is going to add lots of toppings to it.

Thanks

# October 23, 2007 11:28 PM

Anatoly said:

I remember when .NET only came out there were plenty of talking on '.NET' vs 'JAVA'.

I can't see much of this around lately.

When do you realize that 99% is depends on system architecture/proper testing/skills of programmers and only 1% on programming tool.

# October 24, 2007 9:43 AM

Alex G said:

MVC is really not a big deal if it's not backed up by a solid ORM tool. I really like where MS is going with it, but it worries me that they never mention the database :)

# October 24, 2007 10:57 AM

ccm682 said:

You I realize it's "Platform vs IDE" but that is somewhat of my point.  There isn't the same kind of tools available for Ruby on Rails as there is for ASP.NET.  I could have seperated the blog into C# vs Ruby and Visual Studio 2008 vs Notepad / NetBeans 6.0 Beta / Aptana.  But to be honest, it is hard to do that with ASP.NET as part of the power of it is the IDE.  The bar to entry to both technologies is low as both come with Free IDEs (Express editions from Microsoft and Aptana and NetBeans 6.0 Beta for Rails).  For the Record (ha!! get it, Record, ActiveRecord... Ok, wasn't funny), I use NetBeans 6.0 for Rails as it's Code Completion works and Aptana's currently doesn't.

# October 24, 2007 12:59 PM

BJM said:

WYSIWYG in VS? It's the worst WYSIWIG I've ever seen. Try some external CSS files and user controls. Looks funny.

# October 24, 2007 5:42 PM

yahoo webhosting » Visual Studio 2008 vs Ruby on Rails said:

Pingback from  yahoo webhosting &raquo; Visual Studio 2008 vs Ruby on Rails

# October 25, 2007 10:12 AM

Jon H said:

As a long time ASP.NET developer, I can count on one hand the number of times I've used the WYSIWIG tools for page design.

However, the WYSIWIG database tools are very handy for modeling and DAL creation.

# October 25, 2007 1:42 PM

JJ said:

One big difference you didn't touch on...Ruby/ROR is completely free for you to use and for you to deploy, if you have access to a server with bandwidth. .Net and Visual Studio is DEFINITELY not. In fact, as a long time Java and Ruby developer, I've wanted to work with .Net just to see what it's about, but I can't even afford too buy the tools!?!?! And don't tell me about the stripped down versions Microsoft offers...why would I want to be hobbled out of the gate?

Bottom line: RoR is for developers by developers and is driven by the community. .NET is for developers by Microsoft and is driven by the desire to make money by charging overwhelmingly high prices. Sure, you may gain a few niceties by purchasing, but I truly believe those are quickly outweighed by the cost.

It's like when I bought my first (and only) Apple. I had heard such nice things about Apple and Mac OS X, but after a few of weeks working with it I was left thinking "I paid $2,000 for this?!?!?!"

# October 25, 2007 2:34 PM

Dejan Dimic said:

The title is at least partially wrong, but the article is good.

For me, as I am obligated to live in both worlds, it is not the framework that you use or the IDE it’s more the mental message that particular tool, in this case language and framework, are imprinting in developers mind while using it.

That is the main thing in a long run. We as developers are evolving while developing. The languages and tools that we use shape our way of thinking, the way we approach problems and build our solutions.

Nowadays Ruby and Ruby on Rails has the best mixture of best development practices incorporated in framework philosophy.

For a seasoned developer it is natural to think to write a reusable code, to think about maintenance of it, to write a unit and functional tests, to honor the design patterns and DRY. It’s the stuff we learned along the way.

If you plan to become a better in what you do you should learn from the best.

# October 26, 2007 3:04 AM

ccm682 said:

Microsoft Tools cost money?  I guess you didn't catch my remark about the Express line of tools being free and that hosting costs are about the same.

For the record, I'm learning Ruby on Rails.  I like a lot of what I see.  But making life easier... I have to keep going back and rereading the book, digging through my code saying "I know I did this before but I can't remember how I did it because Code Completion isn't there". Which is exactly what I said before about being a new technology and the depth of tools, frameworks, etc simply not being there yet.  When they come out with RailsNuke, I'll think about it (as my day job is basically building portals).

And the second issue is hosting, Bruce Tate's answer (as I already stated) to my question on hosting was that he was writing a book, not "Oh, that's easy".  I may not always like supporting Microsoft, but when they make it easy to host databases and websites I have to go with them (I've used Linux for years and still want to throw it out the window far more often than I would like).  Case in point (and about to come out as a blog post), I'm working on a PHP project with PostgreSQL database backend.  I COULDN'T GET IT TO RUN ON LINUX, I moved it to Windows and it's working great and it's easy to develop (thanks to Aptana).

# November 6, 2007 1:07 PM

ccm682 said:

The other thing that bothers me with Rails is that in Rails 2.0, they removed scaffolding as a mixin and broke their model, scaffold, and resource generators (try generating a scaffold for an already existing model and you'll see what I mean).  They removed quite a few other parts and now you have to install them as plugins in the vendor directory... Ok, it's one thing to decide that a particular functionality shouldn't be load if it's not being used, it's another to decide to remove it.  It's like Microsoft deciding that component support is a seperate download.  Oh, bad example, Rails 2.0 wants to REMOVE component support.... See what I mean.

# November 6, 2007 1:11 PM

Huw Collingbourne said:

"there are currently no Ruby specific WYSIWYG systems out there, but you can design your look in Dreamweaver and then edit in the dynamic content."

Keep an eye on what we are doing with Ruby In Steel. We'll be launching the Visual Rails Workbench early in 2008. Amongst other things, this will let you design your Ruby On Rails site in Dreamweaver or some other web design tool. We'll have more details on the blog shortly.

best wishes

Huw Collingbourne

SapphireSteel Software

http://www.sapphiresteel.com

# December 3, 2007 12:42 PM

AkitaOnRails said:

Good post, as a full time Railer I don't really agree with all you say or imply - for example making the mistake that Bruce Tate not knowing somethings mean they don't exist, or are just too difficult to bother; or worse: that he summarizes what a Railer is. But even with this I like how started this discussion: you actually tried RoR even being a .Net programmer and for that I applaud your article. I don't know you but at least for me you seem to tried your best to do an educated argument. I don't see the usual troll ranting.

That's a breathe of fresh air because recently I naively got myself involved in a public ranting against a brazilian .net troll that started his argument by implying that anyone who chooses RoR is a misinformed noobie. Pros have only one choice: asp.net.

I agreed with him that RoR isn't perfect. I know that even MS has lots of very smart and truly dedicated developer. I interviewed John Lam for my website and he was very insightful. But this troll in question wanted to set a very lame "competition" to "scientifically   prove" that asp.net is far superior and therefore RoR wouldn't even  deserve to exist.

My main problem with him was that he deemed utterly unnecessary for him to even look at RoR to assert he was right. At that point - after a very lengthy discussion - I dropped him as it became a waste of time. I actually know .net very well and I do respect its capabilities. I've deployed Java, Php, Perl and Python systems for that matter. RoR "clicked" for me. Even being a heavy Eclipse user for the past couple of years I actually don't miss it that much.

Your discussion raises a number of valid points. No one has ever stated that RoR is perfect, it is evolving. You mentioned DotNetNuke, it really is a neat product. Let's just remember that I used to do phpNuke years before and it took some time for .net to catch up later. The RoR world doesn't have something similar today, yet! We don't have anything like Wordpress for that matter, or Plone. It doesn't mean however that this deems RoR "inferior" it just means that either the community will catch up soon, or that this niche is already well served and yet another clone wouldn't be meaningful.

You mentioned open source projects that makes .net better like NHibernate. But if we consider just the bare bone out-of-the-box .net it is harder to compare it next to RoR. If we can consider add-ons, than you should add tools like ActiveScaffold to the mix. Now scaffolding doesn't look so bad. Or maybe add Ambition as a contender for Linq. Or Markaby or Haml for ease of semantic web construction. Maybe Rspec would make it seem just too cool to mention for testing. And so on and so forth.

Don't get me wrong: I don't disagree that Vs2008 will be better than vs2003, but they're not aiming for a frozen down target: we are moving, faster than ever. One year ago no one would have believed that Ruby would be possible and fast over the Jvm, but we are now. No one would have believed that one could have things as Twitter happening, but it is. Or even that one would be able to host RoR apps over .net, but we are on the verge to.

The best thing about RoR, to me, is being part of a very energetic community that is always under pressure. No one believed us 2 to 3 years ago. But we sped up so fast that a lot of people now have to play catch up. 6 months from now some other frameworks will catch up until where we stand now. But in 6 months we will have progressed some more.

And instead of considering just Bruce Tate you should try people as Dr Nic Williams, Geoffrey Grosenbach, Chad Fowler, David Black, Evan Phoenix, Hal Fulton, etc. I know: I've interviwed them all.

All that said, let me tell that I partially agree with your conclusion: RoR is not suited for every use case. Any project that diverges from 37signals style apps may have a hard time. You need Wordpress? Stick with the real deal. You need Plone? Stick with it. It is part of being a good developer to know how to make educated decisions. Learning other languages, frameworks and tools is part of the job. And trying to make your tool look good by the wrong path of trying to make everybody else look bad is a noobie thing. Glad you didn't walked that line.

# December 26, 2007 11:52 PM

anon y mous said:

Staying anonymous because of work, but.. I work for a DotNetNuke-centric .NET developer, in the odd position of being the "open source guy".  I'm much more of a Rails developer than a .NET one, but I feel some of the comparisons you've made are unfair and rather missing the point of some fundamental design decisions made in Rails.

For example, talking about the modular design of DNN and the absence of heavy components in Rails - that's a deliberate decision which the Rails core fights to maintain very vehemently, and one that I feel is actually born out by my experience of working with DNN to an extent.  Heavy components or modules encourage a tendency to develop "feature rich" modules which are essentially applications in their own right - see DNN modules like CatalooK for an example, which has a manual about the size of Agile Development With Rails just for the one module.

The problem with these heavy modules is that the minute you start trying to build client sites you find that they fall between every possible stool: they're too complex for simple sites, yet trying to build complex sites with them turns into a nightmare of overcomplexity with module incompatibilities and extensive amounts of source hacking.  The same is true of many of the heavier open-source CMS systems like Joomla/Mambo: they're nearly great if you just want a simple site with a couple of content pages and a forum - but not quite, because the interface seems like it should be running a far more complex system so it confuses non-technical clients and increases required training resources.

The Rails philosophy is not to give you all that stuff on a plate, but to instead make it possible to build your own stuff that meets client needs at about the same rate that you'd spend fighting incompatibilities and hacking presentation in DNN.  DNN is also very web-unfriendly: the source it and its popular modules generates is well behind even other heavy CMS systems, and historically that has been entirely down to .NET   This actively becomes a problem when you're doing government work and you spend substantial periods of time having to hack away at the innards of DNN and a pile of third-party modules just to stop it producing crap markup.

Now, that's not to say that Rails meets all needs - but as pointed out by Akita above, you're not actually claiming that vanilla .NET does that either: instead you turn to things like DNN or NHibernate.  But if you head to Rails with a similar "let's see how the community does this" attitude there are arguably some great solutions: Hobo is coming along very nicely if you're keen on heavier components and declarative application assembly.  ActiveScaffold provides more attractive dynamic scaffolding (no regeneration required)... Ambition is heading towards some nice competition for LINQ.  And as mentioned above, RSpec/Rcov/ZenTest provides a *really* spectacular testing framework.

And if you're really keen on packaging up "heavy" components for Rails then there's a whole bunch of solutions: Engines, appable_plugins etc.  They're shunned by the Rails core because they're anathema to the way that 37signals et al work, but they do what you're wanting to achieve.

The one thing that you're definitely right that Rails is missing is WYSIWYG - but by arguing for it you're missing one of the major philosophical decisions of Rails.  Rails is heavily aligned to the web standards/usability movement.  The web, as a technology, is not WYSIWYG.  While WYSIWYG tools do exist, I don't think you can point me to a single one that produces the same kind of semantic, degradable, loosely-coupled development that real humans who understand XHTML/CSS/JS are achieving out on the web, and which is rapidly becoming considered best-practice and codified in government procurement requirements.

# December 28, 2007 8:06 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)