Increase visibility of actively maintained devices
postmarketOS supports many different devices – 173 at the moment – which is really great. The reality is, however, that only few of these devices actually have more than a few features working. More importantly, the majority of the supported devices are not actively maintained – there is no-one who adapts the device package to new changes or who will actually notice that something broke in time. A prime example for this is the amount of devices that are still using armhf
today, even if almost all phones supported by postmarketOS actually support armv7
.
There is no way to avoid this – interests change and sometimes a device may turn out to be too complicated to justify the effort to further improve and maintain it.
On the other hand, we have at least a handful devices which are actively maintained and have more features supported than others. However, it's close to impossible to identify these by:
- Looking at the device list on the wiki
- Looking at the
device
folder inpmaports
The huge device support matrix in the wiki looks great, but to me it has always conveyed a certain feeling of "quantity over quality". It's easy to miss the lines with devices that are working quite well already. A frequently asked question in the chat therefore used to be "What is a good device to get for postmarketOS?".
I expect this question will get easier to answer in the future with "officially" supported devices like the PinePhone or maybe the PineTab. This is discussed in @ollieparanoid's Project direction 2020 - Get serious about supported devices (#11) issue.
I would like to go one step further and increase visibility for all actively maintained devices that have a basic set of features working – even if they are not usable as daily drivers yet.
Devices like:
- Nokia N900
- Nexus 5
- All the MSM8916 mainline devices (
samsung-a{3,5}ulte
,wileyfox-crackling
, ...) - Tegra/grate tablets
An incredible amount of effort has been put into all of these devices, and they are certainly usable for some parts of postmarketOS. But as "postmarket" devices where the vendor did not consider FOSS use with a mainline kernel many years later, it's much more difficult to fulfill the requirements for an "officially" supported device.
Still, I'm hoping that we may be able to bring some selected "postmarket" devices there eventually, by encouraging other users to contribute to devices where much of the work has already been done.
Proposal
My proposal is to make the support status more than just binary (true/false). We introduce an additional group of (somewhat) supported devices – I call them "community supported".
Below is an overview of the groups I came up with. I took some inspiration from the Alpine repository names (main
, community
, testing
), which are used below. Note that they just share the names (and maybe parts of the idea behind), this proposal is not about introducing separate binary repositories.
-
main: ("officially" supported)
- must be actively maintained, ideally by more than one maintainer
- should have close to everything working
- usable as daily driver
- e.g. PinePhone
-
community: ("community" supported)
- must be actively maintained (have a maintainer)
- some base functionality working
- I would like to avoid having a fixed set of requirements here. They will generate vary per device,
e.g. N900 does not have GPU, Nexus 5 does not have audio, ... - I think this is usually implied by "actively maintained" – you either maintain it because it's usable in some way, or because you have at least some goal you want to achieve.
- I would like to avoid having a fixed set of requirements here. They will generate vary per device,
- e.g. Nokia N900, Nexus 5, msm8916-mainline, ...
-
testing: All other device ports, including new ones.
- Can request moving to
community
if requirements are met.
- Can request moving to
- (unmaintained: Maybe as a place for (known) broken device ports without maintainers?)
- or: move devices there if not updated for 2 years or so?
- still in
pmdevices
, but not built by bpo (basically an "archive" for old device ports)
main
and community
should ideally be based on best practices. E.g. these should be packages you can point to if someone is looking for examples how to implement certain features.
Implementation
These groups should be reflected in the wiki and in the pmdevices
repository.
pmdevices
Having separate folders for each of the group would make it much easier to navigate to packages you can look at as examples. Something like:
pmdevices/
main/
device-pine64-pinephone/
...
community/
device-nokia-n900/
...
testing/
...
(unmaintained/)
Wiki
The groups should be listed separately in the wiki, and possibly even presented in a different way. I think the way you compare devices differs for each group:
- main: Most important are form factor and specifications, not status, since almost everything should be working
-
community: Status comparison: How usable is the device? Which features are already working? What can be improved?
- It might be also helpful to list e.g. the SoC of the device. Users with a similar device then know there is someone in the community who can help them with getting their device working.
- testing: The list will be still quite long. I would expect that you usually just check if some device you have is already listed, but not use it to compare between devices. Maybe a list of device names would be the best choice (the status is still available on the device page).
Final note
Originally I wanted to call this issue "Increase visibility of mainlined devices" (maintained vs mainlined). But at the ends it's really about how usable a device is and if it is actively maintained and improved. I can imagine that a device running a downstream kernel could also fulfill the criteria for community
, with enough effort. I don't think mainline should be a strict requirement.