From Fedora Project Wiki

Revision as of 12:29, 3 April 2017 by Yoderlukas (talk | contribs) (Fedora Media Writer: Persistent, Configurable, and Integrated Storage, with Ability to Resize Partitions to Fit Free Space and Safely Upgrade Software)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Contact Info:

   Name:  Lukas Yoder
   Email: yoderlukas@gmail.com
   Blog:  http://lukasgsoc2017.blogspot.com/

About Me: I am a budding programmer who programs regularly in C++, some C, BASH, and Python. I'm majoring in Electrical Engineering and I hope to hone my programming skills to facilitate that. I've been alternating between Debian and Fedora for the past half-decade, and a few months ago, I've finally settled down to using Fedora for development. My goal in working on the Fedora project is to help make it simple and easy to use Free and Open Source software (and make every year the Year of the Linux Desktop). Although I have not previously contributed to the Fedora Project, I have open-sourced a few small projects on GitHub and helped debug others' projects (https://github.com/SentToDevNull).

What are you studying? Why? I'm studying electrical engineering because I have a deep-seated love for digital signal processing, how various different types of signals (such as audio, video, radar, etc.) are encoded. Audio and video codecs, such as the new HEVC fascinate me with their ability to encode the same amount of data as previous codecs in often less than half the filesize. Unlike with HEVC, though, one of my ultimate goals is to aid in developing modern non-proprietary, patent-free codecs so that people don't have to be shackled by royalties to express themselves.

What motivates you to do your best? How do you stay focused? Briefly describe how you organize your work. What motivates me to do my best is seeing deficiencies or things to be improved upon. When I see a problem, instead of accommodating the problem (usually with a "dirty" workaround), I tend to work through it until the problem no longer exists. For instance, in one of the robotics competitions I participate in, to program with the libraries given, one had to download an Eclipse package, install Eclipse, load the package, (work around other broken Eclipse package dependencies,) and then deal with a bloated and redundant build system that littered copies of libraries all over the user's home directory. I spent almost a full day rewriting it, and now without garbage and redundancy, I can build and push my robot's code in seconds. In essence, when I see a problem or something that could be executed better, I like to challenge myself by doing my best to make it as perfect as I can.

Staying focused has never been a problem for me. As soon as I lock onto a problem that I intend to solve, it is very difficult to pry me away from it.

I organize my work through CalDav, which I run on my server and allows me to sync my task lists (for school and otherwise) across all my devices, assign start and due dates, and record my progress.


Why Us? I've been using Fedora for the longest time, appreciate it's community, and enjoy the cohesive desktop experience I get while running Fedora Workstation.


Why do you want to work with the Fedora Project? I want to work with the Fedora Project because it is where a lot of the innovation, the "Firsts" in the FOSS world, happen. Everything from almost always having the latest stable GNOME release first to being the first major distro to ship Wayland makes this the ideal project for devs to contribute to. I would like to help work at the forefront of Linux/FOSS progress.

Do you plan to continue contributing to the Fedora Project after GSoC? If yes, what sub-project(s) are you interested with? I do plan to contribute to the Fedora Project after GSoC, namely to help improve the GNOME and multimedia sub-projects.

Why This Project? - Consider these questions

Which specific project interests you? If you are proposing your own project, do it here. If you are proposing the project, explain why it benefits the community. The Fedora Media Writer project interests me primarily because of what it does: The biggest turn-off to using FOSS software is not knowing how to get it working in the first place. Plenty of people who try to get into FOSS don't know where to start, or they don't know which distros to choose. Having a live image writer is great for helping people make the first step and test distributions like Fedora, but many non-technical users are confused when they reboot their computer only to find that the things they worked on were not saved. Persistent storage is a feature that should be central to having a live Fedora disk for introducing people to the operating system.

Have you contacted the mentor(s) listed for the project? I have very recently made initial contact, and am eagerly awaiting a response.

What relevant experience do you have for this project? I am very familiar with disks, partitions, and imaging (having worked with more Linux/BSD distros than I'd care to admit, a few embedded projects, and virtual machines). I am familiar with C++, my most recent project being writing a sparse matrix multiplier with CUDA and libparadiso for an internship. I do not have as much experience with Qt as I'd like to, but the improvements I would like to work on are mainly non-GUI in nature.

What do you want to gain from this project? From this project, I would like to hone my C++ skills, expand my knowledge of Qt, and gain satisfaction from having made an impact in the FOSS world.

Describe this project in your own words. What does it mean to you? What do you think the final deliverable is? To me, this project entails adding not only a persistent storage partition, something that could be done easily enough, but also making it so that if persistent storage is configured on media that is written by the program, all documents/other media as well as all programs installed are written to the persistent medium. This would likely involve mounting the persistent storage at a set mount point, creating a skeleton file system hierarchy on it, with the default user's home directory in persistent storage, reconfiguring dnf for the live distro to write all new installed programs to the filesystem at the persistent storage mount point (instead of the ramdisk), adding directories from the persistent mount point to the live image's PATH, and ensuring that programs such as GIMP and LibreOffice save files to the persistent storage.

This project would also entail allowing users to configure their user account information and passwords at the installer menu after choosing persistent storage.

Another goal of this project would be to have a "resize image to fit disk" option that can be chosen.

Furthermore, this project should allow users to update their live distributions without disturbing the work that is on their persistent partitions.

Why should we choose you over other applicants? I believe that I should be chosen over other applicants because I have worked with live images before (for example, manually updating my TAILS installation, which had persistent storage configured). I believe that I should be chosen over other applicants because I have experience with C++ and Linux system administration, and I never back down from a challenge.

Propose a rough schedule for this project. Ideally you will have regular deliverables throughout the entire period. May 30 -- June 06: Adding the option in the interface for configuring persistent storage and implementing the creation of partitions, one for the live image (with extra space for future updates) and one for persistent storage. June 07 -- June 13: Adding the skeleton filesystem to the persistent storage partition, configuring it to mount from within the live image, and having the live image add relevant directories from persistent storage to the PATH. June 14 -- June 21: Reconfiguring dnf to install to the persistent storage, and ensuring that programs the user runs save there as well by default. June 22 -- June 29: Allowing users to tweak their usernames and passwords for the live-distro. June 30 -- July 07: Allowing users to resize their live images to fill all available space. July 08 -- July 15: Allow users to update their live image partitions with the latest live image, retaining the data in persistent storage. July 16 -- July 23: Searching for bugs and bug fixing. July 24 -- August 14: Ensuring the client works with Windows. (Given the difficulty of porting to Windows, as well as the different way in which Windows handles files and partitions, which the Media Writer will need to edit, this could prove tedious. This may require Cygwin if libraries used are not compiled for windows.) Then more bug squashing.

What are you specific plans from May to September (eg: Exams in university, internships, vacations..etc). We need to know if there are periods of time where you are likely to be unavailable. We are better at accommodating these periods if we know of them in advance. From June through July, I plan to have an internship/job. Based on workload, I may need to take a bit of extra time on some of the tasks, which is why I have left a considerable amount of time for bug fixing and ensuring the application works on Windows, should I need more time to complete some of the tasks.