Пользователь
102,0
рейтинг
11 июня 2012 в 15:31

Разработка → Magenta: open-source клон iOS



Magenta — реализация Darwin/BSD поверх ядра Linux, полностью бинарно совместимая iPhone OS 5.0 (использует тот же бинарный формат), работает на любом процессоре ARMv7.

Разработчик Кристина Б. взяла Darwin (основа iOS, опубликован под свободной лицензией APSL) и попыталась заменить все остальные проприетарные компоненты iOS свободными альтернативами.

На данный момент Magenta содержит следующие библиотеки:
  • CoreFoundation
  • libstdc++
  • libobjc
  • libc++abi
  • libicucore
  • libncurses

Как часть libSystem:
  • libmath
  • libunwind
  • libsystem_blocks
  • libC

Все библиотеки скомпилированы под Darwin, а не под Linux, за исключением libC, которая работает как мост.

В перспективе разработчик Magenta ставит цель воссоздать стек iPhone OS 1.0 с помощью свободных библиотек. Теоретически, это выглядит вполне реальным, учитывая количество возможных альтернатив, например:

CoreGraphics -> Cairo, FreeType, libpng/jpg
Celestial -> разные декодеры
UIKit -> Chamelleon

«Это очень странный проект. Вы спрóсите, зачем я это делаю? Ответ: вообще без понятия», — пишет автор.

