📜 ⬆️ ⬇️

Ubuntu Phone, Core Applications. Inside view

Good day, habrachelovek!


image


On the Ubuntu homepage again the countdown. The signature reads "The line where / two surfaces meet." I don’t know which event it is timed for, but in the comments on one site they make fun of joke - “Canonical will release fridges with Ubuntu”. And if we are talking about Ubuntu Phone, the signature is very true. On the one hand, a squall of negativity (“Another mobile OS”, etc., etc.), on the other - a sincere desire to see the release of your favorite OS on your smartphone as soon as possible. As you can remember, along with the announcement of Ubuntu Phone, it was also reported that volunteers were involved in the development of 12 basic applications for this OS (core applications). It turned out that being a member of one of the teams, I have some information that may seem interesting. The article does not pretend to “look from the very first rows”, but in the format of a simple narration it tells about some details of our work from the inside. In addition, I remember, I promised to share information about the process. On the other hand, I cannot tell everything without emotion, so the article contains many non-technical details and artistic narration. But if you are interested, please under the cat!
')
How it all began

And it all began (like many beautiful things) with a spontaneous decision. It just so happened that before that I had not participated in the OpenSource development, but I always wanted to, but here I also felt that “matured” as they say, and the specifics of my development, Qt Quick. Filled a simple form on the site. It just needed to specify your own level of C ++, QML and JavaScript. While on honesty, there were no checks. Sent and forgot. A couple of days later, a letter arrived, the content of which doesn’t make sense to quote, in short, “You are right for us, we have chosen you to participate in the development ... drum roll ... RSS Reader!”. It remained only to say "I agree" and ... it started!

Team building

At first I was very frivolous about the subject matter of the application. "Anyone can make an RSS reader." Even in the examples of working with XML, and often the news feeds are parsed. And, formally speaking, I was not mistaken, because creating an RSS Reader is a fairly simple task. However, creating an application worthy of Ubuntu Phone, full of its concepts and innovations, flavored with the spirit of Ubuntu is not. But I came to this a little later, but what was then? Then I just wondered why the team recruited 15 (!) Members (note, not a person). The minus canonical workers, project managers, and bots (like Jenkins) remained 7-8, which nevertheless seemed overkill. However, this is undoubtedly a proven solution. In the first days, not even the development, but only the process of becoming, several people immediately retired. Someone has personal problems, someone has a family, someone's time is over, someone's cat has a birthday =) But the fact remains. In total, there are only three people left in the team: me, Joey (China) and Sven Arne (Sweden. I'm not sure I wrote his double name correctly in Russian). Both of my teammates are quite experienced in development using Qt (4 years on average) and QML (2 years). But even with such an experience, they sometimes surprised me with their bikes. We had a classic start, "Swan, cancer and pike", who is in that much. Probably everyone doesn’t, I don’t judge, but we quickly coped with the confusion - hardworking Joey sketched a document with the main stages of development, while I laid the foundation in the form of the first working sample.

Goals and means

So, our goal was to develop an RSS Reader using Ubuntu QML Toolkit and Qt Quick wherever possible. The briefing also stated that a C ++ module could only be written in the most critical situation (for example, the guys from the file manager team, for objective reasons, resorted to using C ++ immediately). I want to say that Qt Quick is based on the entire graphical interface of the OS, which is good news for the adherents of the library.
At the first stage, our team found it difficult to overcome the problem of loading and parsing RSS feeds, which are plain XML, which the sophisticated reader probably knows. The XmlListModel is able to work with the url as a source, but it does not provide the required information for us when loading fails. Later we came to use XMLHttpRequest with the subsequent parsing in two XmlListModel (information about the tape as a whole and about its records separately). Nevertheless, such a realization was more suitable for a demo than for a real project, because it is a bit “naive” chtoli. Active work is underway to switch to using third-party services for working with RSS. To store information for reading offline, the Qt Quick Local Storage API was used (read SQLite). Not sure whether to disclose even more implementation details in the post itself, perhaps better to answer in the comments?

Development and cooperation

In fact, all our joint activities are resolved using the launchpad website. As a version control system, bazaar has been suggested. Before that, I didn’t have much experience in using git in personal projects, but it was enough to draw analogies with bzr and easily use the new version control system for me. The principle is standard - for a new feature, a new branch is created, which, as a rule, is personal, and then merges with the trunk. The benefit of Qt Creator (by the way, the custom version of the creator with additional menu items, etc. is included in the SDK) has built-in tools for working with bzr. The distribution of tasks occurs with the help of blueprints - documents with a list of tasks and binding to the developer. They have a very simple syntax, [name] task: progress. Progress can be TODO, DONE, INPROGRESS (Maybe more of them, but these three were in demand with us). The site has internal tools that allow you to visualize the execution of tasks in projects using blueprints. Visualization of all the progress of work on core apps also looks very informative. The site also contains an internal bugtracking system. Unfortunately, from time to time you have to register bugs for toolkit developers. By the way, these same developers often use not Qt Quick way in the implementation of a particular feature, I try to make comments in such cases too.

Meetings Cooperation with designers

We have weekly team meetings (managers are also present) on Thursdays, as well as meetings with designers on Fridays. At the internal meetings (which take place in the IRC), first of all, they try to find out if there are any locks, if everything is going well, if we have time for it, etc. One word organizational issues. Oh, it turned out two =) Friday's meetings are a bit more interesting - we talk using Google Hangouts. For me personally, this is not an easy practice of speaking English including (the benefit of none of those present is usually a native speaker, forgive mistakes). We discuss the subtle issues of the implementation of certain functions of the application, the issues of internationalization and so on. Someone Lisette works with us. A very nice woman (yes, it’s a woman who is not a girl at all, for the first time I was even a little surprised that the designer of such a project was not a youth; later it turned out that she was a very experienced person and who was passing through UX), she was good to herself and quickly developed the concept design, known as “Shorts” - this is how our RSS Reader began to be called. Now we are just working on bringing the external to its design.

Core Applications Progress Overall

No wonder that several applications took the lead. This is a calculator, weather and clock. Again it will be a mistake to say that they are simple, but the work on them will be nicely paralleled. Others have lagged behind - the saddest thing now is with the mail client, as far as I know. There will actually be a complete re-team. Documents and the terminal develop in its own way, without any special breakthroughs and remaining. Until recently, the file manager was full of bugs, Hack Days was actively working to improve it.
It is worth noting that out of 12 applications, four were singled out as social. This is Facebook, Youtube, Twitter and RSS Reader. At the moment, only our project is alive) The rest were stopped because of some confusion with the rights and dissatisfaction of companies. A holy place is never empty, so new ones appeared in their place, in my personal opinion already “less basic” applications, like Sudoku.
In August, all projects will have Beta. In September release. Now about Alpha-2.

He told a member of the RSS Reader development team as part of the program 12 Core Applications for Ubuntu Phone.
I am ready to share all the information that I forgot to mention in the article for the reasons of the late hour, so ask questions!
UPD After a couple of days, I will ask a bunch of questions that I can’t answer exactly, to anyone from Canonical and add answers to the post!

Source: https://habr.com/ru/post/187284/


All Articles