How can I help?
-
People are often enthusiastic about the project and want to help it grow but sometimes we don't know how to help.
Let's start with some definitions because it never hurts:
Ubuntu Touch: Is the name of the OS
UBports: Is the foundation maintaining Ubuntu Touch. That's also the name of our community.
Lomiri: Is the DE of Ubuntu Touch
Ofono: Is the module that handles the telephony for Ubuntu Touch
Halium: Is an abstraction layer used by Ubuntu Touch to communicate with proprietary firmwares on ported devices.
Anbox: Is an option to run android apps (highly experimental and not currently maintained)
Waydroid: Is the new name for a new approach to replace Anbox, it only works for devices based on Halium 9 (and 10 IIRC) and is still in early stage of development.Now I'll try to give some tips on how to help/get involved:
First you can head over to https://gitlab.com/groups/ubports/-/epics
There you'll find the roadmap for the UBports foundation.
At the moment, this is mainly about the work necessary to get Ubuntu Touch to work based on Ubuntu 20.04.You got a rough idea on what is going on and want to help? Great!
Helping is possible in many places. You can work on translations, documentation, testing, reporting or developing.
Also shop infrastructure like moderating, sorting and prioritizing issues, ... also require some (wo)manpower.
Please check our documentation where some instructions are already provided: https://docs.ubports.com/en/latest/contribute/index.htmlEager to help developing? A good starting point are open issues:
https://gitlab.com/groups/ubports/-/issues
https://github.com/ubports/ubuntu-touch/issues
You want make an impact? Some core apps do still need a maintainer (https://github.com/ubports/ubuntu-touch/blob/master/CORE_APPS.md).Issues, bugs or feature requests need developers to tackle them, but it's just the tip of the iceberg. There are certainly more of them. And not only developers are needed. Browse through issues and see if you can help by
- confirming issues
- testing
- providing ideas on how to solve something
When testing and reporting, please follow some general rules:
- report any bug you encounter
- check the list before reporting to make sure there is no already existing report
- provide information on how to reproduce and hopefully fix
comment on existing reports if you have helpful information
If you have a broad idea of something that would help to improve Ubuntu Touch, please consider these steps:
- be specific, no "let's save the world" attempts
- draw a mockup or write something up with your ideas
- depending on your idea find the right spot to place it (github/gitlab, forum, telegram, ...)
- maybe build something to provide it for tests
- find others to team up, ask for help
If you cannot act on your own and need endorsement from the foundation, for example to create new partnerships, then
- Draft an email for any contact you may have in an organization
- Submit the idea and explain how you think it might help each party to the UBports foundation (use the social media, Telegram or the forum to get redirected to the right people)
(Be patient. Tweaking is a luxury we can't afford right now. 20.04 is the absolute priority. That means that many other things are not a priority. No harm in storing up feature requests somewhere, but don't expect short term actions by the core team at the moment.)
To sum it up, I would say, you don't need to ask, feel free to act.
Action proves your interest.
Acting on an idea is a good way to test it out and see the possible flaws in our thinking (i.e. does it require money, connections, skills, etc.).Oh and if, like myself, you are willing to help but don't have much time to give, you can always give money: https://ubports.com/fr/donate
I hope some of you might find this helpful.
Cheers -
-
@applee At the risk of diverting the topc can you explain some more what Halium is? Despite reading about it and watching all the Q&As, I really have little idea what it is. My previous impression that it is an alternative OS to the normal one now seems wrong, but an abstraction layer conveys nothing to me.
-
@cliffcoggin To popularize, Halium project is an abstraction layer allowing to translate the Linux (Android) kernel on Ubuntu Touch (much more complex than that, but just to schematize...)
Halium follows Android versions (ex. Halium 9 is based on Android 9).
Halium is mainly used by porters on new devices.
Basically it enables Ubuntu Touch to communicate with the hardware of the device. -
@applee said in How can I help?:
Ubuntu Touch: Is the name of the OS
UBports: Is the foundation maintaining Ubuntu Touch. That's also the name of our community.
Lomiri: Is the DE of Ubuntu Touch
Ofono: Is the module that handles the telephony for Ubuntu Touch
Halium: Is an abstraction layer used by Ubuntu Touch to communicate with proprietary firmwares on ported devices.
Anbox: Is an option to run android apps (highly experimental and not currently maintained)
Waydroid: Is the new name for a new approach to replace Anbox, it only works for devices based on Halium 9 (and 10 IIRC) and is still in early stage of development.Nice summary there, AL!
-
@stanwood Thank you. I am not sure I am any more enlightened but thank you anyway. I think this illustrates the enormous gulf in knowledge between the ignorance of a simple user like me and the expertise needed to develop UT, and perhaps explains why so few people are stepping forward to assist the team.
-
@applee said in How can I help?:
I asked several times in the Q&A about this, but I was ignored, thanks for sharing this.
-
@thousandtopics said in How can I help?:
I asked several times in the Q&A about this, but I was ignored
Orrrrr... maybe your question was noted as one that needs answering in a general way, so the answer is visible and useful for more people... and this is what happened just now?
-
@moem so . . . What I have seen in the Q&A so far, is they announce of what has been done, they mention some things as milestones, and I knew that somewhere there was a milestone agenda, but I don't recall they have mentioned before.
At least now I know where it is.
-
-
-
@cliffcoggin hi, i'm way late but i found a nice short explaination of halium that finally made it click for me. i'm posting it here because perhaps @AppLee might find it usefull to add it to his short description:
"Halium is basically a custom version of Android build specifically to run services that speaks to Android hardware"
as these services make use of Android libraries halium also uses a wine-like "compatibility layer" to load those libraries in Linux called "libhybris"
as a closing note i would like to encourage you to not be discouraged when you feel like you don't understand much. i can tell you that few of the regular contributors understand the entire system completely. even the most knowlegable contributors started with zero understanding of the system, nay even the devs at canonical each "specialized" in specific parts of the os, while not knowing much about other part
-
@cliffcoggin @Fuseteam
I know little of the inner workings of my phone, I'm not software savvy, I'm just an Electrical Engineer with a groovy mobile, but I do often need to communicate with developers and system integrators in an industrial environment, so I think of of it like a trifle, with layers.
In this case maybe the bottom layer of sponge and jelly is your phone hardware, the next layer of fruit may be the kernel, followed by the custard layer of the operating system, a sprinkle of broken buscuits are all the apps you load on the operating system, and the user interface is the top layer of chocolate sprinkles and cream. We only see the top layers of chocolate sprinkles and cream, but we taste the whole trifle when we use our phones.
I may have got this all wrong, as I said before I'm not software savvy, and I'm not a chef. But in principle I think some types of sponge don't taste good with the rest of the trifle so developers need to add another layer of flavour to make it bind and work. So I think Halium is a layer added between the sponge and the fruit on some phones to make the whole trifle work. I think the Cosmo that I'm writing this on is a bit of an 'Eton Mess', but it tastes good. -
@Fuseteam and @MonCon
For a good understanding of what is Halium, I'll refer you to the latest Q&A at this day:
https://youtu.be/1OGK2lIV8DQ?t=1920During this question, Florian share a graph explaining how things interact.
https://youtu.be/1OGK2lIV8DQ?t=2055Note: The links have timestamps to the right moment...
So basically if I'm correct, Halium is an open source project based on android that provides the blue parts so Ubuntu Touch can access the hardware (on the graph: GPS, Pulse, Media, Ofono) or more precisely the vendor's firmwares to communicate with the hardware.
Also from the https://halium.org project page, they also include the kernel used by android for a given device... which (as Florian said) can be a very old unpatched kernel.Updating the kernel is very hard because Google and vendors customized the kernel to fit a specific need at the time and this work would have to be done again... but blindfolded and with a skeleton crew.
@cliffcoggin the gap is not that big.
Things have names and within a thing there are other things with more specific names.
To fill the gap you just need to refer to a box diagram like the one shared by Florian and understand roughly what are the main components. If you need to tackle a specific problem you'll be able to identify one or in the worst case two boxes of interest.That's a starting point, then you can focus on the interesting box and build your knowledge from the bottom up.
For instance, I'm an IT engineer for 15 years now and I'm unable to know the difference between TWRP, recovery mode, flash tool and other names like that.
Some are "generic" names, some trademark or tools, but I don't care.
What I understand is that they are needed at some point to deal with the bootloader (that I understand as I worked on embedded software). But even a bootloader is not a clear notion...
For example a PC will have a BIOS (it is technically a bootloader AFAIK) and then you have GRUB (which is another bootloader) then your OS.
But wait, a bootloader is an OS which task is to run another OS...
Embedded architecture can be confusing and there are many technical terms that you have to learn and debunk to understand a thing.To make an analogy with a car, in order to work on a car, customize it or fix things, you don't have to know how to build an engine or how threads on a bolt are made.
You can add an alternative fuel line without knowing how the ignition works.Anyway I think it's important we (the community) can explain how things work so people with no or little knowledge (but with passion) can join the effort and improve our beloved OS.
I will just be explicit that even if I'm a technical guy, my knowledge about Ubuntu Touch is very limited. But I know the broad strokes behind Linux, an OS and embedded software.
And so you know, I learned mostly by trial and error and reading/asking when I felt stuck. Not at the University. -
@applee thanks for the links, i've been following the groups as well, and now i found a short description on telegram that made it click for me:
Halium is basically custom version of Android build specifically to run services that speaks to Android hardware
edit: i just noticed i already posted that did that description not suffice?
edit2: ok so i found an (older) image of the diagram florian showed
my current understanding is that the bluebox is "halium" although in florian's diagram the bluebox is considerably larger hmm -
@fuseteam
Halium is larger than this blue box but it gives the idea...
Halium includes also the kernel and drivers for GPS, accelerometer, screen, cameras as well as oFono.AFAIK (and I'm reaching my limits) a porter can use Halium as a base and add the Ubuntu Touch parts... (Lomiri, system apps, system libraries, ...)
Sorry I don't know the details on this. To know more, I guess the best course of action is to try and get your hands dirty porting...If I had the time, my plan would be to try to make a port for an existing Ubuntu Touch device.
This way you have a final result available for reference. -
-
@applee i'm fairly certain both the kernel and ofono are outside of halium, but i can't say that with absolute certainty. i agree the best way to understand it would be to try porting yes. i too wish i could make time for it
-
@fuseteam
The best source of information I can find is https://halium.orgProject Halium will contain:
- Linux kernel (source provided by device vendor)
- Android services required to talk with hardware
- Libhybris
In addition, Project Halium also aims to standardize the middleware software used by various projects to talk with android daemons and make use of hardware, for instance:
- OFono/RILd
- Camera service
- Pulseaudio / Audiofingerglue
- GPS
- Media codecs
-
@applee ah i need to read more thanks. tho i still don't know if "aiming to standardize middleware to talk to android daemons" means it's a part of halium or not
-
@fuseteam
According to me that would be the case.De facto if they include for example OFono to halium than projects based on halium will not have to integrate OFono on their side hence the standardization.
Of course any project can choose no to and hack off OFono to bring something else instead.
By incorporating OFono within halium they can also move towards less fragmentation by updating OFono for all devices at once aiming to a more plug and play integration.
I guess this is not it yet but that is probably a goal for ease of maintenance when new releases come out. -
@applee the thing is some halium operating systems don't use ofono, they use modemmanager iirc xd