Getting Started With App-Development

  • Hello everyone,

    I recently installed the Ubuntu Touch OS on my nexus 5 and actually I like it a lot.

    Its a nice toy for someone with an IT background. It opens up many possibilities. I do not have with android or IOS.
    However the app support is lacking so far. There are not many quality apps in the store. And some essential stuff which everyone is using these days is missing.

    I wondered what it would take me to get into app developoment for ubuntu touch.

    I didn't dive to much in the documentation for app development with ubuntu touch, only so far that I know that
    development has to be done with QT, QTQuick and some bindings wich work with QT (and probably runs on Ubuntu Touch out of box).

    My Background:

    I'm a professional software developer and have worked over the years mostly with C# and java. With these two languages and there respective environments I feel very confident.

    At times I had to use other languages but never seriously for long, only for minor tasks. So I'm not really familliar with them anymore. Among them I learned some C/C++ during my academic studies years ago, but never really used it beyond that. Occassional I had to use some Java-Script, I'm not a big JS geek but I supose I could work with that.

    I just learned kotlin on my own and so I do like to dive deeper with custom projects by using that language. I also had a small peek into android development, but so far did not do any real projects.

    I don't really want to learn new languages now, as that takes a toll on the time I have available.

    However If I opted into learning new languages I would probably be interested in python or rust (as it seems they can be used for programming apps on ubuntu touch as well)

    I like the approach of QML. Writing UI with a simple special purpose language and writing actual logic with a more general purpose language makes sense to me. Just I don't like to work with C++ (but it seems usefull since most apps so far have been written in c++).

    Refreshing my C++ knowledge would count as learning a new language. I'm not so keen on learning C++ now.

    So the following questions came to my mind:

    • Considering my current skill set, whats the fastest way to get me started with App-Development for Ubuntu Touch?
    • Is there a way where I could just start immediately programming (head jump) , that means writing real apps?
    • Has anyone written apps with mono and QT for ubuntu touch? Does this make any sense at all? Would it run out of box and could I deploy it to the app store or would it require more work for other users to set it up so that they could then run the app as well?
    • With which choice in technology could I write the most reliable, most performant software which runs on Ubuntu Touch out of the box (without concern to my current skillset)?

    Update: As a suplement I want to add, that I like to develop the same applications on windows and linux at the same time, since I have different systems with different OS running. I hope (and assume) thats possible with QT, QML and ubuntu touch (emulator for mobilephone?). My Windows machine is pretty strong, so I could also setup an emulator and run Ubuntu inside, if that makes more sense regarding the work with the Ubuntu SDK.

  • @MadProgrammer
    Hi, welcome here.
    The easiest way for you to start developing for UT is :
    1- Familiarize yourself with clickable
    Basically it provides a docker environment to cross build your app and also provides a way to run your app in desktop mode on your computer too.
    2- Then you'll need to learn a bit of QML, that's not complex but you need to understand how it works and how to build the UI you want.
    For that, I'll suggest you start with a simple UI with some javascript for the backend.
    This is doable with a the pure QML template in clickable.

    IMHO, the best performance can be achieved with C++ plugins and QML/js frontend.
    But it's also good with python.
    To start, you can join the following matrix channel :
    There, I think it's Jonny, it is advised to learn rust as it is low level and easier to handle than C++.
    I personally never used or read rust code, so I wouldn't say...

    And you can also read this post :

    I hope you may contribute to new, native, high grade apps to UT.
    I share your opinion that the only thing missing to UT is more high grade apps.
    I love being able to have simple webapps to access and isolate sensitive websites, but it looks poor when you only see this kind in the OpenStore.

  • @MadProgrammer hi and welcome here around 🙂 I'm not a real expert but very recently I started to develop an app for Ubuntu Touch Platform from scratch and without any experience (this app) and what I can tell you is that exploiting the clickable tool we use to compile and deploy the app on the phone is very easy and fast to be soon on track. As an editor you can use whatever you want but I like employing Atom together with clickable, activating a clickable plugin from within the Atom editor, as suggested also by the clickable developer. To learn more about clickable, please visit this link.
    If you want to avoid the steep and difficult learning curve I was eager to travel (for my app I needed to learn and employ C++, Qt/QML, bash and javascript), you can develop an app in a pure Qt/QML language which is by far the easiest way to be soon productive; there are some apps you could also use as reference which are only made in Qt/QML (for instance see Palitan). Don't forget to start from a pure QML template, clickable gives at your disposal to be even faster on track, by typing clickable create as your first instance with clickable. Once ready to publish your app, you could as well use clickable and it doesn't even need manual review by third parties if your app is confined.
    Enjoy your time with UT.



  • Hi, and Welcome 🙂
    Maybe not an advice but here is my own journey that i've done to develop apps.
    I've first learned Qt QML (QQC2) in general, make an app that is quickly testable with QtCreator, resource e.g:
    To learn QML i advise to use a Live reloading app so that it can be easy and quick to test
    Then i've started to hack on c++ part with existing applications.
    And then learn the UT platform specificity ( click packaging, plaform constraints, UI toolkit, content-hub, etc... )

    Good Luck!

    Regarding UT and the lacks of important apps (i don't know which ones 😉 and it fully depend on your phone usage). It is important to notice that most of current mainstream apps are locked down, and that they will not allow to develop ourselves something

  • Hey everyone, thanks four replies! That helsp alot.

    So it sounds like the most usefull thing would be to dive into QML and make myself familiar with ubuntu clickable.
    From that point on I could still decide wheter I want to go with C++, Rust or Python.

    Thanks for all the links/recommendations that helps a lot. I will do some reading the next couple of days

    I think whats missing (or maybee just didn't find)

    • swipe like keyboard
    • a native whatsapp client
    • dictionary apps (for offline use)
    • e-book reader with dictionary support. ("sturm" is very good, but lacks that functionality)
    • native music/video streaming clients (amazon?)
    • banking apps (e.g. for two factor authentication)
    • local public transport apps

    (I know some of that stuff is unlikely to be ever covered, but some gaps can be filled)

Log in to reply