Thanks for your answer, Lucas. Much appreciated. I understand this doesn't mean you are willing to do something about it, but at least we can start with a conversation). That's great.
Alembic's main purpose is to interchange animation data between packages, whereas rebuilding a complex rig or hair system to generate the same geometry from one package to the next is nearly impossible. Camera light geo, too, can be using things specific to a given DCC tool (Blender uses Bezier, as the primary curve type, whereas Maya uses splines), so that we need something like Alembic to bake them out also makes sense.
I see two major use cases justifying the use of Alembic (do you see others?):
- Interchange: You bake things out and send them to a client or another vendor on a project, and they can load them in their DCC tool and keep carrying on with the work. That's one use of Alembic.
- Reviews. You bake an animation out and send it to a client for review. In this case, people are generally not interested in looking at a given animation with all the textures but are focused on looking at the animation itself. So very often, they look at a grey render of the 3D objects, etc. When used in this contest, it can become useful because you can look at this animation from a given camera. Great Alembic supports cameras. Also, in this context, looking at this animation with some indication of what the lighting is supposed to be can reveal to be as equally useful.
To come back to materials. If materials are important, this can be easily done. If UVs are there, based on some naming conventions (name of the objects), one can figure out how to reconnect a set of textures to the right input of a material node. That's not possible with lights. You need the light type, position, color, intensity, etc., or else you can do nothing. That's why there's a fundamental difference between the two. Furthermore, as you suggested, support for lights in Alembic is "almost" there (since the ILightSchema already exists).
Being able to load at least some basic light types with even a restraint but most common parameters would be valuable and would not try to compete with using an alternative solution such as USD. The problem with going with USD to define things not defined by Alembic is that it adds another layer of complexity if the tool you are using for reviewing these Alembic files still needs to handle USD. Having to add USD support for dealing with basic lights is overkilled (and hopefully, I have explained why having lights over material is valuable in using Alembic for reviews). Even if you don't go with the USD route, you still need to import lights separately to the Alembic file, which requires a second export process from the tool from which the Alembic file was exported to some secondary file (and file format). That's a pity, considering Alembic could handle that part so easily.
IMHO, having basic light types supports (point, distant, projector) and basic/common properties such as cone angle, falloff, color, intensity, of course, transformations, etc. would be justified for the Alembic format, and as I mentioned, valuable and thus used. Lights have the same problems as materials. Every place more or less has its own set of rules, naming conventions, etc. One might say, why not include IBL (which might require specifying which texture you are using, etc.), geometry lights, etc? Again I don't think the point is to replace something like glTF, FBX or USD. It's more again that if you have distant (sun), point, or spotlights in the source DCC tool (the tool from which the Alembic was exported), it would be great to carry them along in the Alembic so that we at least have something, even if basic, in the review context out of the bat, rather than having to go through a separate export process.