Will microsoft open source windows

Содержание
  1. Является ли Microsoft Open Source компанией?
  2. Microsoft и Open Source: от противостояния к сотрудничеству
  3. Open. Collaborative. Flexible.
  4. Projects
  5. Accessibility Insights
  6. Windows Terminal
  7. Collaborative
  8. Flexible
  9. Microsoft’s communities Get involved
  10. Learn from our enterprise-scale approach Our program & tools
  11. Open Source Updates
  12. Microsoft joins Open Source Security Foundation
  13. Helm, the package manager for Kubernetes, now a CNCF graduated project
  14. Microsoft announces OpenChain 2.0 conformance for open source
  15. exFAT in the Linux kernel? Yes!
  16. Community Resources
  17. Изучаем дерево исходников Windows 10: от телеметрии до open source
  18. Фильтрация данных из символьных файлов
  19. Зацепка-фильтр № 1: ищем строки по маске «:\».
  20. Зацепка-фильтр № 2: предполагаем, что исходные файлы хранятся по аналогии с объектными файлами после сборки, и осуществляем «разборку» объектных файлов в исходные. Внимание! Этот шаг может внести искажение структуры для некоторых папок, потому как достоверно не известны параметры сборки исходников.
  21. Зацепка-фильтр № 3: удаляем бинарные файлы, поскольку нам интересны только исходные. Удаляем «pdb», «lib», «exp» и т. п. Файлы «res» откатываем до «rc» — исходного кода ресурсного файла.
  22. Фильтрация данных из исполняемых файлов
  23. Зацепка-фильтр № 4: проверим, есть ли совпадения между путями до объектных файлов и путями до исходных.
  24. Зацепка-фильтр № 5: будем считать, что в пределах одной папки хранятся исходные файлы одинакового типа.
  25. Изучаем полученные данные
  26. Телеметрия
  27. Kernel Patch Protection
  28. Сомнительные файлы
  29. Open source?

Является ли Microsoft Open Source компанией?

Размышляя об Open Source, большинство людей сразу же вспоминают Linux, Apache, Mozilla. Конечно, существуют тысячи Open Source проектов, но хотелось бы понять, на какой платформе они были выполнены. “К собственному удивлению, я обнаружил большое число Windows проектов с открытым кодом, — отмечает на страницах Networkworld.com Стефан Спектор (Stephen Spector), — и даже был несколько шокирован результатами поиска на SourceForge”.

По его словам, в топ-10 приложений, по данным SourceForge, входят:

  1. eMule — Windows инструмент обмена файлами
  2. Azureus / Vuze — Windows, Mac и Linux p2p клиент
  3. Ares Galaxy — Windows p2p клиент
  4. 7-ZIP – инструмент Windows для сжатия файлов
  5. FileZilla – инструмент Windows, Mac, Linux для совместного использования файлов
  6. Smart Package of Microsoft’s core fonts — Linux, UNIX, BSD и т.д.
  7. GTK+ и GIMP инсталляторы для Windows
  8. Audacity — Все OS, аудио-редактор
  9. Portable Apps.com — Windows приложения для портативных устройств
  10. DC + + — приложение для обмена файлами Windows.

Каждый элемент в этом списке является решением для платформы Windows, и это противоречит общепринятому мнению о том, что решения с открытым исходным кодом создаются только для Linux. Более того, существует сайт Microsoft Open, где собраны все проекты корпорации с открытым кодом, созданные на платформе Windows. Более 150 проектов с открытым кодом в настоящее время размещено на Codeplex.com – аналоге SourceForge, созданном Microsoft. “Для меня было удивительно обнаружить, Open Source сообщество активно создает решения для закрытой платформы Windows”, — отмечает Стефан Спектор.

Таким образом, поскольку значительное число приложений с открытым кодом строится на платформе Windows и поддерживает инфраструктуру Microsoft, Microsoft можно назвать Open Source (или дружественной Open Source) компанией. Конечно, она занимается разработкой и продажей проприетарного программного обеспечения, но, в то же время, передает свои технологии и просто поддерживает открытые разработки на платформе Windows.

“Я понимаю, что Microsoft не является в полной мере Open Source компанией, и будет продолжать спорить с Linux о том, что правомерно, а что нет, — продолжает Стефан Спектор. – Но, может быть, настало время для Open Source сообщества начать воспринимать Microsoft как одного из своих участников и оказывать содействие в открытии все большего числа технологий?”

