Is Rails suitable for highly customized standard software

Hello, I am working in a small software company. We are developing
business applications for a very niche industry.
At the moment our software products are mainly fat client windows
applications which are accessing different kinds of database servers.
Now we plan to slowly move to web applications. We do not host the
applications for our customers, so it is necessary that we ship a
complete solution which is deployed at the customer site.
In total we will have about 20 to 40 customers deploying our web
application.

Unfortunately every customer needs a specific customized user interface
and sequence of dialogues, but the general business logic is the same.

So my question: Is Ruby on Rails capable for this kind of requirements?

A colleague of me has already begun to develop a complete new web
application framework in pure java and servlets without using any
existing web application framework technology. He has almost no
background in web applications and is doing it all alone.
My thinking is that this strategy is a big mistake. In 2008 it is
essential to use a mature web application framework for a small company
with not more than 3 web developers.
Developing a own new framework makes no sense at all. Especially for a
small company with a very niche market.

Now I am looking for convincing arguments for a discussion with our
boss.
Any help would be very much appreciated.
Regards,
Andy

I would say go for it. There are a number of ways to approach your
situations. A simple solution might be to create plugins with models
and controllers, and build a different app for each client, basically
providing the views and configuration. More complex and powerful
alternatives exist of course.

On Dec 13, 5:23 am, Andy M. [email protected]

Andy M. wrote:

Unfortunately every customer needs a specific customized user interface
and sequence of dialogues, but the general business logic is the same.

So my question: Is Ruby on Rails capable for this kind of requirements?

Absolutely, if you can set some ground rules.

What you are selling is not a finished app, but a series of feature
requests.

To solve each feature request as soon as possible, you need a Capistrano
account
on your customers’ servers. That means, each time you finish a request,
you
enter ‘cap deploy’, and the end users’ experience upgrades in real-time,
right
between page hits.

On your side, to satisfy these feature requests, you need highly
decoupled code,
with absolutely saturating automated tests. That is what Model View
Controller
and unit testing are all about. Each time you make one tiny edit, you
run all
the tests for that model, view, or controller. If the edit is for a
feature for
one customer, the tests defend the user experience for all the other
customers.

A colleague of me has already begun to develop a complete new web
application framework in pure java and servlets without using any
existing web application framework technology. He has almost no
background in web applications and is doing it all alone.

Unless he is a supergenius who deserves to become our next overlord, he
will
epic-fail. Your goal now is to prevent the inevitable, as soon as
possible.

My thinking is that this strategy is a big mistake. In 2008 it is
essential to use a mature web application framework for a small company
with not more than 3 web developers.

Absolutely. You will spend all your time on the plumbing. May I ask if
this guy
is working alone, long hours, at home, and without unit tests or
frequent releases?

Developing a own new framework makes no sense at all. Especially for a
small company with a very niche market.

Rails is exactly what you need. Firstly, it is dynamic, so you can do
much more
stuff in much fewer lines of code than Java. Some guestimates place the
ratio of
code lines at 1 to 10.

Next, Rails leverages unit tests, so you can write new tests that target
high-level things, without reinventing their plumbing.

Next, Rails makes “metadata” rather easy. You will soon discover that
each
customer needs a different configuration. This topic is called “Software
Product
Lines” - look it up. As you add configurations, you will add unit tests
that
cross-check their methods. The more product lines the better, because
the
configurations and unit tests work together to cross-test everything,
and
soak-test all your code abilities.

These techniques do not require heroism. They require small, co-located
teams,
typically pair-programmers, who work reasonable hours. A week of work
like this
consists of collating the feature requests with highest business value,
knocking
each one down, and deploying the application when each one is finish.

Your colleague is raising the risk much higher than you need.


Phlip