Wouldn't this make a successful iCloud even more embarrassing for Microsoft? They have the technology, but can't market it or make it easy for consumers to use?
37signals takes Rails and makes the products they intend to make.
Microsoft has attempted to make a successful cloud platform - their commercials all proclaim, "To the Cloud!" - and yet, they fail, while someone else takes their technology and (potentially) succeeds.
>Microsoft has attempted to make a successful cloud platform - their commercials all proclaim, "To the Cloud!" - and yet, they fail, while someone else takes their technology and (potentially) succeeds.
I don't really think that MS has targeted Windows Azure towards the general consumer market, though. It's basically the same as Amazon Web Services. Apple using that tech gives them an incredibly strong marketing tool, especially for companies that are trying to decide between using Amazon or something else for cloud-based services.
I think there is a difference. Microsoft has tried to build and market various synchronization/collaboration/cloud solutions for over a decade, without any success to show for.
If Apple succeeds with iCloud, and that's a big if given their own track record in the internet space, it'd ought to be pretty awkward for Microsoft.
I'm not sure if Windows Live Mesh is their latest cloud offering or the one before that, or whatever, but Windows Live Mesh certainly is marketed towards regular consumers:
Yes, in the land where everyone is logical and only makes decisions based on pure reason, that's true. But on planet earth, people act irrationally.
From a strictly logical sense, it's meaningless. But symbolically, it says a lot. The fact that Microsoft failed at something and then got bested by someone using their technology is symbolic of how far Microsoft has fallen.
Well, I think my reply stands. What I'm trying to say is that just because Apple made a successful product on top of Microsoft's infrastructure, it doesn't reflect badly on Microsoft that they didn't do it first - with Azure, it wasn't their intention to build a cloud-based product - it was their intention to build an infrastructure to support cloud-based products.
Microsoft has 'cloud services' baked into Windows Phone, but doesn't have the market penetration for the product recognition.
In the current release, contacts are automatically synced, I'm not sure about calendars, and photos, video and I think office can be set to automatically sync.
From my understanding there is deeper integration in the next release (Mango).
So Microsoft is there and doing it, but they aren't competing in the same marketing space as Apple, and it seems few people know Windows Phone even exists.
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 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.
Well, I guess we just have to agree to disagree. When choosing a framework one of my criteria is that somebody else is doing all the work to maintain it so that I can benefit from their work. If I have to maintain it then what is the point? I'm trying to save time here, not add more time to my schedule.
Rails is a fast moving target because they are always looking for new ways to save you time. As I mentioned in a previous post, the Rails 1.0 API is painful compared to the current generation. You are saving massive amounts of time during development because the project has evolved so far.
Spending a few minutes patching a framework bug once every five years pales in comparison to the gains you are seeing in development time.
To each their own, but I'd rather have a framework that is better than have a framework that knows it could be better, but won't make the changes because it might break some several year old app.
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.
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.
It makes sense for Apple to outsource this but I wonder if this is going to limit them down the road. I think Google has a tremendous advantage with their in-house expertise and infrastructure here. My instinct is that it's harder to get that right in the long run than it is to build acceptably user-friendly interfaces. The real connaisseur may continue to prefer Apple UI but Google's good enough for the rest and I won't be surprised if cloud integration becomes the key differentiator down the road.
Sun was right on the money when they claimed that "the network is the computer". They were just a decade too early.
That's like saying that Google's prowess with map-reduce is irrelevant because we also have Hadoop. This stuff is very hard to get right and nobody does it better than Google.
Apple are most likely wanting to concentrate on their core competency (making the iCloud product) and not have to worry about (more) data centers/storage/etc to support the product.
As others mentioned it sounds like a good win for both parties; Apple get to concentrate on the product directly, Microsoft get to concentrate on their code competency (providing the hosting).