“Можем ли мы теперь официально отказаться от тезиса «Microsoft — дьявол» и перейти к продуктивной совместной работе или Microsoft навсегда останется врагом Open Source?” – предлагает обсудить Стефан Спектор.

Microsoft и Open Source: от противостояния к сотрудничеству

История взаимоотношений компании Microsoft и Open Source-сообщества непроста и ведет начало с конца 90-х, когда широкое распространение Windows и Office – базовых продуктов Microsoft – сделало компанию фактическим монополистом на рынке программного обеспечения (ПО). Такое положение дел не нравилось многим, а достаточно агрессивная политика Microsoft в отношении конкурентов, ошибки и недоработки в ее продуктах только увеличивали число противников.

В 1998 году после ряда антимонопольных процессов Microsoft фактически признала в свободных программных продуктах конкурента, ссылаясь на ОС Linux как альтернативу Windows. Примерно в то же время появилось направление «открытое ПО» (Open Source), которое по определению очень похоже на классическое «свободное ПО» (Free Software) Ричарда Столмана, но более привлекательно для предпринимателей, поскольку не требует, чтобы открытое ПО обязательно предоставлялось бесплатно.

После утечки внутренних документов компании Microsoft (так называемые Halloween Documents), в которых содержалось признание значительных возможностей концепции Open Source в целом и операционной системы Linux в частности, а само открытое ПО называлось источником конкуренции с Microsoft, обстановка еще более накалилась. Корпорация стала главным идеологическим противником всего сообщества Open Source. Нужно отметить, что Microsoft всегда заявляла, что данные документы не являются официальными и не отражают позицию компании в отношении Open Source.

Читайте также:  Надпись windows заблокирован как разблокировать

Противостояние с Microsoft явным образом отразилось на дальнейшем развитии сообщества Open Source, привлекая в его ряды все большее число разработчиков, недовольных политикой компании. Среди «сочувствующих» стали фигурировать и ведущие мировые вендоры ПО, такие как IBM, Sun Microsystems, Novell, благодаря чему направление Open Source постепенно приобрело достаточно большое влияние на рынок программного обеспечения.

С 1998 года и до настоящего времени возможности программ с открытым исходным кодом и их поддержка в бизнесе неуклонно растут. Под Linux активно создаются не только серверные, но и пользовательские программные системы, и многие из них успешно сочетают концепцию Open Source и коммерческого продукта.

Конец «священной войны»

Рост популярности открытых программ, и прежде всего, операционной системы Linux, в последнее время невозможно не заметить. Также невозможно не заметить и постепенное изменение официальной позиции Microsoft по отношению к Open Source. Очевидно, что статус «главного врага» открытого ПО не устраивает корпорацию, которая в последнее время стала проводить активную политику, нацеленную на его изменение.

Совместный поиск возможных путей технологического развития за счет использования сильных сторон обеих моделей разработки – открытой и проприетарной – выгоден как поставщикам коммерческого ПО, так и разработчикам открытых решений. Microsoft открыто объявляет об изменении своей стратегии в отношении с Open Source-сообщества, осознавая преимущества совместной работы с Linux и открытым ПО. Конкуренция остается, но это будет здоровая конкуренция между различными программными решениями, от которой конечный пользователь должен только выиграть.

Для реализации этой стратегии Microsoft намеревается улучшить работу с партнерами в отношении продуктов с открытым исходным кодом, увеличить количество и объем мероприятий типа OSBC (Open Source Business Conference), активно спонсировать разработчиков открытого ПО. Одной из главных задач становится донесение до клиентов и партнеров корпорации информации о том, что «священной войне» между Microsoft и СПО настал конец. По словам главного управляющего Microsoft по программному обеспечению с открытым кодом Джеймса Уцшнайдера (James Utzschneider), Microsoft намерена развенчать миф о себе как о компании исключительно проприетарной, закрытой для партнерства. Также планируется наладить более эффективную обратную связь с представителями Open Source-сообщества для дальнейшей интеграции их продуктов с решениями Microsoft.

Частью информационной поддержки данных инициатив стало создание под патронажем Microsoft фонда CodePlex Foundation, цель которого – стать связующим звеном между Open Source-разработчиками и коммерческими компаниями. Ранее компанией был создан одноименный хостинг открытых проектов. Также Microsoft открыла обновленный раздел сайта, посвященный проектам с открытым кодом, на котором создан каталог разработок компании, код которых полностью или частично доступен. Помимо всего прочего, там можно найти различную информацию, касающуюся вклада корпорации в индустрию открытого ПО.


Цель CodePlex Foundation, созданного под патронажем Microsoft, – стать связующим звеном между Open Source-разработчиками и коммерческими компаниями

