Ubuntu Phone, Core Applications. Inside look

Good day, habrachelovek!


image


On the Ubuntu homepage, the countdown again. The signature reads “The line where / two surfaces meet”. I don’t know what event it was dedicated to, but in the comments on one site they’re joking - “Canonical will release Ubuntu refrigerators”. And if we are talking about Ubuntu Phone, then the signature is very true. On the one hand, a flurry of negativity (“Another mobile OS”, etc., etc.), and 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 core applications for this OS (core applications). It turned out that as a member of one of the teams, I have some information that may seem interesting. The article does not pretend to be a “first-hand look”, and in a simple narrative format, he talks about some of the details of our work from within. 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 has a lot of non-technical details and artistic narration. But if you are interested, I ask for a cut!

How it all began

And it all began (like many wonderful things) with a spontaneous decision. It just so happened that before that I had not participated in OpenSource development, but I always wanted to, and here I also felt that it was “matured” as they say, and the specifics of my development, Qt Quick. Filled out a simple form on the site. It just needed to specify its level of C ++, QML and JavaScript. Moreover, for honesty, there were no checks. Sent and forgot. A couple of days later a letter arrived, the contents of which do not make sense, in short, “You suit us, we chose you to participate in the development ... drum roll ... RSS Reader'a!”. It only remained to say "I agree" and ... away we go!

Team building

At first, I was very frivolous about the subject of the application. “Anyone can do an RSS reader.” Even in XML examples, even news feeds are often 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 - no. But I came to this a little later, but what happened then? Then I just wondered why 15 (!) Members are being recruited into the team (mind you, not a person). Behind the minus of canonical workers, project managers and bots (like Jenkins), there remained 7-8, which nonetheless seemed to be too much. However, this is undoubtedly a proven solution. In the very first days it was not even developed, but only the formation of the process, several people immediately retired. Someone has personal problems someone in the family, someone has run out of time, someone has a cat's birthday =) But the fact remains. In total, only three people remained in the team: me, Joey (China) and Sven Arne (Sweden. Not sure if he wrote his double name in Russian correctly). Both of my teammates are quite experienced in development using Qt (on average 4 years) and QML (2 years). But even with such experience, they sometimes surprised me with their bicycles. We had a classic beginning, “Swan, Cancer, and Pike,” who was very happy. Probably I don’t dare to judge everyone, but we quickly dealt with the confusion - the hardworking Joey sketched a document with the main stages of development, while I laid the foundation in the form of the first working model. In total, only three people remained in the team: me, Joey (China) and Sven Arne (Sweden. Not sure if he wrote his double name in Russian correctly). Both of my teammates are quite experienced in development using Qt (on average 4 years) and QML (2 years). But even with such experience, they sometimes surprised me with their bicycles. We had a classic beginning, “Swan, Cancer, and Pike,” who was very happy. Probably I don’t dare to judge everyone, but we quickly dealt with the confusion - the hardworking Joey sketched a document with the main stages of development, while I laid the foundation in the form of the first working model. In total, only three people remained in the team: me, Joey (China) and Sven Arne (Sweden. Not sure if he wrote his double name in Russian correctly). Both of my teammates are quite experienced in development using Qt (on average 4 years) and QML (2 years). But even with such experience, they sometimes surprised me with their bicycles. We had a classic beginning, “Swan, Cancer, and Pike,” who was very happy. Probably I don’t dare to judge everyone, but we quickly dealt with the confusion - the hardworking Joey sketched a document with the main stages of development, while I laid the foundation in the form of the first working model. But even with such experience, they sometimes surprised me with their bicycles. We had a classic beginning, “Swan, Cancer, and Pike,” who was very happy. Probably I don’t dare to judge everyone, but we quickly dealt with the confusion - the hardworking Joey sketched a document with the main stages of development, while I laid the foundation in the form of the first working model. But even with such experience, they sometimes surprised me with their bicycles. We had a classic beginning, “Swan, Cancer, and Pike,” who was very happy. Probably I don’t dare to judge everyone, but we quickly dealt with the confusion - the hardworking Joey sketched a document with the main stages of development, while I laid the foundation in the form of the first working model.

