I agree we are abusing tuples, and really should be using eventful lists.  I didn't realize that List() and Tuple() were so different---that with Tuple(), you are specifying the type of each element in the tuple.  Personally, I think it should be more like the List class---Tuple(Trait) should specify the trait for each element, and Tuple((Trait1, Trait2)) should be a shortcut way for specifying a tuple of two typed elements.  If you really want a specific collection of typed elements, you should probably be using another Traitlet class.