Между тем, сообщество Open Source данные шаги своего главного противника восприняло неоднозначно. Слишком уж напряженными в последнее время были отношения, чему немало способствовали недоброжелательные заявления со стороны руководства Microsoft в отношении Linux и других открытых продуктов. Очевидно, что Microsoft придется приложить немало усилий для того, чтобы убедить Open Source-сообщество в искренности своих намерений.

Open.
Collaborative.
Flexible.

Open Source enables Microsoft products and services to bring choice, technology and community to our customers.

Projects

Some of the most popular developer tools, frameworks and experiences in the world are built around open communities. Here are a few featured Microsoft projects of note.

Accessibility Insights

Accessibility Insights is a suite of open source tools that help developers find and fix accessibility issues in Web, Windows and Android applications.

CNAB is a spec for packaging distributed apps

Windows Terminal

The new Windows Terminal and the original Windows console host, all in the same place!

Working in the open is the secret sauce. Microsoft engineers work to adopt industry-standard technologies, work in the open, support a diversity of technologies and platforms, and contribute upstream as often as possible.

Collaborative

With participation from around the world, new perspectives are discovered, passionate users are able to dig in, and a special connection exists between upstream projects, maintainers, and all open source projects.

Flexible

Open source makes amazing business sense: industry-standard open technologies are super flexible: easy to adopt, attract leading talent that’s familiar, and provides an opportunity to rapidly innovate and deliver value tailored to specific needs, building on the work of others.

Microsoft’s communities Get involved

We are building value together and welcome everyone to participate. Together, in the open, it’s an exciting time to use technology to build hacks, apps, and services.

Читайте также:  Служба мониторинга сетевой активности windows 10

Learn from our enterprise-scale approach Our program & tools

We have worked to develop a strong open source program over the past decade, making it easy for every team at Microsoft to choose to use, contribute to, and release open source software.

Many of our tools and approaches are available for you to learn from, too.

Open Source Updates

Microsoft joins Open Source Security Foundation

Microsoft is joining industry partners to create the Open Source Security Foundation (OpenSSF), a new cross-industry collaboration hosted at the Linux Foundation. Microsoft is proud to be a founding member alongside GitHub, Google, IBM, JPMC, NCC Group, OWASP Foundation, and Red Hat.

Helm, the package manager for Kubernetes, now a CNCF graduated project

The Helm project has graduated to the Cloud Native Computing Foundation (CNCF), joining a select group of projects that the CNCF recognizes for achieving majority adoption by the cloud-native community.

Microsoft announces OpenChain 2.0 conformance for open source

Microsoft’s open source program is OpenChain 2.0 comformant. Trust is key to open source. Developers should be able to trust users to respect their licensing choices. And when you receive software, you should be able to trust that the open source licenses were followed.

exFAT in the Linux kernel? Yes!

Microsoft is supporting the addition of Microsoft’s exFAT technology to the Linux kernel. exFAT is the Microsoft-developed file system that’s used in Windows and in many types of storage devices like SD Cards and USB flash drives.

Community Resources

We welcome you to our open communities. Please check out our Code of Conduct and one-time Contributor License Agreement to help us all participate with care.

Изучаем дерево исходников Windows 10: от телеметрии до open source

Насколько бы закрытым ни было программное обеспечение Microsoft, информации о своем внутреннем устройстве оно выдает предостаточно. К примеру, экспорт функций из библиотеки по именам дает представление о ее интерфейсах. В свободном доступе есть и отладочные символы, которые повсеместно используются для диагностики ошибок в ОС. Однако на руках у нас все равно имеются только скомпилированные бинарные модули. Становится интересно: а какими они были до компиляции? Давайте попробуем разобраться, как вытащить побольше информации об исходных кодах, не делая ничего незаконного.

Идея, конечно, не нова. В свое время подобное делали и Марк Руссинович, и Алекс Ионеску. Мне лишь было интересно получить свежие данные, немного дополнив и уточнив уже проделанную другими работу. Для эксперимента нам понадобятся пакеты отладочных символов, которые есть в свободном доступе. Я взял пакеты для последней релизной версии «десятки» (64 бита), причем решил исследовать и релизный пакет (free build), и отладочный (checked build).

Отладочные символы — это набор файлов с расширением pdb (program database, база данных программы), в которых хранится различная информация для расширения возможностей отладки бинарных модулей в ОС, включая имена глобалов, функций и структур данных, иногда вместе с их содержимым.

