Ciao a tutti, oggi parliamo di una notizia che ha “scosso” il mondo degli sviluppatori in ambito .NET. Qualche mese fa, Jimmy Bogard (l’autore delle due popolari librerie .NET MediatR e Automapper) aveva annunciato che le sue librerie sarebbero diventate a pagamento per poter garantire una sostenibilità a lungo termine. Fino a poco fa non si conoscevano i prezzi ma ora sono stati pubblicati: niente spoiler in questa prefazione ma procediamo con ordine! 😉
Mediatr
Cosa è
MediatR è una libreria .NET che permette di disaccoppiare le comunicazioni tra i componenti dell’applicazione, fungendo da “intermediario” in un contesto dove si vuole utilizzare il pattern CQRS (Command-Query Responsibility Segregation) o Vertical Slicing.
E’ (era) una libreria open source molto popolare che negli anni è stata largamente utilizzata in molti progetti, anche enterprise.
Uno dei suoi punti di forza è il meccanismo di pipeline che permetteva di aggiungere logiche applicative comuni attraverso gli handler, riducendo il codice ripetitivo o gestendo scenari complessi con vincoli generici. Un esempio è la possibilità di aggiungere un middleware per gestire i permessi.
Altri punti di forza sono scuramente la configurazione semplice ed un’enorme quantità di letteratura e casi d’uso, essendo una libreria molto famosa, apprezzata ed utilizzata.
I prezzi
Veniamo al tasto dolente, ma quanto costa? I prezzi sono disponibili qui e si dividono tra mensili ed annuali. Sono a mio avviso un po’ alti e mi sarei aspettato di trovare anche un qualche tipo di licenza “a vita” legata ad una specifica versione di prodotto, cosa che manca.

Un altro punto “dolente” è che nel momento in cui si acquista la licenza ci verrà fornito un codice con scandenza annuale: questo è un punto estremamente negativo, significa che ogni anno tutte le applicazioni che avremo prodotto andranno “aggiornate” cambiando il codice di licenza (considerando che una licenza può essere usata su infiniti progetti). Cosa succederà se tardiamo ad aggiornarlo? L’applicazione smetterà di funzionare? Ad oggi non lo sappiamo, quello che è specificato è che nei log appariranno delle righe di warning che avvisano della licenza non valida/scaduta (tutto il meccanismo di validazione della libreria è auto contenuto, non è previsto ad oggi nessun server di validazione).
Attenzione anche al numero di sviluppatori: le licenze si basano anche sul numero totale di sviluppatori che un’azienda ha, bisogna considerare anche i consulenti esterni che collaborano, anche loro rientrano nel conteggio del “team”.
Il download della libreria verrà fatta tramite nuget (sul sito è riportato anche che sarà disponibile un canale nuget privato). Inoltre avremo accesso ad un canale Discord (immagino che sia per il supporto) e l’accesso a tutte le nuove versioni della libreria.
Quando non è necessario pagare una licenza
La licenza si applicherà solamente dalle nuove versioni del prodotto in avanti, tutte le versioni precedenti della libreria rimangono open source e utilizzabili gratuitamente. E’ possibile scegliere di mantenere la libreria e di non aggiornarla ma onestamente non credo che sia una strada percorribile, soprattutto in vista del Cyber Resilient Act, in vigore dal 2027.
Esiste però una versione “community” gratuita, disponibile per aziende/privati che non hanno un guadagno annuale superiore a 5 milioni di dollari o per progetti open source / no-profit, con budget annuale inferiore a 5 milioni di dollari.
Le alternative
Ognuno di noi ed ogni azienda valuterà se il prezzo è corretto oppure no, cerchiamo però di capire quali sono le alternative.
Prima di tutto bisogna partire dal livello di complessità dell’applicazione: un’applicazione articolata, con pipeline più o meno strutturate e middleware vari sarà sicuramente più difficile da sostituire con un altro prodotto. Se invece usiamo MediatR solamente per gestire in modo “semplice” il pattern CQRS all’interno della nostra applicazione allora possiamo sostituire il tutto in modo più “facile”.
Alcune librerie che potrebbero diventare alternative e di cui ho sentito parlare sono Cortex.Mediator (git) o Lite Bus (https://github.com/litenova/LiteBus), entrambi progetti che implementano questi pattern. Sicuramente ne esisteranno molti altri, l’alternativa va scelta in base al grado di complessità della vostra applicazione.
Automapper
Cosa è
Difficile non aver mai sentito parlare di automapper, una libreria .NET che automatizza il mapping tra oggetti di tipi diversi, eliminando la necessità di scrivere manualmente il codice per mappare le property di due classi. Nata con l’avvento del pattern MVC, dove il mapping tra i DTO ed i View Model era notevole, ha guadagnato molta popolarità nel corso degli anni.
I prezzi
Essendo che l’autore è lo stesso di MediatR, le politiche dei prezzi sono identiche a quanto scritto per MediatR.

Le alternative
Al giorno d’oggi abbiamo a disposizione strumenti come Copilot, ChatGPT, Claude, ecc… ci serve davvero una libreria del genere? Dal mio punto di vista è molto più semplice sostituire questa rispetto a MediatR. Certo, tutto dipende dalla complessità del progetto e dal numero di classi e di mapping implementati ma rispetto al passato oggi abbiamo il supporto dell’AI per supportarci nella scrittura di codice noioso e ripetitivo e questo “giustifica” un po’ meno l’utilizzo di questa libreria.
Conclusioni
La decisione di Jimmy Bogard di rendere a pagamento MediatR e AutoMapper segna un punto di svolta significativo per l’ecosistema .NET: sapevamo che questo giorno sarebbe arrivato.. Ed eccoci qua! Se da un lato è comprensibile la necessità di garantire sostenibilità economica ai progetti open source, dall’altro i prezzi proposti e il modello di licenza annuale potrebbero risultare onerosi per molte aziende, soprattutto per quelle più piccole.
La scelta di mantenere gratuite solo le versioni precedenti mette gli sviluppatori davanti a un dilemma: continuare a utilizzare versioni non aggiornate (con evidenti rischi di sicurezza, soprattutto in vista del Cyber Resilient Act), investire nelle licenze o valutare la migrazione ad una alternativa?
Questo cambiamento ci ricorda l’importanza di non dipendere eccessivamente da librerie esterne, il disaccoppiamento e la qualità dell’architettura del progetto traspaiono proprio in questi casi.
Non mi rimane che augurarvi un buon refactoring!
Alla prossima!