On Tue, 12 May 2020 17:57:17 +0200 Ancor Gonzalez Sosa <ancor@suse.de> wrote:
On 4/28/20 4:56 PM, Ancor Gonzalez Sosa wrote:
The interface of the YaST Partitioner has reached a point in which is really hard to deal with it. We need to find a way to move forward.
As a first step, we have created this document that explains the problem and we hope it can be used as a base to discuss the future of the Partitioner interface.
https://github.com/yast/yast-storage-ng/blob/master/doc/partitioner_ui.md
Beyond small improvements like enhancing the workflow to format/mount a partition or implementing new kinds of wizards, I have been trying to come up with disruptive approaches for the whole thing. Something that really change the way in which the Partitioner is used, to turn it into a more guided tool.
Here is my first crazy idea (first of many, I hope). It's in an early stage, but I hope it can ignite some sparks.
Crazy idea 1 ============
Well, if you throwing around crazy ideas, then for me in qt ideal way to do partitioning is visual one. So for crazy idea ideally new widget that is like UML diagram or current device graph visualization. Ideally you should be able to drag and drop various components around do arrange it as you want. This way you have in one place two important things - 1. you still see how your partitioning looks like 2. you can quickly rearrange it without long set of delete/create as now. And details like partition sizes and so on will be in object details. Of course question is what to do with ncurses, where it is not possible. another crazy idea for a more guided approach is approach that use autodesk inventor for mechanical designs. Where basically you define relations and it models how result looks like visually. So if you are fine with result you use it and if not you add another constrain ( like size here, angle there or hard join of parts ). To be honest this approach was very productive and easy to use when I was on high school as you again always see result and if it is not what you want, you always just define what is important for you. So as example run you open partitioner and see current partitioning ( or current proposal ) and want to change it. So you e.g. add LVM and define that you want root partition on it and not /home partition on it and it shows you how it will look like after this constrain...and if you still do not like it, you add another, like encryption on home mount point, or set size of root partition to something different and proposal has to respect new value you set. So just my crazy ideas how to make partitiong more user friendly with visualization of result. Josef
Sections like "hard disk", "LVM", "RAID", etc. would not longer be the main way to interact with the Partitioner. Their functionality will remain somewhere, maybe slightly hidden compared to the current status.
Instead, the main entry point will be a list of the devices (or free spaces) that are currently usable. Let's see it with an example.
Imagine a system with sda containing two Windows partitions, sdb containing a small partition and a partially used LVM and sdc completely empty. In the classic Partitioner we would navigate through a tree containing all this:
Hard disks - sda - sda1 - sda2 - sdb - sdb1 - sdb2 - sdc RAID Volume Management - vg0 - root - home Bcache
But for such setup, the list that I propose (I'm still not sure if it would be the first section of the left tree or something completely different) will contain something like this:
sda1 (NTFS) sda2 (NTFS) sdb1 (ext3) vg0/root (btrfs) vg0/home (ext4) Free space at vg0 sdc (empty)
Those are the devices (or spaces) that can be used for something immediately.
sda is not displayed because is fully used, so there is not much you can do with it unless you delete/resize its partitions first. sdb2 is not displayed because it's the PV of vg0, so you likely don't want to do anything with it, unless you destroy vg0 first. And so on.
In that list, if you select sda1 you could then decide to mount it or reformat it. And of course, you could also decide to delete or resize it, which will result in a new free space appearing in the list.
If you select the free space in vg0, you will have the option to create a new LV.
If you select sdc, you will be able to format it or to create a partition table on it. Maybe even the option to use it as PV for an existing or new volume group.
Do you get the idea? The main point is to get a curated list of devices that you likely want to modify in your next action and to offer the applicable/reasonable options for each of them.
Crazy idea 1. Extension ========================
When you select a device, maybe we could display the actions that are planned for that device, in addition to the possible options to use it or modify it.
Imagine vg0/root already existed in the system but you have decided to reformat it and mount it as root. The screen you see when clicking on it could be something like:
Previous status: formatted as ext4
Chosen action(s): - Format it as Btrfs - Mount it at "/" (see subvolumes)
Possible actions: [Format / mount] [Delete] [Resize]
Just "thinking aloud" but... what do you think? Any useful point in the whole mail?
Alternatives? Just release your imagination!
Maybe some kind of meeting for further brainstorming?
Cheers.
-- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org To contact the owner, e-mail: yast-devel+owner@opensuse.org