Sure.

Composer names versions (including unstable, dev, etc) based on tag and branch names. For branch names by default it looks for eg 2.0 or 2.0.x (which it will call version 2.0.x-dev). Bear in mind that unlike a tag, a branch-based version is not immutable - the 2.0.x-dev "version" will be updated to always point to the tip of the 2.0 development branch.

It if doesn't understand a branch name it will create a version "dev-{branch}" - so Kohana repos will have a "dev-3,3/dev", "dev-3.3/master" etc. See http://getcomposer.org/doc/02-libraries.md#branches

That naming is fine if I want to depend on a stable version eg `"kohana/core" : ">=3.3"` because it will always detect your tags as proper named versions. If I want the unstable version, it would still work if I knew to put `"kohana/core": "dev-3.3/dev"` in my composer.json - so long as I'm not using other packages that require >=3.3, as composer can't tell that the dev-3.3/dev meets that requirement.

But if I use the standard syntax of `"kohana/core": ">=3.3@dev"` (or use command line or other config to tell it to prefer dev versions, as you might on a CI server for spotting future API breakages) it won't know where to find the 3.3 development branch so I'll always get the most recent tagged version.

These aliases fix that by telling it that the branch version called dev-3.3/dev is the 3.3.x development branch (and likewise for 3.4).

That's all in-principle - locally it seems to be doing what I expect but I've not used aliases before and they might have to be tweaked in future. Agree that the composer docs are not the clearest in places, but I'm pretty confident I've understood them properly.

Cheers,
Andrew