Is the Cloud A Good Thing For Computing?
The transformation of the home computer to 'The Cloud' is a very substantial change.
It represents a whole host of changes to all the stake holders in the computing process.
I want to focus this article more on the benefits of the cloud of the technical side of computing. However, I will briefly touch upon how it affects the other stake holders.
What is Cloud Computing?In general, cloud computing means the bulk of the processing is done on servers hosted by someone else. The user only acts to supply input and view output on their computing device.
For example, the popular email service GMAIL is an example of cloud computing.
Google stores all your emails.
Google does all the processing of receiving/sending/searching for emails...
You only interact with a webpage that lets you input and view emails.
The opposite of cloud computing is what I will term 'local computing'.
Using Microsoft Word on your desktop is an example of local computing.
You install MS Word on your desktop.
Your computer stores all the documents.
Your computer does all processing (spell check, formatting...)
How It Affects Ordinary UsersLow infrastructure costs. No software to install. No servers to maintain. All you need is a network connection.
Easy to get started. No installation required.
Predictable costs. While not inherent to cloud-computing, most cloud services offer predictable costs... such as monthly plans.
Increased Reliability. Cloud services tend to do their own backups and tend to be more reliable than individuals running their own programs.
Increased long-term costs. Not inherent to cloud computing per-se, but as you have to keep paying subscription fees, you can end up paying more than if you could purchase a local copy.
Increased dependence on the provider. If something goes wrong, you are at the mercy of the provider to wait for them to fix it.
How it affects Software DevelopersAn interesting consequence of the cloud and the tendency to use subscription services is it provides constant cashflow. There is no reason to *force* users to upgrade.
Consider a physical copy of Microsoft Word. A user might have paid $200 for it and it does a decent job for their word processing needs. Microsoft does not get any recurring revenue from this user. This is obviously not a good thing for any company. It is especially bad for software companies as 'software' does not naturally break down. For example, when buying a car, a customer does indeed purchase the car outright. However, auto-manufacturers know that the car will break down and the customer will inevitably need to purchase a new car.
With software which does not degrade with time, for the company to gain recurring revenue from a customer to keep the product alive, they must find ways to extract revenue. Assuming a purchased software arrangement, these typically these involve.
1. Keeping bug fixes and new features strictly for newer versions of the software or in service agreements; thus forcing the users to update. Buggy software is also very useful for pushing users to upgrade.
2. Introducing newer incompatible formats. For example, a user might have bought Word 95. However, years later, his friend buys Word 2005. When his friend tries to send him a document, he cannot view it in Word 95. The user is forced to upgrade. The introduction of incompatible formats can be done for legitimate technical reasons. However, there is no denying the appeal to force upgrades.
3. Encouraging incompatible environments. This can include basing a new version of software on a software component found only on newer versions of software. Once again, this can be done for valid technical reasons. Yet, it can equally be done to force eco-systems to upgrade.
Indeed, forcing such upgrades is not uncommon in many other fields.
Consider simply the auto-mechanic who maintains a car. They can suggest items to replace that don't need replacement or even cause issues that need to be addressed.
The result of all this is a lack of focus on the quality of the product and service delivered.
The Subscription Game ChangerHowever, a subscription paradigm begins to change the game. Under a subscription form, a user is likely to stay with a provider that provides the best service. The provider has not other motive except to provide a great service. This of course excludes monopolies who would abuse their position :)
Under a software subscription agreement, software companies no longer have to be concerned with forcing upgrades, forcing incompatibilities, forcing a dependence on service contracts to fix bugs and issues... All of these fundamentally introduce an incentive to reduce the quality of software.
The software companies can then focus their efforts exclusively on providing the best service/software. Doing so will win them a user base and constant cash flow. Consider such companies as Google/Netflix/Amazon... all of which tend to provide software as a service.
While this is certainly not guaranteed to occur, it at least removes a likely incentive to act against the best product/service.
Software FreedomThere is certainly an argument that software freedom will be impacted by the cloud as users are no longer owners of software and possibly even the data they own.
there is certainly a free-software base within the software world that is very concerned with such moves.
Here is Steve Wozniak comparing the cloud to communism for example.
“Nowadays in the digital world you can hardly own anything anymore,” he said. “It’s all these subscriptions… and you’ve already agreed that every right in the world belongs to them and you’ve got no rights. And if you’ve put it on the cloud, you don’t own it. You’ve signed away all the rights to it. If it disappears, if they decide deliberately that they don’t like you and they cut that off, you’ve lost all the photographs of your life… When we grew up ownership was what made America different than Russia.”
Better SoftwareThe result of all this is the possibility that software as a service will actually allow software developers to create better software as they are freed from trying to have users upgrade.
As a service, users will also begin to expect reliability. That too will focus the attention to software quality in the realm.
Yes, we do lose some software freedom, but we as software developers also regain the freedom to build quality software instead of forcing users to upgrade. It's an interesting way of looking at it.
I do not wish to discount the software freedom arguments against the cloud. I just don't think enough software developers think about the benefits of cloud computing as it relates to their ability to write quality software.