Cross-Platform GUI Toolkit

30 Marca 2016

Zacząłem mój projekt z myślą:

,,Napiszę darmowy, open-sourcowy, cross-platformowy pakiet Office.”

Swego czasu zrobiłem kilka kontrybucji do TrueCrafta, który do swojego launchera używa Mono Xwt. Nie zastanawiałem się zbytnio i postanowiłem na nim oprzeć mój projekt. Okazuje się jednak, że jest on bardzo ograniczony i istnieją lepsze frameworki.

Poszukując przykładów aplikacji, które używają Xwt (btw, nie znalazłem żadnej), natrafiłem na dyskusję. na forum .Net Foundation na temat istnienia cross-platformowego WPFu. Kilka osób przedstawiło alternatywne frameworki, które przedstawię poniżej.

Perspex

Ogólna idea za tym projektem to właśnie coś w stylu WPFu. Posiada wsparcie dla XAMLa do projektowania GUI, a backend jest oparty o Direct2D na Windowsie i GTK/Cairo na pozostałych platformach.

Jego źródła znajdują się na Githubie, gdzie również można znaleźć projekt Avalon Studio, który został w Perspexie napisany.

Eto

Ten framework jest bardziej zbliżony ideowo do Xwt, również udostępnia jedno API, które wykorzystuje biblioteki natywne dla każdej platformy. Jego kod źródłowy również można znaleźć na Githubie.

Chromium Embedded

CEF (Chromium Embedded Framework) jest napisany w C/C++ i o ile istnieją jego porty na .NET, są skierowane głównie w stronę Windowsa. Na Bitbuckecie znajdziecie źródła CEFu oraz linki do portów na inne platformy.

GTK♯

Zarządzana bibliotek GTK+, która może być uruchomiona na każdej platformie (Windows, Linux, Mac). Plusem jest to, że nasza aplikacja będzie wyglądać wszędzie dokładnie tak samo. Minusem jest to, że nasza aplikacja będzie wyglądać wszędzie dokładnie tak samo, i nie wykorzystamy systemowych kontrolek. Strona projektu.


Zanim podejmę decyzję, który framework wybrać, będę chciał przetestować każdy z nich i zobaczyć jakie aplikacje zostały w nich zrobione. W międzyczasie będę pracował nad logistycznym projektem zmodularyzowania elementów wewnątrz aplikacji, aby poszczególne feature’y były dodawane w ten sam sposób w jaki swoje funkcje będą udostępniały dodatki.