Помимо символов можно взять условно доступную отладочную сборку «десятки». Такая сборка богата на ассерты, в которых бывают описаны не только недокументированые и отсуствующие в символьных файлах имена переменных, но и номер строки в файле, в котором сработал ассерт.

В примере видно не только имя файла и его расширение, но и структура каталогов до него, очень полезная даже без корня.

Натравливаем на файлы символов утилиту strings от sysinternals и получаем около 13 ГБ сырых данных. А вот кормить все файлы из дистрибутива отладочной сборки подряд — так себе идея, ненужных данных будет слишком много. Ограничимся набором расширений: exe — исполняемые файлы, sys — драйвера, dll — билиотеки, ocx — ActiveX-компоненты, cpl — компоненты панели управления, efi — EFI-приложения, в частности загрузчик. Сырых данных от дистрибутива набралось 5,3 ГБ.

К своему удивлению я обнаружил, что не так много программ способны хотя бы открыть файлы размером в десяток гигабайт, и уж тем более единицы смогли поддержать функцию поиска внутри таких файлов. В данном эксперименте для ручного просмотра сырых и промежуточных данных использовался 010 Editor. Фильтрация данных дешево и сердито осуществлялась скриптами на питоне.

Фильтрация данных из символьных файлов

В символьных файлах помимо прочего содержится информация компоновщика. То есть, в символьном файле присутствует список объектных файлов, которые использовались для компоновки соответствующего бинарника, причем в компоновщике используется полный путь до объектного файла.

  • Зацепка-фильтр № 1: ищем строки по маске «:\\».

Получаем абсолютные пути, сортируем, удаляем дубликаты. К слову, мусора получилось не так много, и он был удален вручную.

При осмотре полученных данных стала понятна примерная структура дерева исходных кодов. Корень — «d:\th», что по всей видимости означает threshold, в соответствии с названием ноябрьской версии Windows 10 — Threshold 1. Однако файлов с корнем «d:\th» оказалось мало. Это объясняется тем, что компоновщик принимает уже собранные файлы. А сборка объектников осуществляется в папки «d:\th.obj.amd64fre» для релизной сборки и «d:\th.obj.amd64chk» для отладочной.

Читайте также:  Samsung allshare ��� mac os

  • Зацепка-фильтр № 2: предполагаем, что исходные файлы хранятся по аналогии с объектными файлами после сборки, и осуществляем «разборку» объектных файлов в исходные. Внимание! Этот шаг может внести искажение структуры для некоторых папок, потому как достоверно не известны параметры сборки исходников.

Для примера:
d:\th.obj.amd64fre\shell\osshell\games\freecell\objfre\amd64\freecellgame.obj
это бывший
d:\th\shell\osshell\games\freecell\freecellgame.c??

По поводу расширения файлов: объектный файл получается из кучи разных типов исходного файла: «c», «cpp», «cxx», «asm» и т. д. На данном этапе неясно, какой именно тип исходного файла использовался, поэтому оставим расширение «c??».

Помимо папки «d:\th» наблюдается множество других корней. Например, «d:\th.public.chk» и «d:\th.public.fre». Данную папку мы опустим ввиду того, что в ней хранится публичная часть sdk, то есть она нам не очень интересна. Также стоит отметить различные пути проектов для драйверов, которые, судя по всему, собираются где-то на рабочих местах разработчиков:

c:\users\joseph-liu\desktop\sources\rtl819xp_src\common\objfre_win7_amd64\amd64\eeprom.obj
C:\ALLPROJECTS\SW_MODEM\pcm\amd64\pcm.lib
C:\Palau\palau_10.4.292.0\sw\host\drivers\becndis\inbox\WS10\sandbox\Debug\x64\eth_tx.obj
C:\Users\avarde\Desktop\inbox\working\Contents\Sources\wl\sys\amd64\bcmwl63a\bcmwl63a\x64\Windows8Debug\nicpci.obj

Другими словами, существует набор драйверов устройств, отвечающих стандартам, например, USB XHCI, которые входят в дерево исходных кодов ОС. А все специфичные драйвера собираются где-то в другом месте.

  • Зацепка-фильтр № 3: удаляем бинарные файлы, поскольку нам интересны только исходные. Удаляем «pdb», «lib», «exp» и т. п. Файлы «res» откатываем до «rc» — исходного кода ресурсного файла.

Выходные данные становятся все красивее! Однако на этом этапе дополнительные данные получить уже практически невозможно. Переходим к следующему набору сырых данных.

Фильтрация данных из исполняемых файлов

