Well I can help with at some of this. Assuming winter is October - March and summer is April - September: opening_hours=Jan-Mar,Oct-Dec Mo-Fr 10:00-17:00; Apr-Sep Mo-Fr 10:00-18:00; Sa closed; Su 11:00-16:00 It might be possible to reduce the first month range to just Oct-Mar, but I don’t know if months are allowed to wrap like that (I know hours can, eg. Mo 18:00-02:00 is equivalent to Mo 18:00-24:00; Tu 00:00-02:00).
But since rules that appear later in the list override earlier ones, we can just simplify it to: Mo-Fr 10:00-17:00; Apr-Sep Mo-Fr 10:00-18:00; Sa closed; Su 11:00-16:00 In other words we make the winter hours the default, then override them during the summer months.
As for the fee, the standard fee would be fee=yes charge=50 MAD/person
and then something like fee:conditional=no @ We, except I don’t know how to further restrict that to students.
Personally I would not bother with tagging the “free admission” exceptions. These are often too numerous and too loosely define to try to encode in a computer-readable format, and still be useful. So for example, what is the definition of “students”? What sort of identification is required? Would a 50 year old PhD student with a university ID be admitted? Primary school students are free, but would a pre-school child be charged admission? Are there any other cases of free admission like on certain holidays? Army veterans on Remembrance Day? Is admission free for ICOM members?
Additionally I don’t think there are actually any data users that parse this level of detail in fee:conditional. fee:conditional | Keys | OpenStreetMap Taginfo lists only the editors Josm and Vespucci, and then MapComplete but only for charging stations. So in practice you would only be tagging this to communicate with other mappers, not with end users.
I often use YoHours to create the opening hours content. It is not perfect but it gives a very good start. And if the hours are a bit complicated I do a check with the opening_hours evaluation tool
YoHours produces Mo-Fr 10:00-17:00; Su 11:00-16:00; Apr-Sep Mo-Fr 10:00-18:00;
This is true when using ; but , can also be used as a separator but that adds to a previous entry to the existing one. Which makes it possible to do the following Mo-Fr 10:00-17:00, Apr-Sep Mo-Fr 17:00-18:00; Su 11:00-16:00; .
Notice the comma between the general hours and the Apr-Sep extension which has only the extra hour. YoHours finds that to complicated but offers a link to the evaluation tool.
The second option is also not easy to interpret by humans, but it is valid.
if I understand the conditional wiki correctly, I believe it would be fee:conditional=no @ We AND student
I see no real issue in tagging the fee:conditional=, because not doing so just perpetuates the chicken and egg situation of few use it, therefore few support it, therefore few use it, etc.