Hands on With the Ubuntu SDK Beta

by Ostatic Staff - Jul. 25, 2013

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.

The main three-paned view of QT Creator reminded me of Xcode development on Mac OS X, and the many brackets and import statements of QML reminded me of Objective-C. However, the language is actually dependent from JavaScript. Since the Ubuntu SDK supports developing applications using either QML or HTML 5, developers with either a web development or iOS development background should feel at home.

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.

During the second tutorial I attempted, a QR code scanner, I ran into a couple of issues. First, I was given an error when attempting to add a javascript file to the project. Second, each time I was able to add a file to the project I needed to close the entire project and reopen it for the IDE to recognize the new file. Another oddity I noticed is that the desktop environment did not seem to associate the project files with QT Creator, so if I exited the development environment entirely, I would need to relaunch it and then use the "File" menu to reopen the project instead of double-clicking on the project file in Nautilus.

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.