“The Cloud is coming”. Actually,
it’s more like “The cloud is here”. It’s being forced upon us on every platform
(Almost every platform, at least, Windows, OSX, iOS, Ubuntu and Android). With the spread
of smartphones, the cloud now not only makes sense but is also useful.
Let me go back a step to make a
distinction.
There are two meanings for the
word “The Cloud”:
- One is common in IT departments, although not very popular, I assume. Think Amazon Cloud Services, and Windows Azure. We’ll call it the Cloud.
- The other is common between end users. Think iCloud, SkyDrive and Office Web Apps. This is more like Cloud Services; it’s services that live in the Cloud.
Only an advancement in the first
made the second possible. Giant software companies are now building these huge
data centers that can be used in a very efficient way. Unlike before, when renting
a server meant that you actually were allocated a physical server (or a folder
on a server) in a certain data center. Those days, if the machine stopped, or
the data center lost power that meant that your web site went offline. Now,
your web application is hosted in a Virtual Machine that – along with 1000s or
other VMs – form a layer between you and the physical server. Now, the server –
or even the data center – can go offline and your application would still
continue. Maybe with few minutes of downtime if you were running a single
instance of VM.
Another advancement that is
directly affecting these cloud services is the spread of smartphones and
tablets. These cloud services play one of two roles:
- Back-end to an application that runs on two different devices and shares state through the cloud. The simplest example is a text editor running on your phone modifying a file on Dropbox. Every time you modify the file, it get synced to your computer where you can continue your edits using a different text editor. These are two different applications running on two different devices, yet they’re sharing the state of the data they’re manipulating.
- Server-side application available on multiple platforms. Think Evernote. You can access it through your phone, your desktop client, any web browser. You think it’s the same application which technically is not true. There’s a web application, maybe written in Ruby. A Windows client that could written in .NET. An iPhone app written in Objective-C. These are three different application that share state through Evernote’s servers but more importantly they share a lot of backend services like OCR, search, archiving, and other. That’s why you consider it one application. That’s why it’s one application.
In either case (and they’re very
similar) the cloud is extremely useful. Being able to move seamlessly from one
device to another is incredible and we’re just starting. In few years, we
should be able to move from one device to another for a much larger number of
applications that we do now. As more applications is built directly to the
cloud, compared to now where web applications are modified to include these
capabilities.
While the cloud offer a great
capability to users, it offers even bigger advantages to big software
companies. They now control your digital life. I spent the last five years of
my life writing all these tiny tweets, 140-characters at a time, all 36,000+ of
them. Now, I can’t get them back. Twitter has sucked them into a void. They
won’t let me download them. They won’t let me search them. They won’t let me
even browse them. Meanwhile, Twitter is building this profile of my interests
and feeding me all these ads about all the silly things I demonstrated that I
care about.
I can’t get out of Twitter, I’ve
invested five of years into it. I’ve built networks of friends. I need twitter
more than they need me, it seems. When you cut off 3rd party developers,
or block my favorite desktop client or change the terms of services; all are things
I don’t agree of, but not enough to make me leave the service.
Same goes for many other
services. After a while, there’s nothing you can do about changes to the
service when you don’t agree of them. Google can change Google Reader by
shutting down sharing, and force you to use Google+, but you won’t leave. Facebook
can change their terms of service or privacy policy, and you would just click
“I Accept”. Nothing you could do really.
Let me sum up what I see is the
problem with these services in three – not so – brief points:
- Privacy: your data is not just yours anymore. Your data can be mined, copied, passed to law enforcement, peaked at by bored employees, or stolen by hackers who are now shooting at larger targets.
- Freedom: you may only run the features and functionality that are available and permitted by the software vendor. If the vendor upgrades the service to include more – or less – features, you have no choice to roll back to another version. If you’re using a feature that only few users like, that feature will likely be removed. Your online petition won’t really help bring it back. You may integrate this software with other services that are permitted by the software vendor. If there’s a service or functionality you’d like but is not available, you can’t easily build your own. You’re being handed fully cooked meals instead of ingredients you can put together to make something new.
- Competition: these companies that are building full solutions are the ones in a better position to survive the competition. If you’re building a service that does only one thing, (I’m looking at you, Dropbox) you are at a worse position than your competitor whose building two things into their service (to follow on the example, iCloud and SkyDrive). Integration. Windows 8, and the whole family of new Windows products, is built on the promise of integration. Windows on your phone, Windows on your PC, Windows on your tablet, and Windows on your Game console and TV set. Companies that are building two features/things into their service have an incentive to make you use their new shinny third feature even though it’s much worse than the competition. They can integrate it better than the competition. Notice how ‘Files’ are taking a back seat in all these services. There are no files any more. On your phone, there are no files, there are only apps. People think of files are a pain to handle, because there are so many of them and you have to arrange them in folders and remember where you stored them. They are a pain. But files are very important because they allow for mobility of your data. Any application that can read this file is an application that you can move to. If one application does a certain feature that your default application doesn’t do, you can move to it as long as it can read that file format. Some applications use proprietary file formats but eventually open standard file format tend to dominate. With apps, you can’t move from one app to another because there are no files. You’re stuck with that app.
You can look at these problems
and think that they’re not very important or that you don’t affect you very
much or even think that it’s a natural advancement or how computers work now. I
see them as warning signs.
There must be a solution.
I consider the benefits of the
cloud and cloud services to be huge. It’s something that you can’t live without
once you get used to it. Living off the cloud is not an option.
At its core, the cloud is a computer
that is always on running a certain piece of software. Actually it’s some
number of computers running each with a specific software. I have a Dropbox
computer, a Gmail computer, a twitter computer, and so on. If I can get these
pieces of software to run on my machine, and make that machine available online
and accessible to my phone and other devices then I would have my own cloud.
What I need is a Virtual Machine,
only accessible to me (or any service/person I give and control permission to),
that is running a server-side operating system and a software that replaces
each service I’m using. It would have an email server, a calendar, a cloud
storage service, a synchronization service, a node of social media, a blog, a
Wiki, and any other type of cloud service I’m using.
There are alternatives to a lot
of the services that any user is using daily. Instead of Blogger, use your own Wordpress. Instead of Gmail, use SmarterMail,
Zimbra, or Sendmail. Instead of Dropbox, use Tonido or SparkleShare.
Instead of Flickr or Instagram, use OpenPhoto. There are few services
that doesn’t have great alternatives but they can be built.
For such proposal to work, two three
key issues have to be addressed:
- Ease of Management: in any cloud service, all you need to manage the service is sign up. You don’t need to worry about updates, maintenance or troubleshooting any problems. Running your own cloud will definitely come a certain level of trouble. Think taking a cab vs. owning a car. It shouldn’t be so much pain. It should be relatively easy at least for techies in the beginning. With all these years of software development experience, it should be possible now to build a piece of software that is possible to troubleshoot by a non-techie. A dashboard with shiny gauges and handles should show status and allow control of these services.
- Integration: these alternatives, that I’ve listed some of above, are built in isolation but they shouldn’t stay that way. They should integrate to offer a complete solution. Either by bridges that are small pieces of software that makes one service communicate with another without being aware of it, or by all these services adhering to a standard API to perform most common tasks.
- Mobile Support:one of the main reasons of having a always-available service is to be able to access from your smartphone. Support for smartphones is a must for any cloud service, commercial or personal. This support can be through web or native apps, depending on the kind of service consumed.
Frankly, I don’t know what to
make of this idea. I’m certainly not the first to come forward with some sort
of proposal for a Personal Cloud. I’m aware of at least one other proposal (by @windley) which can be found here but it’s more of a complete
platform for personal clouds that require building a new type of operating
system. Promising idea but strikes more as a Computer Science project rather
than a piece of software than can be built and used in the near future.
I think this could be a big project that brings
together all the pieces of open source projects together in one proposal that
stands side by side with current offers from Apple, Microsoft and Google. Not
only that it would an alternative, but also it would be good for software and
for the benefit of users.
Update: Earlier version of this post didn't included Mobile Support as a key issue to be addressed when building personal clouds.
Update: Earlier version of this post didn't included Mobile Support as a key issue to be addressed when building personal clouds.
2 comments:
Very interesting post ya Amr. And I am sure someone like Eben Moglen will be happy to read it too.
I believe you are asking a very important question here. The same question people asked in the 80's that yielded the birth of Free and Open Source Software. The difference now is that the arena is different. With the cloud, the rules of the game are different now than they used to be, and the answer to your question is going to be another wave of free software, or let's say free software of today.
Now, back to your ideas, the thing is, do you remember openID, it was a very neat idea, and was supposed to solve the problem with passwords some how, but guess what, as simple as you and I see it, it was not that simple for the majority of the people to digest and start using. So, the issue with personal cloud idea, is that we need to find ways to make it as simple as today's cloud, if not simpler. People move to the cloud because they find it easier compared to installing their own software at home, and I se part of what you say involve people installing and maintaining their own infrastructure. The other reason why people move to the cloud, is collaboration, so there should also be a way to make those personal clouds interact and share data with each other in a standard way.
In my opinion, and I might be damn wrong, we need to find one service, just one, let's say Evernote or Instagram, and try to think how we can create a personal alternative to that service, and just focus on it, without being distracted by other services, and once we find a way to tackle all issues related to an alternative for that particular service, others will come naturally.
Simplicity, I think that's the key.
Even for techies, I don't think they want complexity in the tools that they use everyday.
I have two models that when combined should achieve what I'm looking for:
- Ubuntu's Software Center: It's not an "App Store", but rather a good way to discover, deploy and maintain all applications in one place. App Store is - sort of - physical store. Apple's App Store is a physical store where you have to ask permission to get in, and pay a fee to stay. Ubuntu's Software Center is not like that. I can publish my application to my website, then pass a URL to my users, who will just paste that URL in the software center, and now they can use it to install my application.
What the software center is missing is better discoverability. I can discover any new software as long as they're in a repository registered with the software center. There should be a backend that searches the Internet for these repositories and add them, or at least include them in Search Results.
Mozilla's marketplace, for example, allow developers to add a manifest file on thier website to indicate that their web site is an app. Then developers go to the marketplace site and submit their manifest. Now, users can easily find this app even though it's not hosted by Mozilla.
- Microsoft Web Platform: if you use IIS, you can install this free tool from Microsoft. It allows for installing web applications on your IIS server using a GUI that works like a step by step wizard walking the user through the details of installing requirements, creating database, and installing the application itself.
If you combine these two models and offer them though a Web UI (accessible through a browser rather than Desktop), users can search for a web application (like Wordpress), click "Install", then MySQL is installed along with PHP, a database is created, then Wordpress is installed and the configurations steps starts.
It should be this simple.
It should be as simple as installing apps on your phone. It's complicated and messy in the backend but it's super simple to the user.
This is the first time where installing web applications is targeted for end users and not web administrators. So, it should be this simple.
I can see your point, Tarek, about having a single successful app. I think that the idea here is to come up with a model that makes installing and maintaining existing web apps (mainly free open source apps) on existing OSs (mainly Linux). This should create an opening for more users to use these applications, creating a bigger audience, which should improve these apps. So, one app or more, I don't want to choose. I want to have a model where these apps (and their developers) can easily be modified to support this deployment model.
Post a Comment