Исходный код Magenta опубликован под свободной лицензией на сайте Кристины, на github она идти не хочет, говорит, что не любит контроль версий.
Анатолий Ализар @alizar
карма
743,5
рейтинг 102,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (67)

  • +5
    Повторяет слова Линуса, берёт название как у раскрученного проекта. Казалось бы зачем?
    • +12
      Не дочь ли она ему случаем?)
  • +4
    Значит ли это, что можно будет собрать эту штуку под андроид и запускать на нём iOS-приложения? :)
    • +4
      Нет, и разработчик честно говорит — «If you're just interested in this because it will „run iOS apps“ please go away».

      Слишком много библиотек надо написать. Ну это как WINE с нуля сделать.
      • 0
        А какой тогда смысл в этой штуке? И не проще ли самому реализовать только эмулятор ядра, а всё остальное (фреймворки, библиотеки и.т.д.) вытащить из настоящей iOS?
        • +6
          А смысла то и автор не видит :)
        • +2
          Во-первых, это не эмулятор.

          Во-вторых, если прослойка будет хорошо работать, то конечно же можно будет запускать остальную часть системы из настоящей iOs. Правда, нарушая лицензию при этом.
          • –22
            Всем давным давно плевать на лицензии уже… ))
          • 0
            Хакинтоши-то вполне себе существуют. Почему бы не существовать и гиковскому варианту iOS?
            • +1
              Потому что свободный аналог != спираченная версия во всех аспектах.
      • 0
        Не понял, т.е. ось работает, а приложения в ней — нет? Или как?
        • +11
          Когда мы запускаем какое-то приложение, операционка выделяет для него память, приветствует его, подтягивает библиотеки, всех с ним знакомит и так далее. Это и есть «принципиальная возможность запустить приложение», потому что — как Вы понимаете — если мы возьмем MS-DOS, она не сможет запустить приложение, скомпилированное под Linux, равно как и Linux не сможет запустить приложения в формате .exe. Но если Linux будет знать, как организована программа, он сможет загрузить его в память (пример: под линукс Mono вполне легко запускает exe-файлы в формате .NET). Но тут возникнет второй вопрос — приложение мы вроде загрузили, но оно для своей работы полагается на кучу библиотек — для отрисовки интерфейса, для общения с системой и так далее… Вот поэтому и может выйти ситуация, когда выполняемый код мы в принципе выполнить можем, но он беспомощен и одинок.
          • 0
            Прямо уж так рассусоливать не надо было, хотя может кому-то ещё глаза откроет. Спасибо.
            Тогда я тоже в этой штуке смысла как такового не вижу. На рабочий стол полюбоваться разве что. Если он, конечно, сможет загрузиться :)
  • +1
    Так и libdispatch можно вставить, оно тоже открытое.
  • НЛО прилетело и опубликовало эту надпись здесь
    • НЛО прилетело и опубликовало эту надпись здесь
      • +21
        Вы не думали, что вас могут минусовать за мат?
      • +5
        У вас проблемы? Вы хотите поговорить об этом? Что конкретно вы имеете против сабжа?
      • +3
        А чем вам не нравится юзерспейс бсд на линуксовом ядре? Юзерспейс линукса на бсд-шном ядре вполне себе работает и не кашляет.
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            А кто говорит, что дэушка собирается постоянно поддерживать ядро в актуальном состоянии и перепиливать либцы с выходом каждой новой версии ядра? Проект ведь чисто «на поржать», так что зафиксировали ядро — и пляшем от него, не грея голову сменой интерфейса.
  • +14
    Исходный код Magenta опубликован под свободной лицензией на сайте Кристины, на github она идти не хочет, говорит, что не любит CVS (кстати, и Торвальдс тоже так говорил).

    alizar такой alizar. Здесь CVS может использоваться в двух смыслах: система контроля версий или конкретная реализация (наряду с SVN и Git).
    Линус херил как раз конкретный CVS, поэтому и родился Git.
    А она не хочет на github, поэтому не любит (не умеет пользоваться??) системы контроля версий в целом.
    • +5
      CVS vs VCS.
    • –6
      >>Линус херил как раз конкретный CVS.
      Он херил ВСЕ существующие тогда CVS (поэтому и создал гит), так же как Кристина херит сейчас все CVS, ну ладно, раз вы шуток не понимаете, я вообще стёр все упоминания Линуса. :)
      • +3
        Она круче Линуса, потому что херит теперь и Git?
        • +2
          Просто прикольно, что когда-то и Линуса считали чудаком, а многие крутые проекты начинаются как забава.
      • +3
        >Он херил ВСЕ существующие тогда CVS (поэтому и создал гит)

        Пожалуйста, осознайте разницу между CVS и VCS. Это не просто перестановка букв.

        И Линус херил не все VCS, а только CVCS. К примеру, ему вполне нравился BitKeeper.
  • +2
    «В перспективе разработчик Magenta ставит цель воссоздать стек iPhone OS 1.0 с помощью свободных библиотек» в то время как сегодня выходит iOS 6.0. И какой смысл, кроме фана, в таком опенсорсе? Кто будет выпускать аппараты с ОС (пусть и опенсорс), устаревшей на 5 поколений (не буду говорить на сколько лет). Хорошо хоть правду ответила «Ответ: вообще без понятия»».
    • +2
      Android 2.3 покупают.
      Windiws XP покупают.

      А iPhone OS 1.0, думаете не купят?
      • 0
        Учитывая как любит судиться Apple, даже если удастся получить хорошую совместимость с оригинальной iOS, то что выйдет в итоге все равно должны быть в корне не похоже на iOS. Потому что графические интерфейсы, анимации, поведение GUI — все это запатентовано Apple, и сделать также в opensource проекте не выйдет. Тем более никогда не выйдет запустить ipa от оригинала здесь — это сразу же попадет под запрет и судебные иски.
        Максимум что может получиться — новая ОС, со своими программами, играми, SDK и т.п. Вот только я сомневаюсь что такое получится, учитывая кто занимается проектом и что она ответила на вопрос «а зачем?».
        • +1
          1. Скачиваешь ядро
          2. Скачиваешь либы
          3. ?????
          4. PROFIT!
    • +22
      Китайский айфон станет больше похож на айфон
    • 0
      Напоминает затею с ReactOS.
  • 0
    А как это: бинарно совместима с 5.0, но при этом стек даже 1.0 не восстановлен?
    • НЛО прилетело и опубликовало эту надпись здесь
      • +10
        Нет, это вы не знаете что такое бинарная совместимость и что такое окружение.
        Бинарная совместимость это способность запускаться и общаться с ОС.
        Стек iOS — это набор библиотек.
        В данном случае первое есть, а второго нет, т.е. на данный момент hello world, собранный дарвиновским тулчейном — спокойно запустится, программа с iPhone — тоже, но тут же завершится т.к. не обнаружит нужных библиотек.
        Это похоже на embedded линукс — grep запускается, а kate нет.
        • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Как нуб хочу спросить: как понять фразу «реализация Darwin/BSD поверх ядра Linux»? Просто я всегда думал, что это разные ОС (хоть и имеющие некоторые сходства), а как можно одну ОС реализовать поверх ядра другой — не могу понять.
    И еще:
    «UIKit -> Chamelleon» — хамелеон вообще реализация подобия Cocoa Touch (UIKit) на основе фреймворков из десктопного (Mac OS X) Cocoa. Или я опять чего-то не понимаю, или это все дурно пахнет.
    • +1
      Просто я всегда думал, что это разные ОС (хоть и имеющие некоторые сходства), а как можно одну ОС реализовать поверх ядра другой — не могу понять.

      ru.wikipedia.org/wiki/POSIX
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Спасибо за разъяснение, теперь более-менее понятно что они делают.
      • –2
        >Ядро Linux отличается отсутствием вменяемого дизайна и постоянными переделками всех интерфейсов, от внутренних до интерфейса с юзерспейсом.

        Херню сморозил. Юзерспейс API там стабильно как камень и являет собой обычную POSIX совместимую libc в которой есть обратная совместимость, а ядерные API к проекту вообще отношения не имеют. Проект это всего лишь реализация запускалки mach-o бинарников и некоторое количество библиотек. По сути дела это действительно аналог WINE'а!
        • НЛО прилетело и опубликовало эту надпись здесь
    • +3
      «как можно одну ОС реализовать поверх ядра другой — не могу понять.»

      Есть ядро (маленький набор программ, который напрямую командует оборудованием, владеет всем и управляет всеми остальными), а есть набор библиотек и программ. Грубо говоря, любая программа должна уметь читать файлы — но не полезет же она сама к оборудованию… поэтому она обращается к ядру через системные вызовы, syscall'ы. Ядро (или микроядро) общается с железом и размещает в памяти в программы, дает им управление и вообще всячески ими командует. Так что реализация команды «ls» к ядру не имеет никакого отношения. Работу с диском на себя берет ядро, программа просто пользуется этим.

      Поэтому бывает «ядро Linux, набор программ GNU» (это классика GNU/Linux, как пример — Ubuntu), бывает «ядро Hurd, набор программ GNU» (не выстрелила, увы), бывает «ядро Mach, набор программ и библиотек BSD» (Mac OS X и iOS, привет), бывает «ядро Linux, набор программ BSD» — MirOS и т.д., ну и так далее.

      Кстати, есть вариант Win32/GNU — это когда Cygwin под Windows. Юзерлэнд у нас как в Линуксе, а ядро — NT.

      Простите за ликбез.
      • 0
        • 0
          О, он еще жив, вот бы не подумал.

          Нет, это все равно GNU/Linux, конечно; просто ядро говорит не с оборудованием, а с вышестоящей ОС.
  • –6
    Девушки — такие девушки :)
    «Это очень странный проект. Вы спрóсите, зачем я это делаю? Ответ: вообще без понятия»,
    • +4
      Скорее гики — такие гики. «Just for fun» же.
    • +3
      We do what we must, because we can.
    • +5
      Есть мнение, что и не девушка то вовсе.
  • +8
    Китайцы уже ликуют в ожидании?
  • –3
    Такую бы энергию, да в нужное русло…
  • +1
    Лучше бы ядро, доступное в опенсорсе Эппла (xnu) на ARM спортировала…
    • 0
      del. не посмотрел на дату
  • –1
    Just for fun
  • 0
    Да эта бинарная совместимость не так уж и тяжело делается, просто нужна пускалка mach-o бинарей для Линукса, на просторах гитхаба такая валяется и с большинством консольным утилит вполне справляется.
  • 0
    А мне вот нравится в целом идея сделать возможность запускать iOS приложения на Линуксе, да и если получится заставить запускаться MacosX приложения на десктопном, то это тоже было бы реально круто.
    • 0
      Это будет или не нативно (вроде виртуальной машины) либо будет нарушать лицензию.
      • 0
        wine нативен в том смысле, что не использует никакую виртуальную машину, и при этом не нарушает лицензию, а по апилкам гугл выиграл у оракла
      • 0
        В чем будет нарушение лицензии, если приложение будет изначально создаваться нативными средствами под эту платформу и одновременно сможет работать на iPhone?

        Суть в том, что смотря какую ОС рассматривать, как первичную для разрабатываемого приложения. Эту или iOS.
    • 0
      Идея прекрасная, но эти приложения на Линуксе будут запускать только наши дети (исхожу из того, что Cocoa for Linux нет вообще, а WINE в этом году отметил примерно 20 лет попыток воссоздать Win API)
      • –1
        Вообще-то wiki.gnustep.org/index.php/Cocoa
        Под wine многие приложения в т.ч. directx-игры работают совсем неплохо, а 100% совместимости нет и между разными версиями windows
        • 0
          (заинтересованно) и что? прекрасная ссылка, мы все знаем про корни букв «NS» в префиксе классов Cococa, но что, Cocoa есть где-то помимо OS X?
          • 0
            по-крайней мере есть некоторый задел, а не «нет вообще»
            • 0
              Ну знаете, я могу написать include stdio.h и сказать, что это тоже задел Win32 API.

              Нет, GNUStep есть. Но его нет.
          • 0
            iTunes & Safari for Windows как-то работают. Может и есть он, Cocoa под Windows?
            • 0
              Есть мнение, что iTunes даже под Mac OS до сих пор не Cocoa; есть мнение, что Safari использует обертку, которая под Mac OS переводит все на Cocoa, а в Windows использует native controls… с другой стороны, да, я тоже читал мнения, согласно которым cocoa win32 существует и используется в закрытых проектах.

              Совершенно не удивлюсь — ведь сказал же как-то Джобс на презентации intel-техники: «Все эти годы Mac OS жила двойной жизнью. С самой первой версии 10.x она успешно компилировалась на Intel-платформе»

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