Hacker News new | ask | show | jobs
by jharrison 5478 days ago
And how bad would it be if it wasn't so successful? Apple gets to point fingers at Microsoft for not being able to keep up if things go south.
1 comments

That would only matter if Apple was having infrastructure problems. If people just didn't want the product, those claims wouldn't make sense.
From a logical standpoint, you are correct. From a marketing or political (business, no government politics), Apple could blame Microsoft for iCloud failing, regardless of the truth, to a point.

To put it another way, I frequently tell people "Businesses choose Java because if it fails, it isn't because they choose Java." This means that if the Director of IT says to build with the industry standard of Java (or .Net), it is not the Directors fault if/when the project fails. The project manager, the developers, QA, middle management, etc failed to do it correctly. It is a safe choice since it is industry standard and thus well proven. If it takes longer and costs more, it means it was a much more difficult problem then they expected, but since they used Java they got it working.

If on the other hand, they went with Rails/Django/Node.js/Erlang/NoSQL/etc, and it fails, the Director chose to use "new and untested" technologies, he/she is the root cause. Regardless of the fact that it could just be that realistic goals/management were never used.

I am not trying to say Azure is industry standard or the safe choice, but the way to shift blame is the same.

Considering the amount of none trivial work about having to port your apps from one Rails version to the next I would be surprised if the Director didn't get part or most of the blame for forcing them to use Rails. And saying that they could just stay in an old version is not valid. When bugs are discovered in the old version most likely they will not be fixed because everybody has already moved on. Enterprise projects already have a high rate of failure and building it on a platform that has a history of making substantial changes on every new version is a really, really bad idea.

An honest risk analysis of the enterprise project would raise a huge red flag for using a technology that continues to change substantially in every version such that it is not backwards compatible.

> When bugs are discovered in the old version most likely they will not be fixed because everybody has already moved on.

Is this a real problem? If you encounter a bug in an older version of Rails, why not just fix it and carry on as usual? Fixing bugs is part of the job of being a developer. If you are afraid to fix bugs, your application isn't going to last long no matter what language, framework, or platform you choose.

I'm talking about bugs in the Rails framework. I think very few people would like to be having to maintain an outdated framework. And for the ones that actually do decide to maintain a framework that they did not develop themselves it will cost them a lot of money.
> I'm talking about bugs in the Rails framework.

I think skidooer was as well.

> I think very few people would like to be having to maintain an outdated framework. And for the ones that actually do decide to maintain a framework that they did not develop themselves [...]

How is maintaining an open-source framework that somebody else made different from maintaining a framework built in-house? At the end of the day, bugs will still be found and need to be fixed. Yes, your devs might be more familiar with your framework than with a third-party one, but I think that is only the case if you can keep your team small and prevent churn and specialization. Regardless of which direction you go, devs need to understand what is happening inside the framework - it can't be a magical black box.

> [...] it will cost them a lot of money.

More than writing something from scratch?

I too was talking about the Rails framework. It's actually a really nice read. I've fixed a couple of bugs in it myself.

The thing to remember is that each major release of Rails is fairly well tested. The number of actual bugs you are going to encounter are low. The investment in fixing them is therefore going to be low, should you actually encounter any to begin with.

The Rails codebase is simply an extension of your own codebase. While it is not fun to fix bugs in any capacity, there is no reason to fear fixing bugs in third party code. It is no worse than fixing your own, which also costs a lot of money.

I've been using Rails since around the 0.8 release timeframe. I have seen many major changes along the way. They have all been positive improvements to my workflow and the theoretical issues you describe have never been real issues. I still have one app chugging away on Rails 1.1 and it works just fine. The only problem it has is that it is not nearly as fun to maintain because it doesn't have all the newer major improvements. It would be a sad day if we had to go back to, or were still using, the 1.0 API. The Rails people are doing the right thing.

And it was non-trivial to go from Java 1.4 to 1.5.
With all due respect, I don't know what you are talking about. Programs in 1.4 run fine in 1.5. Every time there is a new version of Java I install it in my machine and just continue working as usual. I would be really upset if I had to spend time trying to make everything work again with every new version. They deprecate methods and functionality but they do not remove it. Java is not that much older than Ruby/Rails and it is pretty stable. Ruby/Rails may be great but I really don't want to go through the pain of having to port my code to the next version. I rather spend my time on adding new features.

Even Android, which is many times younger, never does this. Everything is always backwards compatible. Android developers would be up in arms if they just decided to break all apps in a new version of Android. Granted, it could still happen because nobody is perfect. Although it has never happened in any of my apps and I don't know if it has ever happened at all except for the early Beta period. When something is no longer supported they deprecate the functionality but do not remove it.

1.5 did introduce at least one major backwards incompatible change. A new keyword which meant any variables named enum now broke the app.

Installing a new Java version on your desktop to run some app is different than rolling out a new major version of JVM/language for an enterprise application. There is a lot that went into ensuring everything still worked, including all dependencies, and that performance was acceptable. Maybe heap options needed to be changed because of how GC changed.

> Java is not that much older than Ruby/Rails

According to wikipedia: Java = 1995, Ruby on Rails = 2004