Поскольку абсолютных путей в сырых данных оказалось мало, фильтровать строки будем по расширениям:

  • «c» — исходные файы на языке C,
  • «cpp» — исходные файлы на языке C++,
  • «cxx» — исходные файлы на C или C++,
  • «h» — заголовочные файлы на языке C,
  • «hpp» — заголовочные файлы на языке C++,
  • «hxx» — заголовочные файлы на C или C++,
  • «asm» — исходные файлы на MASM,
  • «inc» — заголовочные файлы на MASM,
  • «def» — описательный файл для библиотек

После фильтрации данных становится видно, что хотя у полученный путей и нет корня, структура каталогов говорит о том, что она строится относительно него. То есть, всем путям достаточно добавить в начале корень «d:\th».

На этом этапе есть несколько проблем с данными, полученными из символов. Первая проблема: мы не уверены, что правильно откатили путь сборки исходного файла в объектный файл.

  • Зацепка-фильтр № 4: проверим, есть ли совпадения между путями до объектных файлов и путями до исходных.

И они действительно есть! То есть, для большинства каталогов можно утверждать, что их структура восстановлена правильно. Конечно, все еще остаются сомнительные каталоги, но думаю, эта погрешность вполне приемлема. Попутно можно смело заменять расширение «c??» на расширение совпавшего по пути исходника.

Вторая проблема — заголовочные файлы. Дело в том, что это важная часть исходных файлов, однако из заголовочника не получается объектный файл, а это значит, что из информации об объектных файлах нельзя восстановить заголовочники. Приходится довольствоваться малым, а именно теми заголовочниками, которые мы нашли в сырых данных бинарных файлов.

Третья проблема: мы все еще не знаем большинство расширений исходных файлов.

  • Зацепка-фильтр № 5: будем считать, что в пределах одной папки хранятся исходные файлы одинакового типа.

Ну а как же исходники на ассемблере? За последним штрихом можно обратиться к Windows Research Kernel — исходным кодам Windows XP — и часть исходников на ассемблере переименовать вручную.

Изучаем полученные данные

Телеметрия

Какое-то время я изучал вопрос об устройстве телеметрии в Windows 10. К сожалению, анализ на скорую руку не выявил ничего стоящего. Я не нашел никаких кейлоггеров, никакой утечки чувствительных данных, ничего, к чему можно было бы прикопаться. И первым ключевым словом для поиска среди исходных файлов было «telemetry». Результат превзошел мои ожидания: 424 совпадения. Самые интересные приведу ниже.

Комментировать, пожалуй, не стоит, поскольку все равно достоверно ничего не известно. Однако эти данные могут послужить хорошей отправной точкой для более детального исследования.

Kernel Patch Protection

Следующая находка — всеми любимый PatchGuard. Правда, в дереве исходников ОС присутствует только один файл непонятного, скорее всего бинарного типа.
d:\th\minkernel\ntos\ke\patchgd.wmp
Поискав совпадения в нефильтрованных данных, я обнаружил, что на самом деле Kernel Patch Protection — это отдельный проект.
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen00.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen01.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen02.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen03.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen04.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen05.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen06.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen07.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen08.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp\xcptgen09.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp_noltcg\patchgd.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp_noltcg\patchgda.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp_noltcg\patchgda2.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp_noltcg\patchgda3.c??
d:\bnb_kpg\minkernel\oem\src\kernel\patchgd\mp_noltcg\patchgda4.c??

Сомнительные файлы

Не придумав больше ничего меня интересующего, я начал искать все подряд — и остался доволен!

d:\th\windows\core\ntgdi\fondrv\otfd\atmdrvr\umlib\backdoor.c??
в драйвере шрифтов?

d:\th\inetcore\edgehtml\src\site\webaudio\opensource\wtf\wtfvector.h
Web Template Framework, это всего лишь Web Template Framework, спорная аббревиатура. Погодите,

Open source?

d:\th\printscan\print\drivers\renderfilters\msxpsfilters\util\opensource\libjpeg\jaricom.c??
d:\th\printscan\print\drivers\renderfilters\msxpsfilters\util\opensource\libpng\png.c??
d:\th\printscan\print\drivers\renderfilters\msxpsfilters\util\opensource\libtiff\tif_compress.c??
d:\th\printscan\print\drivers\renderfilters\msxpsfilters\util\opensource\zlib\deflate.c??
Думаю, на этой находке пора закругляться.

Архив с текстовым файлом со списком исходников приведен по ссылке. Делитесь своими находками в комментариях!

Оцените статью