my hackweek project was to evaluate using the boost graph library (BGL) in libstorage. For me the project was interesting and successful. I have documented it at https://github.com/aschnell/libstorage-bgl-eval/wiki. The code is also available there.
So now I would like to redesign the storage part of YaST. Here are the main steps required:
- Extend libstorage-bgl-eval to fully support disks, partitions and simply filesystems (probing, committing, testmodes, testsuite).
- Try to make a compatibility layer.
- Make the new API robust against API and ABI changes.
- Export new API to Ruby (help would be good) for use by all YaST modules.
- Get a simply installation working (two partitions, ext4 and swap).
- Extend libstorage-bgl-eval to current libstorage functionality. Maybe drop a few features, e.g. loop-back devices (once used for encryption).
- Make the new API suit the needs of all YaST modules (input from other developers required). If required add utility functions.
- Make all code in YaST use new API (task for several developers).
- Make expert partitioner use new features, e.g. use disks without partition table for filesystems.
- Rewrite storage proposal (specification required!).
- Finally drop target-map (as decided during workshop).
- Drop compatibility layer.
In the end yast2-storage would ideally only contain dialogs and no logic for other YaST modules (since all of that moved to libstorage). But if some utility functions are easier to implement in Ruby they can stay there.
I assume that altogether the redesigning will take more than half a year. Anyway I think it is required to keep the code maintainable and be prepared for new feature requests. Some existing features request might already be implemented along the way (e.g. https://fate.suse.com/316251).