Puoi infatti avere più di una licenza in atto, allo stesso tempo, e dare all'utente del codice una certa libertà di scegliere la licenza che gli piace di più (vedi dual o multi-licensing su Wikipedia ), o obbligarlo a rispettare i termini di entrambe le licenze, purché non contengano requisiti contraddittori.
Un modello popolare ha una licenza per un "lavoro nel suo complesso" (contenente molti file sorgente) e diverse licenze per i singoli file di codice sorgente, a condizione che la licenza per il singolo file sorgente sia più permissiva di licenza per il lavoro nel suo insieme. Ad esempio, la GPL è una licenza in cui il testo menziona esplicitamente che si applica al "lavoro nel suo insieme". Questo è il motivo per cui il kernel Linux è in GPL, ma alcuni moduli del kernel contengono file che sono sotto il MIT o una licenza BSD modificata. Quindi, se usi o pubblichi quei file singolarmente e non come parte del kernel Linux, devi solo seguire i termini della licenza MIT o BSD.
Nel tuo caso specifico, mi aspetterei che la licenza MIT debba essere applicata al "lavoro nel suo complesso" e al MIT & Apache 2.0 per i file che contengono la licenza Apache. Quest'ultimo è - almeno leggermente - meno permissivo rispetto alla licenza del MIT. Ad esempio, la licenza Apache richiede di menzionare le modifiche al codice originale. IANAL, ma un tale termine non sembra contraddire la licenza del MIT. Ad esempio, quando si modifica il file con la licenza di Apache incorporata, mi aspetto che si debbano menzionare tali modifiche. Quando cambi un file diverso, mi aspetto che tu non sia obbligato a farlo. Ci sono più differenze tra i due come una clausola di brevetto nella licenza Apache che non fa parte della licenza MIT. Quindi, ciò che dovresti effettivamente controllare è se l'uso previsto del codice conferma su entrambe le licenze. E se non sei sicuro, chiedi a un avvocato.