Skip to content

Sprints

probonopd edited this page Oct 16, 2017 · 30 revisions

Sprint 1: AppImageUpdate (02.10.-20.10.2017)

User Stories

  1. "I as a user want to download an AppImage from the OCS Desktop app, the openDesktop.org stores an/or the original author's download page, and run it through AppImageUpdate in order to update to the latest version"
  2. "I as a user want to update an AppImage using the OCS Desktop app, regardless of where I had downloaded it from originally, and even if I copied it over network, USB, etc., in order not to have to manually manage repositories, etc."
  3. "I as an application author want to make my AppImage self-updateable from the menu, "Check for newer version and update..."
  4. "I as an application author who puts OCS-provided AppImages into openDesktop.org stores don't want to need to do anything special to have automatic updates work"
  5. "I as a zsync user want to be able to use the new infrastructure with existing zsync files and the old zsync with the new zync files to maximize compatibility"

Architecture and estimation

  • mock libappimageupdate: To find out how to consume this from OCS-Store ✔
  • libzsync2: Convert the functionality of zsync-curl into libzsync (using libcurl), keeping librcksum and libzsync code, but rewriting frontend code), including new zsync2 CLI tool (demo app, drop-in replacement for zsync/zsync-curl) and Unit tests -- 7 days
  • libappimageupdate: Convert the functionality of the appimageupdate bash script into a C/C++ library, and test it with unit/functionality tests -- 2 days
  • appimageupdate: Write a CLI frontend for libappimageupdate providing the same functionality as the current tool - 1 days
  • (Qt based? - ideally small at runtime. Statically comiled Qt? FLTK if it looks native? Vala/GTK+ 2?) AppImageUpdate: Write a GUI tool using libappimageupdate that can serve as a drop-in replacement for the old AppImageUpdate GUI tool -- 1 days

If time left:

  • Spend 2 hours trying to understand how bittorrent works and how much it really differs from the above, and whether the two could be merged (timeboxed to 2 hours)
  • Think about how AppImageUpdate could be embedded into AppImages, and how it could be detected by companion tools (such as the standalone AppImageUpdate or OCS-Store)

Total: about 12 working days

GUI integration

Applications making use of libappimageupdate should implement one of two cases

Case 1: An application that "updates itself" (example: Krita). Role model is Sparkle Framework on the Mac. Implement a "Check for updates..." menu item that, when selected by the user, checks for updates and has a GUI similar to this:

sparkle1 sparkle2 sparkle3

Case 1: An application that "updates other AppImages" (example: OCS-Store app). Role model is Mac App Store on the Mac. Make the application find AppImages that exist on the user's system in certain directories (listed here), and offer a GUI similar to this:

mas1 mas2

Only in the case of errors, give additional information to the user and tell what happened in an error dialog box:

error

As a bonus, place an icon into the dock and a progress bar into the icon like this:

dld

There is APIs for that on the Linux desktop: See https://github.com/AppImage/AppImageKit/issues/256