The YaST team is rewriting yast2-storage. That includes new shiny code for the storage proposal during installation. It calculates what partitions and/or volumes need to be created to allocate the system and finds the best way to create those partitions in the existing free spaces. The second part becomes more complicated than it looks as soon as you start considering the restrictions imposed by each volumes and by the technology (primary vs logical partitions, for example).
Right now, the problem is solved by brute force. All the possible distributions of partitions and LVM physical volumes are considered and the best one (according to several simple criteria) is chosen.
But I have the feeling that the problem is somehow equivalent to a well-known one called "variable sized bin packing problem", a.k.a. VSBPP (info about bin packing in wikipedia). Of course, we don't need a complete solution for it, although it seems to be easily solved using linear programming: paper, one example.
Trying to get a faster proposal calculation applying linear programming to YaST sounds like an interesting Hack Week project.
Looking for mad skills in:
This project is part of:
Hack Week 15