Hello, The current dependency syntax:
[VERSION-OP] PACKAGE-NAME ["-" PACKAGE-VERSION] suffers a few problems: 1. It is not really human-friendly. People don't say things like: I need newer than monkey-1.2. They say instead: I need monkey, newer than version 1.2. 2. With long package names and versions, it becomes hard-to-read. Consider the following: >=dev-foo/bar-very-long-my-name-is-4-beta-17 Where does the version number start? And yes, this is a valid package name to our rules. 3. Some potentially colliding package names are disallowed. A package name can't end up with something looking like version. Thus, if upstream names package: frobnicator-11 We need to rename it in the tree, effectively losing the ability to follow upstream naming and introducing a bunch of unnecessary MY_P, S variables. 4. Adding, removing and changing versions is not friendly at all. Consider the following dep: >=dev-foo/bar-bas-bat-11.2.4_alpha Now, you want to bump the dep to 11.3. You need to find the version number, and modify it. Depending on the configuration, ^w is going to eat the whole package name or just a single component. Then, you want to remove the whole version. You need to first remove the version number, making sure it doesn't eat a bit of package name as well. Then, you have to go back to the beginning of the string, and remove the operator. Or you want to add a version. That one is simpler -- you just need to go to one end of the dep, add the operator, then to the other, and add the version. The fore-mentioned problems could be solved through introducing a more natural dependency syntax: PACKAGE-NAME [[*WSP] VERSION-OP [*WSP] PACKAGE-VERSION]] This way: 1. It follows exactly how people are reading it: PACKAGE-NAME [is VERSION-OP than PACKAGE-VERSION] 2. It is always clear what is the version, and what is not. Additionally, it allows you to introduce whitespace to increase readability even more: dev-foo/bar-very-long-my-name-is-4-beta >= 17 3. The optional (version dependency) part is at one side of the string, so it is easy to add, change or remove. Two times ^w and done! 4. It follows the syntax used by bash (for conditionals), pkg-config -- it is more natural in the environment. -- Best regards, Michał Górny
signature.asc
Description: PGP signature