Advocating RoR in the enterprise?

Hi folks,

I’m looking for advice on how to promote RoR in my workplace.
Specifically, I’d like to work out a strategy for promoting
development in Rails as a new alternative to our existing technology
(the usual suspects… mostly Java/Oracle, .NET, PHP, and a bit of
Perl here and there).

Some background: I work for a fairly large state environmental agency
as a web developer. Our internal and external websites are handled by
the public affairs office (that’s where I work). We handle
application development as far as it relates directly to public or
employee information (i.e. calendars, mailing lists, document
management). I do most of the new application development in public
affairs, and so I’m typically the only one working on any given
project.

The enterprise application development (for things like financials and
environmental database transactions) is handled by a team in IT.

I’ve developed a couple of applications in RoR by now, and it was
everything it’s supposed to be: quick, intuitive, fun… the apps are
great and they’ve gotten some positive feedback. But since it’s not
an officially sanctioned language/framework, I’ve decided not to
pursue new development for now. However, I’ve done enough RoR
development now to really believe that this is the way it should™
be done. I think I can develop better applications faster, with
cleaner code and more features, than I can with any other environment.
In fact, having gone back to PHP for now, I can already see that my
code is better than it used to be… it looks about as much like Rails
as I can make it.

I want to make a case for officially doing some Rails development in
my job. If it’s the right tool for the project, then I want it to be
available to me, without wondering whether I’ll catch heat for going
off the beaten path. I don’t care if the IT folks use it or not -
frankly, they’re so deep in Oracle that they’ll never get out - but
Rails would be perfect for a lot of my projects.

I’m anticipating some skepticism here. A while back someone tried to
push for ColdFusion and got shut down… obviously I think Rails is
better (not to mention cheaper), but there’s definitely some
conservatism going on. So, I’m appealing to the community… what are
my strongest arguments here, the ones that the execs will find most
compelling? Has this worked for anyone else, and if so, how? How do
I get RoR to be officially adopted? Help me build my case…

I’m going to take the liberty of anticipating a few of the questions
they might ask me:

  • Will I be able to find a Rails developer when you leave?
  • How do I know this isn’t just a fad?
  • Is it secure? Stable? Fast?
  • Can’t you just do the same thing in PHP?
  • How do you know it won’t break the other stuff running on the same
    box?

And of course, the main strengths of RoR as I see them:

  • Free and open-source
  • Less backend code means more frontend features
  • Code is human-readable, clean, and organized, therefore maintainable
  • Active community and widespread adoption
  • Portable and cross-platform
  • Built-in eye candy (hey, hearts and minds, right?)
  • Promotes agile programming practices
  • Faster development

All right then… put yourself in the shoes of the public affairs
director, or the head of the application development team, or a
project manager - what do you need to hear to give RoR your blessing?

Thanks in advance.

On Fri, Feb 10, 2006 at 09:50:30AM -0500, Tony G. wrote:

I’m anticipating some skepticism here. A while back someone tried to
push for ColdFusion and got shut down… obviously I think Rails is
better (not to mention cheaper), but there’s definitely some
conservatism going on. So, I’m appealing to the community… what are
my strongest arguments here, the ones that the execs will find most
compelling? Has this worked for anyone else, and if so, how? How do
I get RoR to be officially adopted? Help me build my case…

There’s only one argument.

“Ruby on Rails will cut overall costs and increase overall quality.”

I’m going to take the liberty of anticipating a few of the questions
they might ask me:

  • Will I be able to find a Rails developer when you leave?

Point out that this list gets an extremely high volume of posts every
day.

  • How do I know this isn’t just a fad?

That’s always a possibility with things that are new. It could be, but
the fundamentals are solid.

  • Is it secure? Stable? Fast?

So far.

  • Can’t you just do the same thing in PHP?

Yes, but slower, and it will be more difficult to maintain.

  • How do you know it won’t break the other stuff running on the same box?

There’s no reason it should, but if you’re worried about that, let’s
run a test environment.

