artectrex's blog - PixelDroid, Another Update

An update on PixelDroid and the past year of development.

📅 22 Jun 2022

PixelDroid: some of the progress

Hey, it’s been a while since my last blogpost. Wow, actually it’s been exactly one year!

So, what’s happened since then? Mainly, I’ve been busy with personal things, courses for my Masters degree, working on my server (which got damaged due to an electrical failure in the beginning of the year so that gave me an opportunity to NixOS: I might write a blogpost about that in the near future so subscribe to the RSS feed of this blog if you want my take on Nix and NixOS 😃) and working on PixelDroid with whatever time that was left.

I’ll talk a bit about what changes and improvements were made since last year.

List of some changes and improvements

  1. A lot of bugfixes and performance improvements
    • Generally I think the app is getting more reliable. There is still significant work left but thanks to the crash reports you wonderful people send me, I feel I have a good understanding of what causes them and I have determined a way forward that should get rid of the remaining crashes
    • Huge performance improvements after profiling the app execution, related to how caches were invalidated
    • Big performance improvements when viewing a profile. Previously since we were using a RecyclerView nested in a ScrollView, the RecyclerView was unable to recycle the ImageViews and on top of that the app was loading a lot of unnecessary data
    • Improvement of the activity showing the list of dependencies and their licenses. No more huge HTML document, now it generates the list from a json file.
    • Big refactor of the post creation activity, to avoid losing changes because of Android re-creating the activity. Also allows rotating this activity.
    • There was an issue where some images with specific EXIF metadata would get their images rotated incorrectly, on some Android versions. This should be fixed now.
  2. Notification support! The current implementation surprises me with its robustness, it is quite reliable now. You can disable individual channels, receive notifications from all accounts, clicking on them does what you would expect.
  3. Support for displaying videos! You can play videos and they show up as such in the feeds. You can also add them to a post.
  4. Open images in full screen, zoom, pan, etc. Finally! I think this is one of the most asked-for features, and one I wanted the most too. It should have been done a long time ago, since it’s critical in such an image-centered app.
  5. Support for editing videos! For now, you can mute and trim the end and beginning of videos. This change has increased the size of the APK by a lot but in an upcoming update I will make our build compile FFMpeg ourselves to be able to disable a lot of FFmpeg components we don’t need and it should get a lot better.
  6. Improve Mastodon compatibility: Add little icons for posts when they have no media (and thus no preview), and the app shouldn’t crash nearly as often or at all when using Mastodon.
  7. Add a shortcut so you can start making a post in a single click from your launcher 😄. Make sure not to miss the moment 😊
  8. A lot of translation updates. Unfortunately my server went down right in the middle of my vacation in the beginning of the year, so I had a lot of downtime there, and I seem to have lost some of the translators that worked on some of the languages because of that.
  9. Lots and lots of small changes I cannot recall 😇

Now, what’s next for PixelDroid?

I have found an artist to draw a mascot, and some red pandas for error messages. Expect to see those in a release very soon, there is very good progress 🖌️

The project is in the process of undergoing a basic quick security evaluation by Radically Open Security, a partner of NLnet (this is not a full audit but it should help getting some basics right) 🔒

We are going to take some time to make the CI work again. It got broken a long while ago, mainly because of factors outside of our control. Google has since worked on a new way to run integration tests so maybe that part of the CI should be possible to set up in a more reliable way. We should also add more unit tests, which should be more useful now that some parts of the app have been refactored.

Another thing I really want to work on: the consistency of the UI and UX. It’s a bit all over the place for now. The first thing to look at is the color palette, moving away from the terrible purple we have now is an easy improvement we should do. Maybe we’ll make the app theme-able, so the users can choose the colors 🙂 🎨