Contributing Developer application - Alessandro Astone
Alessandro Astone
ales.astone at gmail.com
Fri Apr 4 14:00:23 UTC 2025
On 04/04/2025 08:02, Simon Quigley wrote:
> Hi Alessandro!
>
> On 4/3/25 05:43 AM, Alessandro Astone wrote:
>> On 30/03/2025 19:18, Alessandro Astone wrote:
>>> Hi,
>>>
>>> I am applying for Ubuntu Contributing Developer.
>>>
>>> Application wiki page: https://wiki.ubuntu.com/aleasto/
>>> ContributingDeveloperApplication
>>> Meeting slot: 2025-07-21 16:00
>>> Agenda: https://wiki.ubuntu.com/DeveloperMembershipBoard/Agenda
>>>
>>> Thank you,
>>> Alessandro
>>>
>>
>> In light of "Clarifying Policy Re: Asynchronous Contributing Developer
>> Applications" indicating a preference for asynchronous review, I have
>> removed myself from the agenda slot I had previously booked and will
>> be taking questions from the replies to this thread instead.
>
> Under the "any DMB member can ask for more time" exception, I am
> extending the final date on this application to April 18th, 2025, due to
> the unique timing of that communication and your indication.
>
> Any DMB member, myself included, can push it further if we need to.
>
>> Please, ask away!
>
> Sounds good!
>
> Given my own past experience, my personal standard for reviewing
> applications involves gauging technical and social skills alike. For
> more details on the kind of questions I ask, please feel free to read
> the devel-permissions archives.
>
> Some reminders:
> - I'm not asking for perfection, I'm simply asking for your best. Take
> your time, I don't expect an immediate response.
> - These questions change from person to person; while it is a great
> sign of preparedness to read past applications to see what kind of
> answers I'm looking for, these are unique.
>
> Something new: I value verbosity. You don't have to write a book, but I
> would rather you err on the side of over-explaining than under-
> explaining when unsure. I'll repeat this note in further applications.
> Again, take your time.
>
> I'll start with this: your wide range of experience gives me a great
> initial impression.
>
> As I'm sure you know, one of the most effective techniques in software
> engineering is the Rubber Ducky technique[1].
I do believe rubber ducking is incredibly powerful.
Just the other day I was working on a bug (LP: #2105377) which required
analyzing a debug log from plymouth and cross-checking it with the
system journal to understand why it was not behaving as expected. So I
started typing this long, line-by-line analysis of the logs in the
related Launchpad bug where at least 1 other developer was taking an
interest. As I was getting towards the end of the analysis it suddenly
made sense! Quickly wrote a patch and sent a debdiff accompanied by just
a minimal portion of my previously pages long text :P
So, although my intent was to eventually reach a person and not a duck,
in the end I could understand the problem by myself just by explaining
it aloud. Very satisfying!
Sorry, that wasn't a question but as it was so recent I was compelled to
tell the anecdote.
> A related concept is the
> "explain it like I'm 5" technique, or ELI5.
>
> I already know the answer to these questions, but let's pretend you have
> time-traveled back to the year 2007. I am 5 years old again, and I have
> kindly asked you to answer some questions for me about the year 2025:
> - What is LineageOS, what is Android, and what do those things mean
> for an average phone user? (Read: "30 second elevator pitch.")
"""
Android is the most popular operating system for smartphones. However
the smartphone manufacturers do not allow you to modify their operating
system, which is often bloated or tied-down to Google online services.
LineageOS is a replacement operating system that can be ported to any
off-the-shelf Android device, it is entirely open source so you can
assemble it as you prefer, and it is not tied-down to those nasty Google
online services; your favourite device might already have a port,
check-out lineageos.org and join our community. If you're a
developer-type check-out our dev wiki and chatrooms and start hacking
around!
"""
Now, as a side-note, I actually got hooked to LineageOS just because I'm
a tinkerer and love to explore and break my stuff. I have no issues
per-se with using Google online services and what that entails for my
privacy, but that's the typical pitch instead.
> - How easy is it to port a phone OS to a new phone, very generally
> speaking? Is it as easy as some people make it look?
It depends. Nowadays, thanks to a clear and stable separation of
hardware interfaces and their implementations, you can re-use an Android
vendor's pre-builts bits (namely the vendor.img and boot.img partitions)
as-is and boot a LineageOS system in mere minutes. However for
contributing a port to LineageOS upstream it must be entirely
source-built (or, as much as possible), taking only a minimal set of
blobs from the vendor, which takes considerably more effort. At least
for me. I do not like working with blobs.
I believe HALIUM ports also often use the prebuilt vendor.img but have
to at least recompile the kernel because systemd or other components
require some additional features over the standard Android kernel
requirements.
> - Are you at all familiar with Lomiri/Ubuntu Touch? What's your opinion?
Yes, as touched on above I am. I own a Volla Phone 22 which has a
maintained Ubuntu Touch port, which was gifted to me by Volla Systeme
GmbH with the intent of ensuring compatibility with Waydroid because
being able to still run Android apps, at native speeds, is a solid
selling point.
I generally like the Lomiri shell, but I think it could really use a
rebase on Mir 2.x, which I believe is still WIP. At the same time
Android or iOS have accustomed us to a level of UX polish that makes it
impossible for me to consider using it as my daily driver. I believe
GNOME Shell mobile and the responsive libadwaita applications come
closer to that level of UX polish, but also not quite... (disclaimer: I
have not tried that for more than 30 seconds.)
> - [Bonus question, non-blocking, optional] As a prospective Ubuntu
> Member talking to a young person interested in the project, how would
> you encourage them, and/or what advice would you give them?
>
Join a matrix room, such as a local community or a dev channel, start
following some discussions and do not be scared to intervene with
questions or ideas.
I am now personally trying to communicate via Matrix as much as
possible, as I believe it is the best way to construct a sense of
community. I especially appreciate when users and developers interact in
the same room; it keeps us devs-types honest and focused on the mission
of delivering a product for the users and not just for ourselves.
> Okay, back to 2025. Here are some further questions:
>
> In your own words, what does it mean to be an Ubuntu Member?
>
Being an Ubuntu Member means sharing the Ubuntu values, bringing some
value to the project in any shape or form, and have that being
recognized by other Ubuntu Members. To me as a developer specifically,
being an Ubuntu Member means that I share the values of delivering
stable and timely updates to our stable releases, while on the flip-side
exciting and fresh updates for the next release, and understanding how
the project is socially structured to achieve just that.
Being an Ubuntu Member also means representing the project, engaging
positively with the community and other developers, considering oneself
accountable for their words and actions.
> Please take some time to reflect on this portion of the Ubuntu Code of
> Conduct:
> > When somebody leaves or disengages from the project, we ask that they
> do so in a way that minimises disruption to the project. They should
> tell people they are leaving and take the proper steps to ensure that
> others can pick up where they left off.
>
> While your experience is wide-ranging, could you please explain the
> steps you took to gracefully disengage from projects that are firmly in
> your past?
>
> I am not attempting to hold any potentially negative history over your
> head. I am simply trying to gauge your understanding of this clause,
> separately from your publicly-stated employment at Canonical.
>
You might have noticed that I am using my personal email address for
this exchange, and that was intended as a statement of intentions.
> If you must answer this question privately, that is okay, please send me
> a separate, direct email with the information you are willing to share.
> I also want to give you the benefit of the doubt, so if I'm even
> slightly suggesting something that's false, tell me. :)
>
Yes, I'm not sure where you got the sense that I may have left other
communities disgruntled or negligently, or even that I left at all...
I obviously don't have as much time as I had as a university student,
but I'm still an active contributor to Fedora KDE and attend the team's
weekly voice-meeting, and I'm still an active contributor to the
upstream KDE project. I believe some people may find that upsetting
given my current job position, but I am a true open-source enthusiast
and can only see being involved in multiple different communities as a
positive.
I am still actively maintaining Waydroid, which being based off of
LineageOS also means occasionally keeping in touch with that community.
I am not active in LineageOS upstream anymore however, and was removed
as a device maintainer. I requested to be removed in private chats with
the respective co-maintainers, as I didn't see myself spending time in
the near future on continuing to maintain those device ports.
If I were the only maintainer of one device I would have publicly marked
the device as unmaintained to stop producing official deliverables for
it until a new maintainer could be found.
I am in very good rapports with everyone I know from those communities.
I had the opportunity to attend FOSDEM 2025 sponsored by Canonical,
where I could spend some time not only with my new Ubuntu and GNOME
friends but also with my Fedora and KDE friends, and share a dinner with
my LineageOS friends... :)
The biggest shift in engagement has been that I now mostly do stuff over
the weekend or when pinged, rather than being always present. For
example, I had pretty much lead the Qt5/KF5 -> Qt6/KF6 transition in
Fedora KDE and that just wouldn't be possible for me today.
> Okay, enough social questions, on to technical ones.
>
> When writing a manual test case, what do you consider? Is there any kind
> of defined process you follow?
>
When writing a manual test case there are two competing driving factors:
* the will to cover the functionality of the package as extensively as
possible;
* the feasibility for a user to be able to complete the test case.
Maximizing both factors at the same time is impossible, so we need to
find some balance.
I try to identify the most popular use-cases for the package and focus
on a high-level overview of the functionality; the low level stuff will
generally and hopefully be tested with unit-tests or integration tests
at build time and/or as autopkgtests.
For a graphical application, that would be generally along the lines of:
"open the app, navigate to some section of the app and perform some
operation; repeat for other sections of the app"
Sometimes we need to filter-out test cases that require specific
hardware, or mark it as optional or otherwise try to simulate it somehow.
If the package can be split into components, the process shall apply to
each component.
> Pick your favorite FTBFS fix and tell me why it's your favorite. Would
> you have done anything differently in hindsight?
>
Ok, my favourite has to be discovering a GCC bug with C++ coroutines...
I prepared a minimal reproducer (well, as minimal as my understanding of
C++ coroutines goes which is not that deep) and presented it to the gcc
maintainers which prompted a quick fix upstream:
https://bugzilla.redhat.com/show_bug.cgi?id=2342065#c11
Unfortunately that was found in Fedora and not Ubuntu so I'm not sure it
counts...
My favourite Ubuntu FTBFS then is ubuntu-report as seen just recently
this cycle. It was not an issue with compiling the program, but rather
the build-time tests were failing following a tzdata update. It would
have been caught by autopkgtest as well, but because ubuntu-report does
not explicitely depend on tzdata that autopkgtest was never run for the
tzdata migration.
The issue goes like this:
ubuntu-report collects the system's timezone information by reading
/etc/timezone. However tzdata=2024b-5 stopped generating /etc/timezone
in favour of just using the standard systemd way to read the timezone,
which is by following the /etc/localtime symlink.
ubuntu-report includes some tests that run against a mock root
directory, and those continued to work as they manually populated an
/etc/timezone file, but also include some integration tests that run
against the real system, and indeed those failed.
After undertanding the problem and finding some documentation in
tzdata's debian/NEWS, I sent a patch to ubuntu-report in GitHub and got
it merged. Unfortunately here I expected the maintainer to upload a new
release to the archive but I didn't notice that the git branch had some
changes that wouldn't fly with the Feature Freeze already in place; that
had to be pointed out by the maintainer who naturally suggested to
backport the individual patch instead. So, in hindsight I could have
checked the git history myself and proactively suggested a small
backport myself instead.
I think this is my favourite because FTBFS failures that generate from
compilers enforcing newer better standards (C/C++) are generally not
that interesting... except when you find a compiler bug :)
My university thesis was around compilers and code optimization so I do
have a soft-spot for compilers anyways...
> I'll admit this is a pointed question: have you done research into
> whether anyone has proposed improvements to the SRU process like you've
> stated? If you have not done this research, could you please do so, and/
> or ask around[2]?
>
I have brought up the topic to my team (Canonical's Desktop Team) in
multiple occasions. I am aware of some conversations aimed in this
direction, and others not so much.
There is a floating idea in the Desktop Team to start advertising
-proposed updates of critical desktop components in, for example,
Discourse to gather users for mass regression-testing campaigns.
I know there is a strong drive from the SRU team to push for properly
peer-reviewed changes, however I believe that doesn't satisfy me. Peer
review is required but it is not sufficient. In facts I believe peer
review is of secondary importance to extensive real-world regression
testing, when considering that the upload must already come from a
trusted person, hopefully domain-expert, and reviewed by an SRU team
member (non-domain-expert, which is the point of pushing for
peer-review, I understand that)
> Once this is complete, does this change your constructive criticism,
> and/or are you willing to assist on this front?
>
On the topic of automated tests, I plan on spending a significant amount
of time in the near future covering the desktop components in
OpenQA-style integration tests that actually navigate the desktop
graphically and performing operations just as a user would with mouse
and keyboard.
I hope at some point to see this integrated at the same level that
autopkgtests are today, gating every package promotion.
> One last technical question for the time being: what do you consider
> when creating a new source package from scratch? Could you give me a
> taste of your process?
>
I think the most ergonomic way is to take an existing package that
follows modern packaging guidelines (that would generally mean
debhelper-compat=13 today) as an example and start populating the
debian/ directory while cross-referencing the documentation (e.g.:
https://canonical-ubuntu-packaging-guide.readthedocs-hosted.com/en/latest/).
Also, packages living under the same umbrella and being maintained by
the same team often have a similar "style" or "process" preference, for
example the Ubuntu Desktop Team prefers the git-buildpackage style with
pristine-tar, and hosts its packaging in salsa.debian.org; that is
documented in https://wiki.ubuntu.com/DesktopTeam/Git
An important detail that I also want to mention is the debian/copyright
file which basically forces one to think accurately about the project
licensing, which albeit cumbersome is a vital part of a software
collection project. Ubuntu follows Debian's DFSG guidelines, and a
project which does not respect those requirements cannot be included in
Ubuntu, or rather must be limited to the multiverse or restricted
section where things like the NVIDIA proprietary drivers live.
> [1] https://en.wikipedia.org/wiki/Rubber_duck_debugging
> [2] Hint: if you openly ask this in Ubuntu Development on Matrix without
> pinging me, I might be the one to answer it for you.
> [2a] Bonus points if you ask around to specific people first, to get
> general opinions on your feedback.
> [2b] Extra bonus points if you keep all interactions friendly and
> constructive, and reflect on it in your response.
> [2c] Extra extra bonus points if you reach out to an Ubuntu Developer
> you have not talked to before.
> [2d] Extra extra extra bonus points if you end up being persuasive
> enough that the SRU team actually changes policy.
>
> Have a great weekend,
More information about the Devel-permissions
mailing list