Кіріспе

DotGNU – 2001 жылдың қаңтар айында басталып, Microsoft-тың .NET Framework-іне еркін бағдарламалық қамтамасыз етумен алмастыруды мақсат еткен GNU жобасының тоқтатылған бөлігі. DotGNU жобасын Free Software Foundation (Азат бағдарламалық қамтамасыз ету қоры) басқарды. Жобаның басқа да мақсаттары – Windows емес платформаларды жақсы қолдау және көбірек процессорларды қолдау. DotGNU жобасының код базасының негізгі мақсаты – 100% Common Language Specification (CLS) стандартына сәйкес келетін сыныптар кітапханасын ұсыну.

Portable.NET портативті

DotGNU портативті .NET, ECMA 335 ортақ тілдік инфрақұрылымын (CLI) іске асырады және .NET базалық сыныптар кітапханаларын, XML және Windows формаларын пайдаланатын Visual Basic .NET, C# және C бағдарламаларын құрастыруға және орындауға арналған бағдарламалық құралдарды қамтиды. Portable .NET x86, PPC, ARM және SPARC сияқты әртүрлі процессор архитектураларын қолдайды.

DGEE

DotGNU Execution Environment (DGEE) - веб-қызмет сервері.

libJIT

libJIT – виртуалды машиналардың, динамикалық бағдарламалау тілдері мен сценарийлік тілдердегі жетілдірілген just-in-time компиляциясын жасауға арналған кітапхана. Ол үш адресті кодқа негізделген аралық өрнектерді іске асырады, онда айнымалылар статикалық бір тапсыру түрінде сақталады. libJIT басқа да ашық кодты жобаларда, оның ішінде GNU Emacs ILDJIT және HornetsEye қолданысында да болған.

Желілік архитектура

Portable NET сыныптар кітапханасы қолданбаларды жасауға арналған мүмкіндіктерді ұсынады. Олар негізінен C# тілінде жазылған, бірақ Common Language Specification (CLS) стандартының арқасында кез келген .NET тілінде қолданылуы мүмкін. .NET сияқты, бұл кітапхана да атау кеңістіктері мен жиналымдарға (Assemblies) құрылымдалған. Онда Accessibility және DotGNU сияқты қосымша жоғары деңгейдегі атау кеңістіктері де бар. Типик жағдайда, Portable NET компиляторы ECMA 335 стандартының 6-тарауында сипатталғандай CLS кескінін (image) жасайды, ал Portable NET орындау ортасы (runtime) осы кескінді қабылдап, іске қосады.

Еркін бағдарламалық қамтамасыз ету

DotGNU – бұл ашық кодты бағдарламалық жасақтама екенін көрсетеді және DotGNU-ның барлық аспектілерінің Microsoft Windows графикалық интерфейсінің кодына сияқты жабық компоненттерге тәуелділігін барынша азайтуға бағытталған. DotGNU 2007 жылдан 2008 жылға дейін жоғары басымдықтың ашық кодты бағдарламалық жасақтама жобаларының бірі болды.

DotGNU және Microsoft патенттері

DotGNU-ның ECMA-ға стандарттау үшін ұсынылмаған .NET стегінің компоненттерін іске асыруы жобаның көп бөлігінде патенттік бұзушылықтар туралы алаңдаушылықтар тудырды. Атап айтқанда, Microsoft компаниясы патенттік сот арқылы DotGNU жобасын жоюға тырысуы мүмкін бе деген пікірлер талқыланды. ECMA-ға ұсынылған негізгі технологиялар мәселе тудырмауы мүмкін. Алаңдаушылықтар негізінен Microsoft компаниясының .NET Framework-ке қосымша әзірлеген ASP.NET, ADO.NET және Windows Forms (қараңыз: Стандартталмаған атау кеңістіктері) сияқты технологияларына қатысты, яғни DotGNU-ның Windows үйлесімділік стегін құрайтын бөліктер. Бұл технологиялар қазіргі уақытта DotGNU-да толыққанды іске асырылмаған және DotGNU қолданбаларын жасау үшін қажет емес. 2009 жылы Microsoft Apache License 2.0 нұсқасымен .NET Micro Framework-ті шығарды, ол патенттік құқықтарды қамтиды. Дегенмен, .NET Micro Framework – CLR-дың және кіріктірілген құрылғыларда пайдалануға арналған базалық сыныптар кітапханаларының шектеулі жиынтығы. Сонымен қатар, Apache лицензиясы бойынша берілген патенттік құқықтар тек .NET Micro Framework-тің үлескерлері мен пайдаланушыларын қорғайтын болар еді, DotGNU немесе Mono сияқты баламалы іске асырулардың пайдаланушылары мен әзірлеушілерін емес. 2014 жылы Microsoft Apache License бойынша келесі буынның ресми Microsoft C# компиляторы Roslyn-ді шығарды. Кейін сол жылы Microsoft ресми .NET Framework-ті "қайта іске қосуды" жариялады. Жаңа құрылым .NET Core-ға негізделген, ол MIT лицензиясы бойынша шығарылған ресми орындалу ортасы мен стандартты кітапханаларды және .NET Core-қа қатысты Microsoft-қа тиесілі патенттерден алушыларды қорғайтын патенттік құқықтарды қамтиды.