Jump to content

GSoC/2019/StatusReports/FaridBoudedja: Difference between revisions

From KDE Community Wiki
Faridb (talk | contribs)
Created page with "== KDE ISO Image Writer == '''KDE ISO Image Writer''', which is part of the KDE neon project, is a tool to write ISO images into USB drives. It was forked from ROSA Image Wri..."
 
Faridb (talk | contribs)
 
(11 intermediate revisions by the same user not shown)
Line 2: Line 2:


'''KDE ISO Image Writer''', which is part of the KDE neon project, is a tool to write ISO images into USB drives. It was forked from ROSA Image Writer and extended using the KDE Frameworks. Currently, the KDE neon website advises to use Rosa Image Writer because KDE ISO Image Writer is still under development.
'''KDE ISO Image Writer''', which is part of the KDE neon project, is a tool to write ISO images into USB drives. It was forked from ROSA Image Writer and extended using the KDE Frameworks. Currently, the KDE neon website advises to use Rosa Image Writer because KDE ISO Image Writer is still under development.


The aim of this project is to revamp the user interface of the KDE ISO Image Writer following the [https://phabricator.kde.org/M113/466/ designs made by the KDE community]. I am also planning of packaging the application for various Linux distribution using their respective packaging system as well as Snap and Flatpak, for Windows and eventually for macOS. In addition, I would like to write documentation explaining how to use the application with the aim of including a tutorial showing how to write the KDE neon ISO images on a USB drive using KDE ISO Image Writer which could then be added to the KDE neon download page.
The aim of this project is to revamp the user interface of the KDE ISO Image Writer following the [https://phabricator.kde.org/M113/466/ designs made by the KDE community]. I am also planning of packaging the application for various Linux distribution using their respective packaging system as well as Snap and Flatpak, for Windows and eventually for macOS. In addition, I would like to write documentation explaining how to use the application with the aim of including a tutorial showing how to write the KDE neon ISO images on a USB drive using KDE ISO Image Writer which could then be added to the KDE neon download page.
'''Mentors''': Jonathan Riddell and Harald Sitter


== Work report ==
== Work report ==
=== User Interface ===
=== User Interface ===
Building a new user interface for '''KDE ISO Image Writer''' was one of the main goals I set for this GSoC project. The new user interface is based on a [https://phabricator.kde.org/M113/466/ design made by the KDE community]. Most of the design was implemented by the end of the first coding period and the new user interface can be seen in the following screenshot:
Building a new user interface for '''KDE ISO Image Writer''' was one of the main goals I set for this GSoC project. The new user interface is based on a [https://phabricator.kde.org/M113/466/ design made by the KDE community]. Most of the design was implemented by the end of the first coding period and the new user interface can be seen in the following screenshot:
[[File:KDE_ISO_Image_Writer.png]]
[[File:Isoimagewriter screenshot.png]]
 
=== Windows Build ===
In addition to revamping the user interface, an important goal of the this GSoC project was to make KDE ISO Image Writer run on Windows.
I used [https://community.kde.org/Craft Craft], which is a cross-platform build system and package manager, to compile the code on Windows. In order for Craft to fetch the necessary packages needed by the application, I wrote a Craft blueprint which is a Python file that describes an application (or library) and list its dependencies.
 
 
You can see the Windows build of KDE ISO Image Writer in action in the screenshot below:
 
 
[[File:Kde-iso-image-writer.gif]]
 
 
'''N.B.''' The Windows build currently crashes when ISO images of certain distributions are used because of a segmentation fault caused by QGpgME on Windows.
 
=== ISO Verification ===
Before writing an ISO image, you have the possibility to verify the ISO image using various means such as a GPG signature or a checksum.
Distributions use different means to certify their ISO images and the user generally has to go through a complicated process to verify the validity of ISO images.
 
KDE ISO Image Writer features ISO verification within the graphical user interface which facilitates the process of verifying ISO images before writing them to USB flash drives. It will identify the Linux distribution based on the ISO image file name and perform the verification accordingly.
 
During this GSoC, I refactored the ISO verification code to ease the addition of new verification means as well as new distributions.
 
[[File:KDE ISO Image Writer Verifying.png]][[File:KDE ISO Image Writer Valid ISO.png]]
 
=== To Do ===
* Investigate the cause of the QGpgME segmentation fault on Windows
* Improve and extend ISO verification
* Improve Windows builds
* Make macOS builds of KDE ISO Image Writer
 
== Commits ==
=== KDE ISO Image Writer ===
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=39a18829d0d7b8d536d7176c866f25be7207d7ac Hide writing progress when KAuth job finishes with error]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=8bc2c9c4e063870bc7ac0f47483b81ae369c0e95 Fix success message not showing at the end of writing]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=89b6f985324064b0cd212cdbd3da0a2638c3ac51 Merge master branch from cgit]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=f1f62233c53ae16982f19bde8264465c0e950a96 Update project version]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=1dfd8afffe6c54730ad61bfe6ea891374acd879c Clean usb drive combobox code]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=059cdcf57ea80713b456e772e8ec2aeefe84e224 Remove test application]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=dec905173f38abc389264038f028ab0a76fffb2a Add missing copyright headers]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=51030c3e956a9622a82834a4788f525a44d00e64 Show placeholder text if no USB drive is plugged in]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=95c7872d0e035acaecbd19c6108464f5af919700 Hide writing progress when writing is cancelled by the user]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=f964c783eff15fdb89d5ba59eefe3eff7c86016f Add back and close button to success widget]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=ec1a7c8f4acc4c3916bfc4139d858a66c2540d87 Remove old ISO verification code]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=5479f39b7dc0c5ba698ab2e07556b65fe8db32f9 Fix finished signal not emitted by IsoVerifier]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=7b0049334de957af2d04ae2210fb3f32b511967c Verify Netrunner ISO using SHA256 checksum input by the user]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=52af9e2ad77b8e296ee7ea359544effb36185f17 Emit finished signal from the verification method]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=1de5782ab79f18d4d80dc946048ac467691d95a8 Search for sum in SHA256SUMS file before calculating it]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=38fb6dd5e2648896176fe0ce8d38db35d0622804 Verify Ubuntu ISO image using SHA256SUMS file]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=4466cf3a03d6eaed77871a6eec17b6ed13a5f048 Fix IsoVerifier not emitting finished signal in some cases]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=7d186f55bf72979bbb012a190aa27f74f9c06cc4 Show warning message on ISO verification failure]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=5c80c9909a5b8b1e37c93e4f9164066d07288f17 Verify ISO image using SHA256SUMS file (Kubuntu)]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=55948db87b8d300090b2c9a4984769999d8a35f7 Verify ISO image using .sig file (Arch Linux & Neon)]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=241c920c8ed916b021882e7ac3da36c92d2a0ae7 Set writing flag to false when writing is complete]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=3db8aa57110004ae6163f14b0ee234a26faf7056 Include missing library]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=23f6408624b80bfd505a1a11a1adcb67a530712f Do not compile KAuth specific methods on Windows]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=d4d8aed437c8f36758b69f11fe5d1ab673ae6370 Add manifest to require administrator previleges on Windows]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=e294c8c44fee22e18560710b96d84d64e82b2362 Remove main dialog]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=06d0e05872fd1b8adf52f3641620af9a52e33b1f Reimplement close event of the main window]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=dfec65f4008fa0198bc23d3215eb3cd5fbdec74d Implement drag & drop in MainWindow]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=c1bef22f3c57dd175b5872485722e0c18666859a Clean KAuth helper]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=af201abd687d81af72ece2c02b8cca1d876a008b Enable external progress bar on supported platforms]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=250e56ac53c0bc259d40f7d2470fbdb360c706fd Use new signals and slots syntax]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=ec9ccc9d2f7f5df99c4b47f302f958704343ceac Use KAuth to write ISO image on Linux]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=65aa25a192852fc037d5e2e0274590b080997d84 Revert "Use a preprocessor definition to enable KAuth"]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=6d91c46340e79fac66caecb49329fbbc8c3ead05 Use a preprocessor definition to enable KAuth]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=ad0be0d43b287d89ecf2d43fcda57e3096f385d4 Add missing Windows specific cpp file to CMakeLists]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=1ee91722b442017fcc05c3316989efea6739e7d8 Use correct variable name]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=fe08133924b47ad2aa500832f8bc8836b08fc3d6 Implement ISO image writing in the new UI]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=95fd261198a2c02ba77815a84756d2c4a18b7485 Add missing Q_OBJECT macro]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=8eb5261d11ed69ca83e51a6c69bcee07a5846279 Disable KAuth if not writing ISO image on Linux]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=3ac8e1c85260080a7bd29161e66132d4e13eaaf0 Use KAuth on Linux only]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=aa230bcedeac22d0766c457a474f0f12a1db021b Add confirmation screen]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=e85a918d25dc0ea95ebc89bb2ec40c7935dffbd6 Use human-readable format for USB device size]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=526b981bc17e16a641d9a7a7a9b77b1640c6205f Enable the create button if an ISO and a USB device are selected]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=5b8935b4560dc64b1ef01002c4ecee6e6172108a Update usb devices list by monitoring usb devices]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=95dfbbc371298a767029b6af91995e88b0bf0bde Populate the usb devices list after the main window is shown]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=9f2b591a35f19327728d14732b67eb2bb5ab1f93 Use ISO image supplied as a command line argument]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=0117a2a175ca70144fb72e138935b009c1765ccc Put the logo above the central QStackedWidget]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=720ccbf804666e16ca470da16c5f33856d805efa Avoid empty spaces when resizing the window]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=476e992c4b64ffaf225037b8466724da7ccec09c Add button to select ISO image file]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=516d7f6578dd8f0abe417382514bddf69e143a25 Use a QStackedWidget as the central widget for the main window]
  - [https://cgit.kde.org/isoimagewriter.git/commit/?id=3e3543a42848d01612b7f814a6182f35265df6c9 Add main window with ISO & USB selection screen]
=== Other Commits ===
  - [https://phabricator.kde.org/R877:501b141a662ec134710b13492678d11918e9ff12 Add blueprint for KDE ISO Image Writer]
  - [https://invent.kde.org/sysadmin/binary-factory-tooling/commit/8cf9e31e5b64b59f9612a1f3cdbdc7787ea8f10f Add ISO Image Writer to the list of enabled projects]


== Links to Blogs and other writing ==
== Links to Blogs and other writing ==
   - [https://fbgsoc.home.blog/2019/06/10/kde-iso-image-writer-revamping-the-ui/ KDE ISO Image Writer – Revamping the UI]
   - [https://fbgsoc.home.blog/2019/06/10/kde-iso-image-writer-revamping-the-ui/ KDE ISO Image Writer – Revamping the UI]
  - [https://fbgsoc.home.blog/2019/07/01/kde-iso-image-writer-windows-build/ KDE ISO Image Writer – Windows Build]
  - [https://fbgsoc.home.blog/2019/07/22/kde-iso-image-writer-gsoc-phase-2/ KDE ISO Image Writer – GSoC Phase 2]
  - [https://fbgsoc.home.blog/2019/08/22/kde-iso-image-writer-release-announcement/ KDE ISO Image Writer – Release Announcement]

Latest revision as of 17:45, 23 August 2019

KDE ISO Image Writer

KDE ISO Image Writer, which is part of the KDE neon project, is a tool to write ISO images into USB drives. It was forked from ROSA Image Writer and extended using the KDE Frameworks. Currently, the KDE neon website advises to use Rosa Image Writer because KDE ISO Image Writer is still under development.


The aim of this project is to revamp the user interface of the KDE ISO Image Writer following the designs made by the KDE community. I am also planning of packaging the application for various Linux distribution using their respective packaging system as well as Snap and Flatpak, for Windows and eventually for macOS. In addition, I would like to write documentation explaining how to use the application with the aim of including a tutorial showing how to write the KDE neon ISO images on a USB drive using KDE ISO Image Writer which could then be added to the KDE neon download page.


Mentors: Jonathan Riddell and Harald Sitter

Work report

User Interface

Building a new user interface for KDE ISO Image Writer was one of the main goals I set for this GSoC project. The new user interface is based on a design made by the KDE community. Most of the design was implemented by the end of the first coding period and the new user interface can be seen in the following screenshot:

Windows Build

In addition to revamping the user interface, an important goal of the this GSoC project was to make KDE ISO Image Writer run on Windows. I used Craft, which is a cross-platform build system and package manager, to compile the code on Windows. In order for Craft to fetch the necessary packages needed by the application, I wrote a Craft blueprint which is a Python file that describes an application (or library) and list its dependencies.


You can see the Windows build of KDE ISO Image Writer in action in the screenshot below:



N.B. The Windows build currently crashes when ISO images of certain distributions are used because of a segmentation fault caused by QGpgME on Windows.

ISO Verification

Before writing an ISO image, you have the possibility to verify the ISO image using various means such as a GPG signature or a checksum. Distributions use different means to certify their ISO images and the user generally has to go through a complicated process to verify the validity of ISO images.

KDE ISO Image Writer features ISO verification within the graphical user interface which facilitates the process of verifying ISO images before writing them to USB flash drives. It will identify the Linux distribution based on the ISO image file name and perform the verification accordingly.

During this GSoC, I refactored the ISO verification code to ease the addition of new verification means as well as new distributions.

To Do

  • Investigate the cause of the QGpgME segmentation fault on Windows
  • Improve and extend ISO verification
  • Improve Windows builds
  • Make macOS builds of KDE ISO Image Writer

Commits

KDE ISO Image Writer

 - Hide writing progress when KAuth job finishes with error
 - Fix success message not showing at the end of writing
 - Merge master branch from cgit
 - Update project version
 - Clean usb drive combobox code
 - Remove test application
 - Add missing copyright headers
 - Show placeholder text if no USB drive is plugged in
 - Hide writing progress when writing is cancelled by the user
 - Add back and close button to success widget
 - Remove old ISO verification code
 - Fix finished signal not emitted by IsoVerifier
 - Verify Netrunner ISO using SHA256 checksum input by the user
 - Emit finished signal from the verification method
 - Search for sum in SHA256SUMS file before calculating it
 - Verify Ubuntu ISO image using SHA256SUMS file
 - Fix IsoVerifier not emitting finished signal in some cases
 - Show warning message on ISO verification failure
 - Verify ISO image using SHA256SUMS file (Kubuntu)
 - Verify ISO image using .sig file (Arch Linux & Neon)
 - Set writing flag to false when writing is complete
 - Include missing library
 - Do not compile KAuth specific methods on Windows
 - Add manifest to require administrator previleges on Windows
 - Remove main dialog
 - Reimplement close event of the main window
 - Implement drag & drop in MainWindow
 - Clean KAuth helper
 - Enable external progress bar on supported platforms
 - Use new signals and slots syntax
 - Use KAuth to write ISO image on Linux
 - Revert "Use a preprocessor definition to enable KAuth"
 - Use a preprocessor definition to enable KAuth
 - Add missing Windows specific cpp file to CMakeLists
 - Use correct variable name
 - Implement ISO image writing in the new UI
 - Add missing Q_OBJECT macro
 - Disable KAuth if not writing ISO image on Linux
 - Use KAuth on Linux only
 - Add confirmation screen
 - Use human-readable format for USB device size
 - Enable the create button if an ISO and a USB device are selected
 - Update usb devices list by monitoring usb devices
 - Populate the usb devices list after the main window is shown
 - Use ISO image supplied as a command line argument
 - Put the logo above the central QStackedWidget
 - Avoid empty spaces when resizing the window
 - Add button to select ISO image file
 - Use a QStackedWidget as the central widget for the main window
 - Add main window with ISO & USB selection screen

Other Commits

 - Add blueprint for KDE ISO Image Writer
 - Add ISO Image Writer to the list of enabled projects

Links to Blogs and other writing

 - KDE ISO Image Writer – Revamping the UI
 - KDE ISO Image Writer – Windows Build
 - KDE ISO Image Writer – GSoC Phase 2
 - KDE ISO Image Writer – Release Announcement