Goals and means

So, our goal was to develop an RSS reader using the Ubuntu QML Toolkit and Qt Quick wherever possible. The briefing also meant that a C ++ module could only be written in the most critical situations (for example, the guys from the file manager team, for objective reasons, resorted to C ++ immediately). I want to say that Qt Quick is based on the entire graphical interface of the OS, which is good news for library followers.
At the first stage, it was difficult for our team to overcome the problem of loading and parsing RSS feeds, which are plain XML, which an experienced reader probably knows. XmlListModel can work with url as a source, but it does not provide the required information if the load fails. Later, we came up with XMLHttpRequest, followed by parsing in two XmlListModel (information about the entire tape and its entries separately). Nevertheless, such an implementation 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, we used the Qt Quick Local Storage API (read SQLite). Not sure,

Development and cooperation

In fact, all our joint activities are resolved using the launchpad site. As a version control system, it was proposed to use bazaar. Before that, I did not have much experience using git in personal projects, but it was enough to draw an analogy with bzr and easily use the new version control system for me. The principle is standard - a new branch is created for a new feature, which, as a rule, is personal, and then merges with the trunk. Fortunately, Qt Creator (by the way, the custom version of the crirator with additional menu items, etc. is included in the SDK) has built-in tools for working with bzr. The distribution of tasks occurs using 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 there are more, but these three were in demand with us). The site has internal tools to visualize the execution of tasks in projects using blueprints. Visualization of all progress on core apps also looks very informative. The site also contains an internal bug tracking system. Unfortunately, from time to time it is necessary to register bugs for toolkit developers. By the way - these very developers often do not use Qt Quick way in the implementation of this or that feature, I try to make comments in such cases too. The site also contains an internal bug tracking system. Unfortunately, from time to time it is necessary to register bugs for toolkit developers. By the way - these very developers often do not use Qt Quick way in the implementation of this or that feature, I try to make comments in such cases too. The site also contains an internal bug tracking system. Unfortunately, from time to time it is necessary to register bugs for toolkit developers. By the way - these very developers often do not use Qt Quick way in the implementation of this or that feature, I try to make comments in such cases too.

Meetings Collaboration with designers

We have weekly team meetings (managers are also present) on Thursdays, as well as meetings with designers on Fridays. At internal meetings (which take place at IRC), they try to first of all find out if there are any locks, whether everything is going well, whether we are in time on time, etc. In a word, organizational issues. Oh, it turned out two =) Friday's meetings are a little more interesting - we talk using Google Hangouts. For me, this is personally a difficult practice of speaking in English, including (since no one is usually a native speaker, mistakes are forgiven). We discuss the subtle issues of implementing some of the application features, internationalization issues, and so on. Someone Lisette is working with us. A very nice woman (yes, it’s a woman, no longer a girl, I was for the first time even a little surprised, that the designer of such a project is not youth; later it turned out that she was a very experienced and well-versed person in UX), disposed to herself, quickly developed a design concept known as “Shorts” - that’s what our RSS Reader began to be called. Now we are working to bring the external in line with its design.

Core Applications General Progress

No wonder that several applications have taken the lead. This is a calculator, weather and clock. Again it would be a mistake to say that they are simple, but the work on them is in great parallel. Others lagged behind - the saddest situation now is with the mail client, as far as I know. There, the team will be almost completely redrawn. Documents and the terminal are developing in their own way, without much breakthroughs and abandonments. Until recently, the file manager was full of bugs; active work was underway on Hack Days to improve it.
It is worth noting that out of 12 applications, four were singled out as social. These are Facebook, Youtube, Twitter and RSS Reader. At the moment, only our project is alive) The rest were stopped due to some confusion with the rights and dissatisfaction of companies. A holy place is never empty, so in their place there are new, in my personal opinion, already "less basic" applications, like the Sudoku game.
In August, all projects will have Beta. In September Release. Now about Alpha-2.

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

Also popular now: