Quando è nato .NET Core, il messaggio che è passato è stato quello di una nuova versione di .NET che poteva girare su tutti i sistemi operativi, Linux compreso.
E così è stato e lo è tuttora a patto che la app utilizzi la console.
Mentre .NET framework diventava obsoleto, .NET Core cresceva in potenzialità e numero di utenti, sia in ambienti Linux sia in ambienti Mac.
Anche Powershell, essendo sostanzialmente console, ha avuto lo stesso trattamento di porting verso altre piattaforme.
.NET Core quindi, durante questo periodo iniziale, ha sempre consentito di sviluppare app in modalità console oppure Web server ma mai in modalità GUI su Linux o Mac.
La prima versione di .NET Core che includeva il porting anche dei componenti GUI è stata la 5.0.
Appena uscita però tutti si sono accorti che qualcosa non quadrava: le app GUI .NET 5.0 infatti giravano (e girano) solo su Windows, non su Linux o Mac.
Per diverso tempo abbiamo aspettato una GUI trasversale ai tre sistemi operativi, senza che MS ci spiegasse il perchè di questo ritardo; io pensavo davvero che uscisse.
Molti hanno ipotizzato che fosse un problema tecnico legato alla complessità di far girare tecnologie tipo la GDI di Windows Forms o le DirectX di WPF in ambienti diversi da Windows.
Ma ora, che siamo arrivati alla versione 7.0 di .NET, abbiamo davvero capito che una GUI davvero trasversale ai tre, non ci sarà mai; o almeno non per mano di MS.
Anche MAUI che ha sostituito Xamarin, consente di far girare App su Android, iOS, Mac, Windows ma non su Linux.
Con il .NET di oggi in pratica, grazie a MAUI, è possibile sviluppare per Mobile e per Mac, ma sarà molto dura che MS rilasci un prodotto open source che consenta ai desktop Linux di diffondersi, nessuno taglia il ramo dove è seduto.
Perchè è chiaro che l’orda di programmatori .NET che si rovescerebbe su Linux potrebbe far danni al mercato di Windows.
Con Windows 11 e WSL2 è possibile far girare la quasi totalità di programmi Linux, anche molti di quelli GUI, questo la dice lunga sulle capacità tecniche di MS di mettere mano alla questione, se solo volesse.
Ma a questo punto, vista la piega, mi vien da dire che non sarà MS a far si che il comando
dotnet new WPF
possa essere eseguito su una distro GNU/Linux.
O meglio, il comando funziona, e il dotnet run che poi non va!! 🙂
Questo è il vero problema delle tecnologie open portate avanti da aziende closed: la loro potenza, anche se viene dal basso, anche se viene dal contributo di molti, è e rimane a disposizione di pochi.
.NET core (oggi solo .NET) è una tecnologia open ed è anche free, non nel senso di freedom ma in quello di birra gratis. Un vero peccato.