Hi Paul,
I don’t think I’m understanding your point.
Here is my understanding of WordPress and it’s roles and capabilities ecosystem. All roles are equal, WordPress doesn’t give any weight to a role based on it’s name. It’s weight is calculated by the capabilities a role has. It doesn’t matter whether a role is a default WordPress role or one created by a plugin. There is no such thing as primary and secondary roles (I named them like that for easy UI management). A WordPress user object has a roles array. This plugin considers a role as a primary role if it sits in the beginning of that array and all roles following that index is considered secondary (just by this plugin, not by WordPress). WordPress treats all roles equal no matter on which index a roles sits in that array. For example, you can have “Subscriber” at the beginning index and “Administrator” at the second index and you will be treated as Administrator. You won’t be treated as “Subscriber” just because it sits in the beginning.
Roles are WordPress objects. There is no such thing as WordPress role and plugin role. For example you can create a role through this plugin, that role will still exist within your site even after you deactivate this plugin.
I want my plugin to be inline with WordPress basics and it’s concepts especially when I’m working with WordPress objects. I won’t try to reinvent the wheel or workaround it. I will only implement a functionality if WordPress allows it through its filters and actions or is inline with the WordPress concepts.
Thanks
Syam