First of all thank you for the research and wish you a good luck in making the changes happen.
## Reordering to PACKAGE OP VERSION <cat/pkg> [<operator> <version>] [:<slot>] is more sane than <cat/pkg> [:<slot>] [<operator> <version>] even though it's not so "hierarchically correct". Thus instead of writing dev-foo/bar:4===4.1 one would write dev-foo/bar==4.1*:4= which is nicely readable. But in case the box brackets notation gets incorporated (as in Exheres), <cat/pkg> [:<slot>] [[<operator> <version>]] is the way to go. ## Version ranges dev-foo/bar:0[(>=2 && <4) || (>=6 && <10)][baz?] looks the most promising to me as it allows to include and exclude any number of ranges. ## Things not included ### Comments/annotations Currently, there is no way to put inline comments to *DEPEND, IUSE, ..., thus the only supported way is to put the comments above the specification and somehow tell the reader what part of the specification is the comment about. For 3-4 deps it's acceptable, for 20+ it's insane and thus no one does it, losing valuable information about the reasoning by doing so. Mu current workaround is: DEPEND_A=( # comment "cat/pkg..." "|| (" # comment "cat/foo" "cat/bar" ")" ) DEPEND="${DEPEND_A[*]}" ### Logical operators for groups #### OR Currently there is no way to specify: foo||bar? ( cat/pkg ) and one has to copy&paste a lot: foo? ( cat/pkg ) bar? ( cat/pkg ) #### AND AND can be specified via nested groups: foo? ( bar? ( cat/pkg ) ) but this syntax is verbose and not explicit. foo&&bar? ( cat/pkg ) would be much more readable.