Hands on With the Ubuntu SDK Beta
The Ubuntu team released the first beta of their integrated development environment for creating applications for desktop, mobile, and, presumably, television today. I downloaded the environment into a clean Ubuntu install in a VM to test it out, and was pleasantly surprised at how quickly I was able to get up and running. I ran through two tutorials, one I was able to complete successfully, and the other I was not. There are a few rough edges, and the release is certainly a beta, but it looks promising and gives a positive first impression.
The development environment installs with a few simple apt commands, downloads quickly, and weighs in at around 270MB.
sudo add-apt-repository ppa:ubuntu-sdk-team/ppa && sudo apt-get update && sudo apt-get install ubuntu-sdk
Once installed, launch "Ubuntu SDK" from Dash and the QT Creator application will load.
I ran through the first tutorial, a currency converter phone app, and was very surprised at how quickly the phone environment launched on the desktop. I say "phone environment", but in Ubuntu there is very little difference between the desktop and mobile devices. The Ubuntu Unity environment is the platform, and it is a single platform for all devices. The screen sizes are measured using grid units, so there is no need for precise placement of user interface elements.
A key feature of the Ubuntu user interface toolkit is the ability to scale to all form factors in a world defined by users with multiple devices. The approach taken has been to define a new unit type, the grid unit (gu in short). Grid units translate to a pixel value depending on the type of screen and device the application is running on.
Measuring screen size in grid units, and running the application in a high level language provide a fast, native way to develop. In contrast, to develop for the iPhone requires a virtual machine running iOS and the developers application inside of it. The virtual machine provides a fairly good test of how the app will run on the phone, not perfect, but not bad. Ubuntu's approach of abstracting away the hardware seems like a more seemless development experience, but it will be interesting to see how that experience translates into running phone applications.
Rough edges and oddities are to be expected in a beta release. What is important is how simple it is going to be to develop universal applications using this toolchain. Ubuntu's ambitious goals of a single open source platform for all levels of computing is well paired with this SDK. I imagine amazing applications being built that work seamlessly across phones, tablets, computers, and televisions, iterating quickly because there is a single code-base shared between them. The best outcome we could have is for wide adoption of the SDK to push a more unified experience for Linux applications. The worst, and what I fear, is that it will be so easy to create for Ubuntu that we will be flooded with simple garbage scripts that offer little and obscure the few gems that are sure to be built.