This issue should probably be tagged "enhancement".
Let's talk data organization, mainly the current directory layout: The current way the data directory is laid out is a bit of a mess. Not too bad, but I think it needs some fixing. Before I attempt to do this, I'd like to talk about a few things and get some insight before I just pick something, change a bunch of things and then find nobody likes it as this will likely break a bunch of stuff. I'm already working on moving around global variables and better compartmentalization of code, and I feel this is the next big step.
There are two ways I can see the data directory being laid out. I will call these Library-centric and Project-centric as I am unfamiliar with whether more formal technical terms exist.
What we have right now.
Library-centric is what closest resembles what we have right now: one folder for each module type (anthropometry, assets, bboxes, etc) with all the module files from all figures in each folder. The exception, as far as I can tell, is the humanoid_library.blend which contains all the texture nodes, shaders, skeletons, geometry, etc. (I feel like these should be separated into their own files). Library-centric is most likely going to be the easiest to implement; There is only one root directory to worry about and all the files that need to be referenced are in it. The problem is distributing 3rd party additions (new characters) would most likely require merging and removal of said additions would either require a program or a lot of time removing files (and woe to you if said modification replaced anything).
Here is an example of what the data folder would look like as Library-centric (directory count and hierarchy is subject to change):
data
├───anthropometry
│ ├───hu_f_anthropometry
│ └───hu_m_anthropometry
├───assets
│ └───mblab_assets_textures
├───bboxes
├───expressions_comb
│ ├───anime_expressions
│ └───human_expressions
├───expressions_morphs
├───joints
├───measures
├───morphs
├───pgroups
├───phenotypes
│ ├───f_af01_ptypes
│ ├───f_an01_ptypes
│ ├───f_an02_ptypes
│ ├───f_as01_ptypes
│ ├───f_ca01_ptypes
│ ├───m_af01_ptypes
│ ├───m_an01_ptypes
│ ├───m_an02_ptypes
│ ├───m_as01_ptypes
│ └───m_ca01_ptypes
├───poses
│ ├───female_poses
│ ├───male_poses
│ └───rest_poses
├───presets
│ ├───anime_female_base
│ ├───anime_male_base
│ ├───human_female_anime
│ ├───human_female_base
│ ├───human_female_elf
│ ├───human_male_anime
│ ├───human_male_base
│ ├───human_male_dwarf
│ └───human_male_elf
├───textures
├───transformations
├───vertices
└───vgroups
Project-centric is what I think we should aim for. If you have played a computer game with modding support (Rimworld, Kerbal Space Program and Starbound come to mind) you might have some idea of what I'm talking about. Instead of everything being under the same root directory, each character and addition is in its own "project" directory. This makes it easier for debugging and loading specific characters. Removal or adding of characters and additions just requires you moving a single folder. Loading EVERYTHING as a library would take longer without preemption (I think that term fits here), however I think this could easily be solved by the addition of a project info JSON file that contains project information. MB_lab would visibly work as if all the directories for each project were merged together. While it makes the entire directory tree bigger, it makes it much easier to work with in piecemeal.
Here is an example of what the data folder would look like as Library-centric (directory count and hierarchy is subject to change):
data
├───hu_base_female
│ ├───anthropometry
│ ├───assets
│ ├───expressions_comb
│ ├───expressions_morphs
│ ├───joints
│ ├───measures
│ ├───morphs
│ ├───pgroups
│ ├───phenotypes
│ │ ├───f_af01_ptypes
│ │ ├───f_as01_ptypes
│ │ └───f_ca01_ptypes
│ ├───poses
│ │ └───rest_poses
│ ├───presets
│ │ ├───human_female_base
│ │ └───human_female_elf
│ ├───textures
│ ├───transformations
│ ├───vertices
│ └───vgroups
├───hu_base_male
│ ├───anthropometry
│ ├───assets
│ ├───expressions_comb
│ ├───expressions_morphs
│ ├───joints
│ ├───measures
│ ├───morphs
│ ├───pgroups
│ ├───phenotypes
│ │ ├───m_af01_ptypes
│ │ ├───m_as01_ptypes
│ │ └───m_ca01_ptypes
│ ├───poses
│ │ └───rest_poses
│ ├───presets
│ │ ├───human_male_base
│ │ └───human_male_elf
│ ├───textures
│ ├───transformations
│ ├───vertices
│ └───vgroups
├───human_male_dwarf
│ └───presets
│ └───human_male_dwarf
├───hu_female_anime
│ ├───assets
│ ├───expressions_comb
│ ├───expressions_morphs
│ ├───joints
│ ├───measures
│ ├───morphs
│ ├───pgroups
│ ├───phenotypes
│ │ ├───f_an01_ptypes
│ │ └───f_an02_ptypes
│ ├───poses
│ ├───presets
│ │ └───human_female_anime
│ ├───textures
│ ├───transformations
│ ├───vertices
│ └───vgroups
├───hu_male_anime
│ ├───assets
│ ├───expressions_comb
│ ├───expressions_morphs
│ ├───joints
│ ├───measures
│ ├───morphs
│ ├───pgroups
│ ├───phenotypes
│ │ ├───m_an01_ptypes
│ │ └───m_an02_ptypes
│ ├───poses
│ ├───presets
│ │ └───human_male_anime
│ ├───textures
│ ├───transformations
│ ├───vertices
│ └───vgroups
I think starting with a Library-centric model while marking out parts we identify as needing to be changed when switching to a Project-centric organization once we nail down the specifics.