it could live on the view manager or in darktable.* if there will be enough stuff to justify a global undo struct. please don't declare global variables like that (ever, and if you do not with a generic name without a prefix like that, or at least make it static to limit the damage to that file). this way, ulist will be accessible from all other .c files in libdarktable.so.