Jump to content

GSoC/2021/StatusReports/LucasWang

From KDE Community Wiki

KDE Connect iOS <> Status Report & Reflections

Key Links, Locations, and People

Links:

People:

Posts, Docs, and Articles:

How It Started

As of April 2021, the iOS KDE Connect application possesses several issues:

Outdated UI design and features such as optimizing for newer aspect ratios, icons, fonts, and accessibility, etc.

The app is lacking many core functionalities of KDE Connect that other currently available versions have. Since Apple has implemented many of those features into iOS since 2014, the app would now be able to use them to offer the missing functionalities.

The backend portion of the app that governs LAN network communications is currently functioning inconsistently and only under a very specific series of actions.

The goal of this proposal is to address the problems listed above with an "analysis and rewrite" process of much of the app’s current code base with the newest Apple development language and UI framework, Swift and SwiftUI. Aside from solving the immediate problems with the current app, rewriting the foundation in Swift and SwiftUI would give the codebase a strong footing to expand and adapt to future contributions. SwiftUI’s cross-platform deployment capabilities also give the possibilities for forks of the codebase for other Apple platforms such as macOS and watchOS.

As such, the initial proposal, finalized in early April, outlined the following goals and deliverables:

  • A completely revamped interface of the KDE Connect iOS application written in SwiftUI and adhering to the newest iOS design language.
  • Additional functions were added to the new app to match the core functionalities present on other versions of KDE Connect such as the Android version.
  • A revised network communications backend.
  • Documentation of the unit testing done throughout the project and, using the Android KDE Connect as a reference, document the state and progress of the iOS version.

How It's Going

== Key Periods & Moments== (remember to add links here) Note: Some of these events overlap with each other, they are not in strictly sequential order.

May - June 7th: Discussed and re-checked project proposal with mentors (timeline, other factors such as project resources, etc.). I joined KDE's Apple Developer Group to assess the situation (KDE's Apple Developer Group thus far has only been used for creating signing certificates for Krita, another KDE project written in Qt and C++. It would appear that KDE has never had any project built with Apple frameworks before that progressed into the Signing and Testing stage, and that KDE Connect iOS 2021 would likely be the first), get similar with the system, etc. I also raised the question and potential problem of accessibility to Apple's platforms and frameworks needed to develop and contribute to this project, and floated the idea of future consideration of the MacStadium FOSS program which provides FOSS projects with a free Cloud Mac Mini. Having dealt with issues like this in software clubs in school before, I really did not want the lack of accessibility to Apple's platforms to be a cutting-off factor for potential contributors.

June 7th - 14th: GSoC's coding period started just as I wrapped up my university spring quarter and was drowning in final projects and exams. Per previous revision with mentors, the coding period for this project will be starting roughly a week later around June 14th.

June 14th - July 7th: The first prototype of the UI/UX built completely in SwiftUI was ready for presentation at the upcoming monthly KDE Connect Development meeting. Other components of the app were also re-written in Swift, such as UserDefaults for persistent storage, cross-app data flow, etc.

July 3rd: It was discovered that the huge, breaking change between iOS 12 (which my mentor Inoki was running) and iOS 14 (which I was running) was responsible for the confusing and seemingly unexplainable difficulties that I was having getting UDP broadcast to work. iOS 14 requires developer to apply for an entitlement in order to use broadcast. I began looking into the complex Apple Developer group structure as the application would requires coordination with the KDE Admins.

July 13th:

July 1st - July 20th: The first prototype of a LAN communication backend