Brainstorming for Parted 'Edge' 2.x

  • API overhaul for libparted - Inconsistent function naming has caused confusion for some developers. Functions will be renamed to follow a defined naming pattern (for example, see libglib). Functions we come across that are no longer necessary, toss.
  • Unit testing framework - The Check testing framework has been chosen. Otavio Salvador is working on it.
  • Filesystem VFS layer - Current filesystem support was written from scratch and presents numerous problems for extending support to new filesystems or additional filesystem features. Case in point, ext3 extended attribute support. A reworking of the filesystem support system in libparted is essential to ensure we can integrate future filesystems and filesystem features. At the same time, removing the homegrown filesystem code and using the filesystem libraries that are already out there will remove some unnecessary work in libparted.
  • Real Partition ID Support - There's no way in parted to set a partition to a type that doesn't correspond with a file system libparted knows about. GNU fdisk currently just handles this by offering the user a way to set this directly in the partition table struct, but a virtual layer would be most appreciable.
  • Port to Darwin - There is no free partitioning tool available for OS X users, and given parted's support for HFS and GPT; this is a very lucrative option. I've done some rudimentary work here; but need to learn a lot more about darwin internals before producing anything conrete. This is also a prerequisite to developing a mac-fdisk clone for inclusion within GNU fdisk. Anant Narayanan is working on it.
  • Partition guessing - libparted currently either recognizes a relatively sane file system or nothing. We want to return a number between 0 and 100, like gpart. We can also borrow the code to generate this number from gpart. This capability makes it possible to rescue whole partition tables (again, cf. gpart).
  • Allow raw partition resize - parted won't resize a partition without resizing the file system on it. This is problematic if it can't do that.
  • Command logging facility - It would be nice to record the user's commands. We can then dump the most recently used commands, stack backtrace and such other relevent information in a text file, which the user can send along with the bug report.
  • Undo/Redo - We want to offer undo/redo or commit/rollback functionality. Vanni Brutto, the QtParted author, has already submitted a patch draft for this, and fdisk already has code for this as well. Brutto probably needs to be contacted personally, he might not read the list.
  • Utility library - Lots of stuff in parted.c is redundant and needs to be moved to libparted so others can benefit from it. This requires the definition of an API that manages the questions these routines need to ask of the end-user.
  • Polish help system - The current help system is hopelessly overloaded. We need a flexible one like gdb has.
  • UI commands modularization - Modularize the UI to make easier to plug new commands.
  • UI getopt replacement - Replace the use of getopt by arg.