All right then… put yourself in the shoes of the public affairs
director, or the head of the application development team, or a
project manager - what do you need to hear to give RoR your blessing?

“It will cut some money out of my budget.”

All other arguments should revolve around that.


- Adam

** Expert Technical Project and Business Management
**** System Performance Analysis and Architecture
****** [ http://www.everylastounce.com ]

[ Adam Fields (weblog) - - entertaining hundreds of millions of eyeball atoms every day ] … Blog
[ Adam Fields Resume ]… Experience
[ Adam Fields | Flickr ] … Photos
[ http://www.aquicki.com/wiki ]…Wiki
[ http://del.icio.us/fields ] … Links

On 2/10/06, Tony G. [email protected] wrote:

the public affairs office (that’s where I work). We handle
application development as far as it relates directly to public or
employee information (i.e. calendars, mailing lists, document
management). I do most of the new application development in public
affairs, and so I’m typically the only one working on any given
project.

I’ve been consulting for a large state agency in Florida for quite a
few years. Java is here to stay (and has its place), but I’m about
halfway through a successful campaign to avoid .NET and skip straight
to Rails.
We’ve got several Rails systems at the moment, all on Oracle, and
quite a few systems that use Ruby for scripting or mainframe
integration.

Selling points that have worked for me:

  1. Much easier to teach Ruby to a COBOL or Algol programmer than Java.
  2. Runs on many more platforms than .NET. e.g. Linux, Solaris, AIX,
    IBM UNIX for z/OS (should work, but I haven’t had a reason to try it
    yet.)
  3. Big state agencies (paradoxically) often have very tight budgets.
    Which would you rather have? $300,000 worth of investment in an
    application server package, or three expert application developers.
  4. I can migrate an application from Oracle to SQL Server or
    PostgreSQL in 30 minutes.
  5. Vastly simplified (read: cheaper) maintenance via integrated test
    support.
  6. There are fewer books, but they are pretty much all excellent. 9
    Java or .NET books out of 10 are garbage, and it takes time to find
    the ones that you actually want to hand around.

The last stumbling block is the typical “How will we find
programmers?” issue. I’ve chosen to basically ignore this one.
That’s what they said about Java, and then about .NET, and now those
are ‘standards’.

Keith Braithwaite and Tim Joyce presented an interesting talk at
XPDay in London.

The trust of the argument is that you can use rails to create
corporate nano apps to
reduce the cost of change to the organisation. It’s an interesting
argument - a real
step change from what most organisations do.

See for yourself http://www.keithbraithwaite.demon.co.uk/professional/
presentations/2005/xpday/AgileArchitecture.pdf

I thought it was worth sharing! The business value arguments are the
most compelling for me.

Andy

To me there are a couple of aspects more to enterprise computing than
scalability and stability. Rails is no doubt scalable and stable but
especially enterprise integration is a big issue - for me at least.

To restate Martin F. (http://www.eaipatterns.com/)

“Enterprise integration is the task of making disparate applications
work together to produce a unified set of functionality. These
applications can be custom developed in house or purchased from
third-party vendors. They likely run on multiple computers, which may
represent multiple platforms, and may be geographically dispersed. Some
of the applications may be run outside of the enterprise by business
partners or customers. Other applications might not have been designed
with integration in mind and are difficult to chagne. These issues and
others like them make application integration complicated.”

I’m sure Rails can handle many things but enterprise integration issues
are a difficult ball game. When it comes to integrating data and data
streams from disparate sources, we will need a strong architecture for
doing so. I’m thinking message queues, RPI etc.

Rails is no doubt one of the strongest frameworks for web development.
But what do I do when I have a CICS back end? Many enterprise
environments are a collection of systems that are very old and run on
exotic hardware and OS. A lot of development time is used writing web
front ends for such systms.

Rails is definetely there when it comes to web applications. It’s like
Turbo Pascal 6 for web development (TP6 included an innovative API -
Turbo Vision - for user interface development), but I don’t yet think
it’s ready to apply on many problems in the enterprise domain.

Kasper

Thanks for your responses. Seems like the main dish here is
cost/benefit, with a side of agility… which of course is really just
cost/benefit anyway. Here’s what I’m seeing:

  • Rails is cheaper because it has no initial purchase cost.
  • Rails is cheaper because it’s easier to maintain.
  • Rails is cheaper because it’s easier to move it to a different
    platform if you need to.
  • Rails is cheaper because you can be up and running faster than with
    Java or .NET.
  • Rails delivers more value because you can quickly develop small
    applications that support your business processes.

I’m lucky (as I see it) not to actually have to develop “enterprise
applications” per se - I just have to develop applications in an
enterprise. I’ve managed to stay pretty agile, even without Rails,
because I work on my own. But I will eventually have to justify my use
of Rails to people who do develop enterprise applications, so I need
to justify it from their perspective as well.

Thanks again for your responses - I think I’ve got something to go on
now.

On 10 Feb 2006 18:20:12 -0000, Kasper W.
[email protected] wrote:

Rails is no doubt one of the strongest frameworks for web development.
But what do I do when I have a CICS back end? Many enterprise
environments are a collection of systems that are very old and run on
exotic hardware and OS. A lot of development time is used writing web
front ends for such systms.

Sorry to pick out just one of your points, but I’ve done this with IMS
on z/OS back ends. CICS should be fairly similar (or identical,
depending on the tools you have access to.)

Ruby can invoke JDBC libraries for legacy data access. Ruby has
bindings for ActiveMQ, which you can connect to pretty much any
messaging system (such as IBM MQSeries) via an ESB.
Right now there’s a bit of a gap in the emulation category; if you can
afford IBM HATS or Seagull Transidiom, you can invoke those services
from Ruby. If I can find the time, I intend to write a ‘pure’ Ruby
3270 library, to make certain of these things easier.

Obviously there are still things that are easier in Java (and probably
always will be), but don’t count Ruby out of this realm without taking
a serious look.

What would be really, really cool would be a way to embed Ruby code
into BPEL, the way you can currently with Java. I haven’t had to do
much with BPEL yet, but hopefully someone will have explored this
before I encounter it. :slight_smile:

I have found some library that claims to be capable of interfacing
SAP from Ruby.
Is there any idea about the usefulness and stability of this?
This would be some step toward enterprise integration, in certain
environments. I know that the Java guys have this kind of interface
actually working…

Best regards,

Karl

On 10 Feb 2006 18:20:12 -0000, Kasper W.
[email protected] wrote:

Rails is no doubt one of the strongest frameworks for web development.
But what do I do when I have a CICS back end? Many enterprise
environments are a collection of systems that are very old and run on
exotic hardware and OS. A lot of development time is used writing web
front ends for such systms.

I’m pulling a Wilson here :slight_smile:

I think the only reason anyone might consider this a valid point is
because there haven’t been many integration projects with Rails yet.
The vast majority of people using Rails are early adopters that aren’t
totally chained down by beuaracracy. The beuaracracy and strict
requirements generally come about because there are giant legacy
systems in place, so people who don’t have those limitations probably
don’t have anything to integrate in the first place.

It can be done though. Ezra Z.'s story “From start to
launch: http://yakimaherald.com” presents an excellent example. He
uses a number of different legacy data sources to power the site, and
developed the whole thing by himself in a few months. Java.chance =>
nil.

Anyway the point is not to toot Ezra’s horn (though imo he deserves
it), but to show that writing integrated apps with Rails is not only
feasible, but perhaps more practical than using current standard
technologies. The problem is that most people who have to write
integrated apps aren’t even given the choice to use Rails, so it’s not
very common place. I have a feeling that will change soon though.

Pat

I don’t know… you might want to stay away from points 1 and 3. I do
(near)enterprise
java development and I’ve never spent a dime… and my clients have only
spent money on
developers. And I think there are actually less cross-platform issues
with Java /right
now/ than with ruby (that’ll change though).

You know, thus far into my rails experience, I’d say the best thing it
offers is Ruby: a
statically-typed language like Java just can’t compete with a
well-designed dynamically
typed language like Ruby for ease of maintenance and flexibility. (For
example:
XMLBuilder… being able to type method calls that don’t actually exist,
but the language
is smart enough to just make an xml element out of that… that’s cool!)
Unfortunately,
this is the sort of explanation that makes management-type’s eyes glaze
over, so…

Well, I’d say you should pitch it for little internal apps at first.
Handy little db
maintenance stuff and whatnot. You can point out that it’s a great
little tool to have in
your developers’ toolbox… like perl but better. :slight_smile:

b

It can be done though. Ezra Z.'s story “From start to
launch: http://yakimaherald.com” presents an excellent example. He
uses a number of different legacy data sources to power the site, and
developed the whole thing by himself in a few months. Java.chance =>
nil.

Maybe I should post the link :slight_smile:
http://brainspl.at/articles/2005/11/03/from-start-to-launch-http-yakimaherald-com

Just some points that might be encountered when advocating Ruby + Rails:

  1. How about teaching Java-guys? I see some difficulties, because
    for becoming a Java-guy, you have to invest really much. Having
    read 30 books is not enough to be an expert… So, having invested
    so much, it just must not be true that there is any kind of easier
    way.

  2. Ruby/Rails productivity is not fair. It’s just a quick and dirty
    kind of thing, for prototypes.

  3. If you use tool xyz and really know your Java stuff, you are as
    productive in Java as in Ruby+Rails.

  4. Pretty much the same platforms that are running Ruby would also be
    running Java and Perl. (But there is a huge advantage over
    µ§oft-stuff.)

  5. You can get a pretty decent open source application server package
    from JBoss. It’s more the cost of maintaining this beast, but you
    have to maintain a database anyway, so even that costs is minor.

  6. Being able to migrate Ruby-on-Rails from one DB to another does not
    help.
    You can’t migrate the data so easily. (So it’s more the idea
    that you develop without the pain of having to maintain Oracle
    for the developers, but have test and production systems with Oracle.
    It is mandatory off course to test with the same DB-product that is
    used on the productive system.)

  7. Being DB-independent means that you throw away a lot of cool
    and performance relevant features of Oracle (or of DB-product XYZ on
    which you specialize)

  8. I don’t find it really difficult to find the good Java (or Perl
    or…) books.
    Amazon has these stars for good books and they tend to be quite useful.
    (But you need much more Java-books to do the same that you have
    achieve after having read two Ruby-Books.)

  9. The issue “how to find developers” is there. I agree, it’s not
    really
    a problem. But we have to admit that Java was specifically designed as
    a compromise between what would be a good language and what is easy to
    learn for the C- and C+±guys. Ruby neglected this requirement and is
    not so close to the common syntax of C, C++, Java, Perl and Javascript.

  10. There are much more libraries for language XYZ where XYZ is one of
    (Fortran, Cobol, Java, C, C++, Perl, Python, PHP)

  11. There are more long term experiences of successful applications
    written
    in XYZ (take the same list)

  12. It is not clear if Ruby on Rails is going to make it or if XYZ is
    the future. (take the same list, don’t forget Cobol and Fortran… :wink: )

  13. This script stuff is no serious development. (-> use Java, C, C++,
    Cobol, Fortran and not PHP, Perl, Python, Ruby, Shell-Scripts…)

I do not want to disadvocate Rails. Some of these points are even
easily challenged, some are real concerns that must be weighted against
the advantages. It is good to know what arguments might come, when
advocating RoR. Did I miss any point? Or any language XYZ?

Best regards,

Karl

I can tell you how it happened here at Pearson Education (largely a
Java shop with pocket of .Net), if that is of any use to you.

Nineteen months ago I needed to automate some tasks against our
Perforce SCM system and Tony Smith, who has written several of the
various language bindings for the P4 API recommended P4Ruby. I grabbed
up used copies of the old PickAxe and the Ruby Way, got to work
learning the language and produced a few command line utilities that
became part of our build process. When a need arose for a few simple
web based reports, I turned back to Ruby, and a few months later we
had an array of Ruby based tools. A year later I joined a small group
(4 developers) that had been writing .Net apps. When we lost the
strongest .Net developer on the team left our manager, seeing how
productive one can be with Ruby and faced with bringing in a new hire,
decided to focus on Ruby going forward and we posted our first
position for a Rubist. I now regularly present Ruby to others in the
enterprise and it is gaining ground. In fact I recently saw Ruby
mentioned in a PowerPoint presentation given by one of the higher ups
describing a major strategic initiative.

As far as arguments and strategy go I simply 1. used Ruby whenever the
language platform was not dictated and it was a good fit, 2. was sure
to tell people that I found Ruby a very productive tool. Nothing more
was required. In my experience, being patient and letting my
productivity with Ruby do the talking has been a very effective
argument. I try to do work that is fairly visible and which I am
confident will create value for others in the organization. When end
users are excited, people are interested in hearing the story of why
it works and it makes things stick in the brain.


John-Mason Shackelford

Software Developer
Pearson Educational Measurement

2510 North Dodge St.
Iowa City, IA 52245
ph. 319-354-9200x6214
[email protected]
http://pearsonedmeasurement.com

Tony,

Tony G. wrote:

Some background: I work for a fairly large state environmental agency
as a web developer. Our internal and external websites are handled by
the public affairs office (that’s where I work). We handle
application development as far as it relates directly to public or
employee information (i.e. calendars, mailing lists, document
management). I do most of the new application development in public
affairs, and so I’m typically the only one working on any given
project.

Coming from a large government background it really comes down to CYA
(Cover Your Ass). The decision makers are conservative because no one
ever got fired for using Microsoft, IBM, etc…

I’m going to take the liberty of anticipating a few of the questions
they might ask me:

  • Will I be able to find a Rails developer when you leave?

How will they be able to find a .NET or JAVA developer when you leave?
The more popular a language it seems the greater the shortage of
programmers for that language. There maybe 100,000 .NET developers and
250,000 Java developers and only 10,000 Ruby developers. However that
is meaningless if there are 200,000 .NET jobs, 500,000 Java jobs and
only 8,000 Ruby jobs. Who do you think will have a better time finding
a programmer?

  • How do I know this isn’t just a fad?

This is the most bunk argument out there. Simply put, how do you know
that proprietary vendor will be in business tomorrow? The minute they
scoff. Point them to TWO large and SIMPLE samples.

  1. Peoplesoft. Ask how customers who bought $20 million in software
    stack are looking for 3 years of support before their product is end of
    life? You see there is ALWAYS a bigger fish. So today you use platform
    X, Y, Z what if it gets bought out and shelved? If you were around in
    the 80’s Borland seemed like the big tool provider. Until Microsoft
    entered that space.

  2. RIM (Blackberry). For those of you who say no one is bigger than
    Microsoft so they are safe. There are these little things called
    patents. They can effectively render a project in a state of hostage
    over night. Look at what RIM is facing with a little patent dispute.
    If you think that Microsoft is immune they have had to deal with this at
    least two times in recent memory. One of the major ones was with a
    patent concerning MS SQL Server.

Rails is immune to #1 because you have the source. If someone stops
development and turns it proprietary you have the code to keep extending
it. #2 you are in control of, since you have the code you can verify
patent disputes without having to wait for a trial to unearth things.
You can make your own decisions and do your own due diligence.

  • Is it secure? Stable? Fast?

I think sufficient demos should cover stable and fast. Nothing is
“secure” just by being. I think it is more indicative of how your IT
group puts emphasis into development.

  • Can’t you just do the same thing in PHP?

Yes and no. I can drive from Phoenix to New York, but it is not as
nearly convenient or timely as flying from Phoenix to New York. Of
course, a misguided skeptic might suggest that flying is much more
dangerous than driving because after all people generally die when a
plane crashes.

  • How do you know it won’t break the other stuff running on the same box?

Easy answer is run it on its own box. :slight_smile: I sufficient box now a days is
well under $2500.


Derek Neighbors
Integrum Technologies

“Redefining IT”

On 2/11/06, Karl B. [email protected] wrote:

I do not want to disadvocate Rails. Some of these points are even
easily challenged, some are real concerns that must be weighted against
the advantages. It is good to know what arguments might come, when
advocating RoR. Did I miss any point? Or any language XYZ?

Just one.

“RoR does not work with our existing emphasis on integrity in the
database through appropriate use of rules, triggers and functions.”

The only answer to that is, “Stop using the database to enforce
access, integrity, and business rules.” That’s not going to fly in a
lot of places. Particularly an Oracle shop.

  • Ian

web based reports, I turned back to Ruby, and a few months later we
As far as arguments and strategy go I simply 1. used Ruby whenever the
language platform was not dictated and it was a good fit, 2. was sure
to tell people that I found Ruby a very productive tool. Nothing more
was required. In my experience, being patient and letting my
productivity with Ruby do the talking has been a very effective
argument. I try to do work that is fairly visible and which I am
confident will create value for others in the organization. When end
users are excited, people are interested in hearing the story of why
it works and it makes things stick in the brain.

I agree wholeheartly. I’ve been doing something similar here - develop
my
ruby knowledge on everyday tools (scripts, builds) to realise I find it
very
productive (and it shows).

Additionally in many shops these days more than one language may be
workign
with a database at any given time. While the idea of “enforce it int he
code” is a nice one for a small development team with oen tool it makes
a
lot of sense to allow the database to “protect itself” and assure the
integrity at that level.

Soulhuntre


http://www.girl2.com - my girls

http://www.the-estate.com http://www.the-estate.com/ - my legacy

http://wiki.thegreybook.com http://wiki.thegreybook.com/ - my project

http://weblog.soulhuntre.com http://weblog.soulhuntre.com/ - my
thoughts

Just one.

“RoR does not work with our existing emphasis on integrity in the
database through appropriate use of rules, triggers and functions.”

The only answer to that is, “Stop using the database to enforce
access, integrity, and business rules.” That’s not going to fly in a
lot of places. Particularly an Oracle shop.

There’s another answer, “Yes, Rails does work in that environment, it
just takes a wee bit more work.”

We’re running Rails on Oracle and Postgres (meaning that we can deploy
to either and our continuous integration system only says “success” when
the app works on both platforms correctly) for our application and we
have a lot of constraints, we have triggers, etc. We have all the
auditing and permissioning and constraints headaches that come with
being HIPAA/Sarbanes-Oxley/clinical trials compliant. That requires
that you get help from the database, requires that you can’t allow
people to delete or modify certain types of information (and other types
will let you change but with strict audit requirements), requires that
viewing certain info gets audited, etc.

We had to change some things about how we use fixtures, for example, and
we’re building our database by SQL scripts still (but mostly because we
started before Migrations were available), but Rails works just fine in
this sort of environment.

Rick

http://www.rickbradley.com MUPRN: 44
| needed attention
random email haiku | to issues of IP rights in
| the digital world.

On Feb 15, 2006, at 7:56 AM, Thibaut Barrère wrote:

Just a survey but how many people actually use transactions in RoR
applications ?

Raises hand!

Perhaps it comes from not having started with MySQL, but instead a DB
that
supported transactions.


– Tom M.

“RoR does not work with our existing emphasis on integrity in the
database through appropriate use of rules, triggers and functions.”

The only answer to that is, “Stop using the database to enforce
access, integrity, and business rules.” That’s not going to fly in a
lot of places. Particularly an Oracle shop.

I’m wondering: in some apps concurrent data modifications is likely to
happen. If the integrity is not guaranteed at the database level but in
the
code, then I probably have to use transactions.

Just a survey but how many people actually use transactions in RoR
applications ?

cheers

Thibaut