Microsoft har aldrig gjort något plattformsoberoende och att att de följer samma stuk som .NET betyder att det inte kommer bli det den här gången heller. Ljug inte till någon verklighet som inte existerar här.
Ingenstans i min text hävdade jag att någon av de APIer vi diskuterar skulle vara plattformsoberoende. För .NET finns dock alternativa implementationer av CLR, men det primära för Microsoft är givetvis att göra bra APIer för Windows.
Vad jag däremot påpekade var att Windows Runtime må ha beroenden till Win32 idag, men att det skulle vara fullt möjligt att i framtiden kan göra sig oberoende av Win32. Det man istället skulle kunna göra sig beroende av är då Windows kernel direkt, och därmed behövs inte Win32. Plattformsoberoende? Självklart inte - därav namnet Windows Runtime.
Jag menar båda två. Windows runtime kan du i princip bara köra i Metro och du kan inte köra C-bibliotek i Windows Store-apps.
Windows Runtime kan du köra på både desktop och Metro. I Metro kan man inte köra C-bibliotek - helt riktigt. Gör du ett desktopprogram kan du både blanda Windows Runtime, Win32, C-bibliotek och .NET bäst du vill (även om det förstås inte är snyggt att blanda in allt).
Windows Store-apps stödjer bara portable class library, inte ren .NET. Inte WPF eller liknande.
Nja, Windows Store apps stödjer ".NET for Windows Store app", som är ett subset av .NET och stödjer, precis som du påpekar, exempelvis inte WPF. Utöver det kan man använda sig av Portable Class Library, vars funktionalitet beror på vilka .NET implementationer man väljer att vara kompatibel med. Ett Portable Class Library kan alltså maximalt ha stöd för allt som igår i ".NET for Windows Store app", men ska biblioteket även stödja Windows Phone och Silverlight, då kommer du få ett Portable Class Library som bara har stöd för en delmängd av ".NET for Windows Store app". Principen är alltså följande:
.NET for Windows Store app >= Portable Class Library
Du har helt rätt i att om man ska dela bibliotek med desktopen så blir det ju de plattformar man väljer för sitt Portable Class Library som sätter begränsningen.
Mono kör riktiga klassbibliotek. Och finns på alla plattformar. Android, iOS, GNU/Linux, OS X. Inte alla APIer, men mer än tillräckligt för att portera. Du behöver inte installera något på mobilerna, det är bara att paketera programmet.
Är det MonoTouch som avses för mobilerna? Där har du väl också bara ett subset av .NET, så det inte direkt är att ta sin Windows Forms applikation och köra in? Jag har inte någon erfarenhet av MonoTouch tyvärr.
För desktopen så har ju Windows redan den bästa .NET implementationen, och de .NET programmen som finns där är det ingen poäng att göra om så länge som det är desktopen man är ute efter. I framtiden kanske man byter ut ett par gamla Win32 anrop mot Windows Runtime istället.