13 января в 14:54

На GitHub появился странный репозиторий, похожий на исходники движка Opera Presto [закрыто правообладателями] новость



Современный браузер должен поддерживать обилие стандартов и технологий, которые превращают веб-документы в интерактивные приложения, медиаплееры со стримингом или даже игры. В связи с этим сегодня браузерных движков не так уж и много. Ушло время, когда достаточно было кое-как вывести текст и картинки. Сегодня нужна мощность виртуальной машины для JavaScript, поддержка аппаратного ускорения декодирования видео и постоянная отзывчивость интерфейса.

Исходные коды некоторых браузеров открыты и распространяются с условиями использования различной степени свободы. Поэтому мы увидели появление множества клонов Chromium, часть из которых, впрочем, быстро стала добавлять собственные улучшения относительно Chrome. А кто-то вообще отказался от собственного движка в пользу разработки Google. Так произошло с Opera в 2013 году. Позднее Opera последовала за форком WebKit и перешла на Blink.

Opera — браузер, который мало где доминировал, но не отставал от конкурентов технически. Для рендеринга страниц браузер использовал собственный движок Presto. Он обладал уникальностью: почтовый клиент, мощный менеджер загрузок, встроенный BitTorrent-клиент, жесты мышью и блокировка контента. В связи со сменой движка часть любимых многими функций Opera после 12-й версии исчезла. Градус недовольства должен сбить браузер Vivaldi, который тоже базируется на Blink.

А Presto мёртв. Хотя на днях на GitHub появился странный репозиторий, который напоминает исходники этого движка.

README.md гласит: «Веб-движок рендеринга Presto: Opera 12.15. Этот репозиторий содержит движок рендеринга Presto, используемый в Opera по 12 версию. Покеда». Аккаунт пользователя prestocore, выложившего файлы, анонимен и не содержит идентифицирующей информации. Большая часть кода в репозитории — 66,5 % — написана на C++, языке, на котором был создан Presto.

По адресу github.com/prestocore/browser пока что размещены почти полгигабайта файлов.

Обновление 2017-01-14 3:30 МСК: доступ к репозиторию закрыт согласно процедуре американского закона об авторском праве в цифровую эпоху (DMCA). В комментариях этого поста идут обсуждения зеркал и компилируемости исходников.
@atomlib
карма
318,0
рейтинг 5,1
Заместитель главного редактора
Похожие публикации
Самое читаемое

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

  • +10
    В пост призываются Shpankov (с комментариями от фон Течнера) и pepelsbey
    • 0
      Думаете слив от бывших сотрудников?
      • 0
        Я думаю, что они могли бы хотя бы сказать «оно» или «нет». Хотя вот листаю код, кое-какие доки в coredoc — похоже не фейк.
      • 0
        Будет круче, если это «слив» от тех, к кому по случайности попали старые компы/оргтехника. Как часто бывает с утечками исходников прототипов игр, которые находят прямо на devkit-ах консолей на интернет-барахолках.
        • 0
          Всё, репозиторий больше не «пока что». Поэтому, если кто-то из гиктаймеров успел выкачать всё — ждём перезаливки на облачко. Вроде камрады ниже (@brzsmg, staticlab и кто-то ещё) успели скачать — к ним и просьба перезалить.
          • +3
            Уже разошлось по миру, см. на реддите и в других местах. Ну а что единожды попало в сеть, останется там навсегда. Теперь, после takedown-а репозитория, от этих исходников точно не отстанут. Иначе — могло бы просто побаловаться с ними и забить на «старье». Но не теперь, когда аутентичность (и актуальность кое для кого) подтверждена.

            Единственное из всей этой истории, что мне по-прежнему интересно — это источник утечки. Слабо верится, что это кто-то из бывших разработчиков взял и решил выложить. Версия со списанной оргтехникой и неочищенными носителями информацией мне кажется более актуальной.
            • +1
              Слабо верится, что это кто-то из бывших разработчиков взял и решил выложить.

              А почему, соббсно, нет? Тем более написано, что «Аккаунт пользователя prestocore, выложившего файлы, анонимен и не содержит идентифицирующей информации». То есть понятно, что кому-то зачем-то пришлось шифроваться к тому-же.
              • 0
                Кто-то не захотел иметь проблемы с полицией / спецслужбами какой-нибудь страны.
                Боюсь, что Опера выложившего затаскает по судам.
                • 0
                  Ну вот. Особенно страшно для него же самого будет, если это сам разраб Оперы и окажется.
            • +1
              >останется там навсегда

              Не всегда, к сожалению.
              Я _очень_ хочу найти один проект, выложенный в Сеть автором в 1999 году и удалённый по каким-то причинам отовсюду (включая зеркала на archive.org).

              Речь идёт о
              проекте FreeBas9k, реализации BASIC для телефона Nokia 9110. Проект удалили из-за какой-то тёрки с Nokia (автор считал, что она должна ему денег), но сейчас это уже исключительно историческая ценность, на мой взгляд.
              Сам файлик, если я правильно понял, имеет размер в 56 килобайт или около того, исходников вроде не было в комплекте. Я нашёл чей-то архив программ для него на Archive, но ссылка на сам файл bas9k.zip была потёрта.
              • +2

                Вот прям про вашу ситуацию. Есть подозрение, что у этого человека (в смысле у немца) и необходимый вам файлик есть.

            • +1

              Вот я тоже так думал. Пока не приключилась такя история. Есть такой лингвист Джон Кихада (John Quijada). Изобрел он как-то искусственный язык — ифукиль. А потом поигрался с ним немного, и раз, изобрел другой искусственный язык — илакш. И вот в этом илакше была очень занятная письменность. Все материалы он выкладывал на свой сайт. И там было довольно много всего на эту тему. И вот как-то, когда мне понадобились "красивые и загадочные письмена", я решил сходить к нему на сайт и позаимствавать несколько надписей линейным письмом илакша. И там я прочитал, что автор в илакше разочаровался и вернулся к работе над усовершенствованым ифкуилем. И все материалы по илакшу убрал...


              Фигня, подумал я!


              Ну а что единожды попало в сеть, останется там навсегда.

              подумал я! И подшел искать в сети. И нашел 100500 ссылок на сайт Кихады :-( Похоже никто не озадачился тем, чтобы к себе что-то скопировать. А зачем? Это же W.W.W., а в нем рулят HTTP и гиперссылки.
              Впрочем, может я просто гуглить не умею? Если кто ткнет меня носом буду премного благодарен.

              • +1
                Именно поэтому я установил ScrapBook X и тупо сохраняю себе все интересные страницы (а то и сайты), качаю все интересные репозитории и вообще храню у себя всю информацию, благо жёсткие диски достаточно дешёвые, чтобы ничего не удалять.
              • +2
                • 0

                  удалено

    • +5
      Не думаю что от этих двоих есть хоть какой-то толк. Как минимум первый точно говорящая голова, он никогда не говорил правду, только повторял официальную позицию, даже если она противоречила здравому смыслу.
      • +5
        Второй, вы имеете в виду?
        • +2
          Нет, я писал именно про первого. Если и второй тоже — значит оба.
    • +4
      Ни у кого из упомянутых доступа к движку не было, разве что Йон может подтвердить.
      • +4

        Надеюсь, что под гнетом утечки компания примет решение открыть исходники по-настоящему.


        https://www.change.org/p/opera-software-open-sources-of-presto-engine

        • +1
          Что-то маловато пока голосов. Чем смог поддержал. Будем надеяться, что после такой утечки сорцы всё-таки официально передадут в опенсорс.
      • 0
        del
      • 0
    • +1

      Я волнуюсь, Shpankov "последний раз был на сайте 31 декабря 2016 в 16:26", а последнее сообщение от него вообще месяц назад.

      • 0
        Не волнуйтесь, ВКонтакте он бывает регулярно (https://vk.com/id3942209), и даже пишет иногда.
  • +1

    Кто-нибудь уже попробовал скомпилировать? :)

    • +2
      Нужна VisualStudio 2010.

      Открываем решение
      \platforms\windows\OperaProjectFile.vcxproj

      Ругается что не хватает кучи проектов:
      Заголовок спойлера


      • +3

        А почему вы открывали vcxproj, а не sln? Там как минимум для libvpx путь корректно прописан, и нужный проект действительно лежит, где ему надо.

      • +1

        По-видимому, недостающие файлы проектов генерируются из *.vcxproj.template при помощи vcxproj_update.py

        • 0
          Там в сорсах вообще какая-то своя система сборки живёт, flower называется. Пока детально не ковырял, поэтому не могу сказать, как она соотносится со студийными проектами и солюшенами.
          • +1

            Из доков к flower: Flower is a build tool designed to replace GNU make for building Opera products on UNIX-like systems. Так что к Windows и Mac она, по-видимому, никак не относится.

            • 0
              А, понятно.
              А с темплейтами, похоже, может работать ещё и скрипт git_checkout_hook.sh.
              P.S. Кстати, он же и запускает vcxproj_update.py.
              • 0

                Очевидно, при коммите он должен удалять файлы этих проектов, а затем их пересоздавать:


                if [ $run_update = 1 ] ; then
                    echo "Generating source files..."
                    python modules/hardcore/scripts/sourcessetup.py --ignore-missing-sources
                    echo "Regenerating project file..."
                    python platforms/windows/vcxproj_update.py
                fi
                • 0
                  Не при коммите. При чекауте. Смотрит, имеются ли отличия в темплейт-файлах между предыдущим коммитом и тем, на который чекаутимся. Если есть — запускается перегенерация проектных файлов из этих шаблонов. Как-то так.
                  • 0

                    Да, прошу прощения, оговорился.

      • +20
        Скомпилировал под Windows. Пользовался Visual Studio 2010.

        Необходимо:
        CMake Tools for VisualStudio
        Python 2.x (я использовал 2.7)
        Strawberry Perl
        Pike
        vsyasm 1.2

        А также библиотеки:
        CURL 7.28
        OpenSSL 1.0.1c

        После установки Perl необходимо установить к нему библиотеку XML::Twig, что делается в командной строке:

        cpan XML::Twig

        После установки Pike добавить путь к его исполняемому файлу в переменную среды PATH. У меня это — C:\Program Files (x86)\Pike\bin

        vsyasm (версии 1.2!) устанавливается согласно инструкциям файла readme.

        Дальше необходимо распаковать CURL и OpenSSL в папку presto\browser\adjunct\autoupdate\autoupdate_checker\platforms\universal_adaptation_layer\network
        Папки с ними переименовать в «curl» и «openssl» соответственно. Да, кстати, по указанному пути уже будет находится папка openssl, но её нужно заменить, так как некоторые необходимые для компиляции файлы в ней почему-то отсутствуют…

        После, откройте файл проекта curl\lib\libcurl.vcproj в VisualStudio 2010 и согласитесь с преобразованием. Зайдите в свойства проекта, и в С/С++ > Code Generation > Runtime Library выберите Debug Multithreaded (/MTd) для конфигурации Debug и Multithreaded (/MT) для конфигурации Release. Если этого не сделать, то на стадии линковки появятся ошибки, связанные с конфликтами символов определённых в разных библиотеках. Теперь можно скомпилировать libcurl в конфигурации Release.

        Потом компилируем OpenSSL, для этого понадобится открыть командную строку Visual Studio (Microsoft Visual Studio 2010 > Visual Studio Tools). Переходим в каталог openssl:

        cd <путь>\presto\browser\adjunct\autoupdate\autoupdate_checker\platforms\universal_adaptation_layer\network\openssl

        И компилируем:

        perl Configure VC-WIN32 no-shared --prefix=../../../../Output/openssl -MT
        ms\do_ms
        nmake -f ms\ntdll.mak
        nmake -f ms\ntdll.mak install


        Потом копируем библиотеки libcurl.lib из curl\lib\Release, libeay32.lib и ssleay32.lib из presto\browser\adjunct\autoupdate\autoupdate_checker\Output\openssl\lib в autoupdate_checker\Output.

        Из командной строки запускаем скрипт, отвечающий за генерацию проектов:

        python <путь>\presto\browser\platforms\windows\vcxproj_update.py

        Открываем решение presto\browser\platforms\windows\Opera_vc2010.sln, все проекты в решении должны открыться нормально. Заходим в свойства проекта autoupdate_checker, и в разделе Linker > Input > Additional Dependencies добавляем библиотеку wldap32.lib во всех конфигурациях.

        Теперь осталось только скомпилировать старую-добрую Оперу :)

        По окончании компиляции, исполняемые файлы окажутся в каталоге presto\browser\Release (или Debug, в зависимости от выбранной конфигурации). Но осталось ещё пара мелких штрихов: необходимо скопировать дефолтный скин в папку skin, для этого нужно заархивировать содержимое presto\browser\adjunct\resources\skin\standard_skin в архив standard_skin.zip и скопировать его в указанную папку. Также Opera может злобно ругаться на отсутствие файла encoding.bin, однако, не найдя его в исходниках, я не придумал ничего лучше как просто скопировать его из уже установленной у меня Оперы 12.17…

        Также удивило то, что Debug-версия Opera при первом запуске выдаёт несколько Assertion Failed (prev_url==url_size), но это возможно как-то связано с созданием нового профиля. Release-версия работает абсолютно нормально.

        Таким образом, исходники старой Оперы теперь доступны. Но что с ними делать дальше — вот в чём вопрос…

        • +4
          Небольшое дополнение: что-бы standard_skin.zip автоматически собрался, нужно скачать 7zip архиватор и скопировать исполняемый файл «7z.exe» в папку, которая есть в PATH. Я создал папку C\bin, скопировал 7z.exe в эту папку, и добавил её в в PATH. Странно, но у меня encoding.bin создался сам при сборке. У меня windows 10 x64 и visual studio 2010.
          • 0
            Спасибо за дополнение! Действительно, с указанным в PATH путём к 7zip, дефолтный скин собирается автоматически. А что касается encoding.bin, то присмотревшись к логу сборки, я обнаружил там сообщение «Failed creating encoding.bin». Нужно разобраться…
            • 0
              У меня encoding.bin создался сам.То ли тут 7z помог, то-ли еще что.
        • +2
          Эта версия OpenSSL уязвима Heartbleed. Сборка с 1.0.1u проходит успешно, но и ее не рекомендуют к использованию
          • +3
            Сборка с OpenSSL-1.1.0c прошла успешно, только нужно установить NASM, добавить папку с ним в path, командную строку Visual Studio открывать с привилегиями админа, вместо libeay32.lib и ssleay32.lib копировать уже libcrypto.lib и libssl.lib и в autoupdate_checker в разделе Linker > Input > Additional Dependencies указать их имена.
  • +7
    Если правда слив, то, боюсь, толку от этого немного, так как сомнительна возможность использования этих исходников с юридической точки зрения

    (Здесь нужен AppChecker PVS-Studio :)
    • 0
      Будет как с Wine/ReactOS. Некоторые разработчики поглядывают на слитые исходники Win2K, но переписывают.
      • +6

        У нас никто не поглядывает.

        • +4
          А что плохого в подглядывании? Прямой копипаст — да, нельзя по законам юридическим и моральным, а посмотреть, как что-то сделано, не зазорно.
          • +10

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


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

            • +2
              А для Wine это гарантируется? Ведь наработки из него используются, например, в Arwinss.
            • +2
              А если такого разработчика сразу не заметят? Ну не прямые же фрагменты кода же он будет коммитить, и не большими кусками сразу. И кто будет заниматься проверками «не-майкрософтности» кода, если сам в подобные источники никогда не заглядывал?
              • 0

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


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


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

                • 0
                  Но это же лишь подтверждает обратное! Получается, что при осознанном понимании заимствованного кода разработчиком, при адаптации его под требуемый фирменный стиль и последующих изменениях на ревью другими разрабами (что вообще, по сути, частично снимает ответственность с первоначального комиттера), определить заимствование из решений MS в той же области почти невозможно.

                  Любопытно, что похожая ситуация была в проекте Mono, где велик был соблазн залезть в утекшие исходники .NET Framework (позже, вроде, даже перевыложенные самими MS, что однако не сняло ограничения по официальному лицензированию, а этим Mono тоже были всегда озабочены).
                  • 0

                    Это ничего не подтверждает. Все попытки использовать утекшие коды у нас тщательно пресекаются. Мы с огнем не играем.


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

                    • 0
                      Т.е. с майкрософтскими исходниками все же сравнивают код определенные люди в команде?
                      • 0
                        Насколько я понимаю, DMCA позволяет следующий протокол: один человек смотрит утекшие исходники (или, скажем, логи дизассемблера) и подробно документирует это дело, другой — по этим докам реимплементирует (или же проверяет свой код на похожесть). Это законно.
                    • 0
                      Придумали бы лучше процедуру невосстановимой переделки. А то наверняка бывают ситуации, когда написанный код такой же как оригинальный, потому что по другому нелогично
                      • –1
                        Поздравляю, вы только что переизобрели полиморфные вирусы!
                        • 0
                          Полиморфные вирусы научились работать с исходниками на высокоуровневых языках?
          • +2
            > А что плохого в подглядывании? Прямой копипаст — да, нельзя по законам юридическим и моральным, а посмотреть, как что-то сделано, не зазорно.

            Я бы еще добавил: по законам юридическим какой юрисдикции. Ну глупо, скажем, в Иране сказать «по законам [Ирана] нельзя посмотреть утекший код и взять реализацию себе». И список стран, где такое явно неуместно, будет больше, где уместно.

            Другое дело, что крупные площадки (вроде Github) ассоциируют себя напрямую с США и ЕС, а иногда и полностью находятся находятся в юрисдикции этих стран, где миром «рулит» DMCA 1998 года.

            Выход: нужны другие площадки, иная кооперация и т.п.
            И не исключаю что все это существует уже, при чем далеко не обязательно лишь в даркнете.
  • 0
    Ни git ни presto в 1995 не существовали, хотя тут вопрос оформления.

    Буду рад, если это настоящие исходники и думаю пока не слишком поздно сделать из них что-то интересное.
    • +1
      Ну, комментарии в коде пока говорят об аутентичности. Дома надо будет пошерстить

      Да и вещи типа https://github.com/prestocore/browser/blob/master/data/translations/ru/search_eng.ini похожи на правду
      • +1
        Согласен, при беглом просмотре очень похоже на правду.
    • +6
      Дату коммита в гите поменять — дело нескольких секунд. Не думаете же вы, что весь оригинальный репозиторий Оперы так и состоял из двух коммитов, первых из которых пустой, а второй — целиком вся Опера 12.15, написанная с нуля одним махом. :-)
      • –1
        Не думаю. Как и сказано выше — дело оформления, но имитация коммита от 95 года немного настораживает. По остальным признакам скорее похоже на настоящие исходники. По крайней мере случайные файлы оказались реально кодом, а не мусором на сотни мегабайт.
        • +6
          имитация коммита от 95 года немного настораживает
          Думаю, это просто один из шагов по заметанию следов.
          • 0
            А вот, кстати, интересно, случайно ли был выбран именно год первого релиза Оперы. :-)
            • 0

              И "22 июня, ровно в 4 часа". Хотя "днём рождения Opera" считается 30 августа.

              • +1
                А дата и время вас больше ни на какие мысли не натолкнули?
                • 0

                  Нет, ну я понимаю, что 4:00 GMT+4 — это 0:00 UTC, просто подметил совпадение.

                • +1
                  Если эту дату и время выбрали неслучайно, то круг подозреваемых в сливе сужается до жителей эксСССР :)
                  • 0
                    Мне кажется, ВОВ сюда приплетать уж точно чересчур, если вы про неё.
                    • 0
                      Я просто развил мысль Ezhyg.
                      • 0
                        извините, не разобрался, подумал, что именно такая формулировка есть в текстах :(
              • +1
                30 августа — это дата основания компании. Первая версия браузера была представлена 10–14 апреля 1995 на конференции WWW. А первая публичная версия (2.0) вышла только в 1996 году. Так что откуда взялось 22 июня, я пока не понял. Разве что самый длинный день года, но при чём он тут… Но всё равно 1995 год явно знаковый.
    • +2
      В 95-ом существовал CVS, ClearCase (правда, лучше бы не существовал), и куча других систем контроля версий. Обычно люди и компании стремятся сохранить историю версий и импортируют в новую систему всю историю изменений, а не просто самую последнюю версию исходников, и для этого есть масса инструментов.

      История вообще могла пройти несколько этапов, например, CVS -> Subversion -> Mercurial -> Git.

      Если я правильно понял причину недоумения.
      • +1
        P.S. Извините, посмотрел на репозиторий, там нет никакой истории, только фейковые даты у каждого файла.
  • –2
    У меня одного антивирус ругается? Вот что Касперский Тотал Секьюрити говорит:
    Программа: WinRAR archiver;
    Файл: D:\browser-master\modules\minpng\tests\x_too-large.png;
    Время: 01/13/2017 15:41:35;
    Название объекта: Exploit.Win32.CVE-2013-2977.a
    • +15
      Он и должен ругаться, это некорректная png, которой самое место в тестах.
    • +6
      PNG integer overflow (CVE-2013-2977)
      Логично блин :)
    • 0
      Symantec Endpoint тоже ругается, но на всю папку с репозиторием.
  • +2
    Примечательно то что сам аккаунт и репозиторий были созданы почти год назад, еще 11 февраля 2016.
    в исходниках, встречаются копирайты и 2003 и 2011 года, с именами разработчиков.
  • +2
    feldgendler: https://github.com/prestocore/browser/blob/8c5977d18f4ed8aea10547829127d52bc612a725/adjunct/quick/documentation/quick.tjp#L12
    • +1
      https://github.com/prestocore/browser/blob/8c5977d18f4ed8aea10547829127d52bc612a725/modules/logdoc/module.tweaks

      Ы=ххъ ;D
  • +2
    Хм.
    Вопрос к знатокам: если это все же оригинальные исходники, то сможет ли Opera в суд на опенсорс проект основанный на этом двиге? Я просто туп в таких вопросах…

    Если действительно Presto, то это очень здорово. Может кто то сделает новый годный браузер)
    • +5
      DMCA и всё последующее.
      • 0
        Учитывая географию владельцев этих исходников, скорее EUCD.
      • +3
      • 0
        На кого они будут подавать в суд, если разработчики анонимны, например? На гитхаб?
        • 0
          На тех кто размещает исходники/продукт. Разрабатывать сколько угодно можно.
    • 0
      Подать в суд можно по воле левой пятки, практически. Вопрос скорее в том, каковы шансы этот суд выиграть.
    • +2
      > сможет ли Opera в суд на опенсорс проект
      Конечно, сможет.
    • +4
      Если разработчики будут полностью анонимны, а репозиторий где нибудь в Даркнете (торе или i2p) то пускай усудятся:)
      Я кстати давно жду такого явления как «темный open-source», которое объединяло бы открытую разработку и полное презрение к любому копирайту… А может такое уже где нибудь есть?
      • +2
        Есть, как не быть: git.repo.i2p(.xyz)
        Оно, как и прочие темные интернеты, не слишком живое. Но вполне рабочее.
        • –1
          Только это не надо будет никому. (К сожалению многих, наверное)
        • 0
          У меня нет i2p, но их зеркало в .onion (git.psii2p655trtnvru.onion) — лежит.
          Ещё на просторах интернета встречается упоминание gitweb2zl5eh7tp3.onion, но он тоже лежит.
          ehww2ercchnq7633.onion? Лежит.

          А есть ещё варианты? Разумеется, из чисто академического интереса спрашиваю.
          • 0
            upd: http://git.repo.i2p.xyz/ работает :)
            • +1
              вот бы на GitLab еще перешли)
              • 0
                Мне тоже кажется, что основная проблема там — отсутствие issue tracker'а.
                • +1

                  В GitLab?

                  • 0
                    В git.repo.i2p.
            • 0
              Через .i2p.xyz не все бывает доступно (например zzz.i2p.xyz или stats.i2p.xyz). Причина в том что весь трафик идет фактически через один узел, а также разнообразные куцхакеры.
              Потому, по возможности, рекомендуется ходить изнутри I2P, особенно на ресурсы с большим трафиком то git.
  • +3
    Кстати, интересный нюанс. Били ли при продаже компании китайцам в явном виде переданы права на Presto. Формально на тот момент он уже был похоронен. Или Presto вообще остался в Норвегии, как используемый в каких-то телевизорах (продали же десктопное подразделение, да?).
  • +24
    Там не только движок, там вся опера и м2. Под линуксом с помощью пары патчей и такой-то матери собирается. Версия 12.15
    Работает, даже видео на ютубе играет.
    • 0
      В т.ч. исходники интерфейсной части? А то в старом блоге Оперы рассказывали о том, что для тестов движка у них используется минимальная морда.
      Если выложено всё полностью, то это очень хорошо, для изучения в академических целях, конечно.
      • +1
        Судя по набору файлов, там даже инсталлятор есть.

        PS. Привет! :)
        • 0
          Привет =)
          Я на работе бегло посмотрел файлы, но C++ — не моя специализация. И, блин, вот сегодня первый раз, когда я об этом жалею.
      • +5
        Да. Весь интерфейс. Все системные скрипты, шейдеры для libvega и т.п.
        Все это дело жутко модульное. Каждый диалог, каждая фича — модулем.
        В целом от исходников довольно приятные впечатления и собирается все минут за 5 не выжирая оперативку, в отличии от другого известного движка.
        • +4
          Ну, не считая того, что местами пришлось патчить return FALSE на return nullptr в функциях, возвращающих указатели.
          • +1
            Собирали через flower или ещё как-то? Может инструкцию накидаете?
            • +7
              да, flower
              http://paste.fedoraproject.org/526781/32598714/ — патч на return'ы и на системный tinyxml
              ./flower -v --without-kde4
              (у меня пятые кеды и оно в итоге собирается наполовину с пятыми, наполовину с 4ми и падает)
              У меня на 64 битах не собирается автоматом 32битный плагин-враппер, потому что инклюдит 64-битный gdk. Приходилось брать команду из выхлопа, заменять путь к инклюдам и собирать вручную. Там три файла, для которых так надо сделать.
              flover можно запускать с -j 1 дабы было виднее, на чем он падает.
              • +1
                Мерси!
              • +6
                ах, да, там еще надо или отключить сборку апдейт-чекера или положить ему туда исходники curl
                • 0
                  Можно ссылку сделать в /usr/include/curl
                • +1
                  есть подозрение что поможет вот этот параметр --without-autoupdatechecker.

                  p.s. вот бы кто-то еще написал список зависимостей, а то приходится методом проб и ошибок ставить все по очереди.
              • +2
                Подтверждаю, собирается на генте с ~amd64 профилем. Версия браузера 12.15, версия престо 2.12.388.
                У меня кстати собралось с системной so-шкой tinyxml без всякиз патчей. А инклюды gtk получаются через pkg-config, который и отдаёт lib64 вместо lib32, оно в platforms/quix/module.build/plugins.conf.py.
                Ну и там по мелочам в некоторых perl-скриптах старый формат регекспов и переменных, но на сборку это не влияет.
                • +2
                  Ну и раз уж товарищ iSage начал фиксить варнинги, то и я немного отмечусь.
                  Микропатчик, фиксит похожую на FALSE->NULL проблему во встроенном hunspell — http://pastebin.com/2EUFEBYp
                • 0
                  Ещё один микропатч — http://pastebin.com/UuaZSWZg
                  Фиксит релизную (--release) сборку на линуксе. Современные (gcc5+) компилеры выдают кривой код после оптимизации, что приводит к крашам на очень многих страницах с JS.
                  • 0
                    ну это неправильный фикс. правильный фикс — поправить места падения.
                    • +1
                      Там ровно одно место, в котором используется ихний delete-враппер. Он вообще много где используется, но падает только там.
                      • +1
                        И падает именно на -O2-3, на -O0, который в дебажной конфигурации, такого добра нет.
                        Что опять же наводит на мысли о оптимизаторе. Поэтому и добавлен флаг, чтобы он ещё где подобного не учудил.
                        Собственно, была аналогичная проблема в gcc6 и хроме, он там тоже в -O3 собирается, и без этого же самого флага были очень похожие краши на некоторых JS.
                        • 0
                          То есть на -O2 тоже падает?

                          А есть возможность с ASAN'ом собрать?

                          https://github.com/google/sanitizers/tree/master/address-sanitizer
    • –1
      Вот, раз такой молодец, давай репозиторий с патчами и build.sh
      • +2
        Патч есть выше. Все, что нужно для сборки — голова и ./flower --help
        Распространять код я не собираюсь, его и так уже все, кому не лень отзеркалили.
        • 0
          > репозиторий с патчами

          Как я понимаю, речь идёт не о том, чтобы распространять утекший код, а о том, чтобы коллективно создавать и распространять его улучшения. Вот интересно, кстати, насколько легален подобный процесс?
          • +1
            Нет, судя по манере изложения там именно требование всего готовенького. Энивей, патч пока всего один.
            Процесс нелегален, поскольку патчи содержат куски исходного кода.
          • 0
            Все зависит от страны. Главное, чтобы такой программист не нарушал открыто законы (а чаще всего просто практику их исполнения) той, гражданство которой имеет и в которой проживает. Никто не мешает ему представиться человеком с Кокосовых островов.
          • 0
            Смотря в каком виде.

            Если в виде диффов/патчей, то могут придраться к тому, что в них фигурирует код оригинала.

            Если в виде «в файл такой-то после строки номер X нужно добавить вот этот написанный мной с нуля код» — то придраться практически невозможно.
            • 0
              Только такие патчи привязаны к оригинальному коду намертво, и применить два таких на один файл очень затруднительно, придётся каждый раз сверятся с оригинальными исходниками.
              Интересно, а к именам файлов не придерутся?
              • +1
                Можно сделать таблицу с однозначным соответствием «оригинальный_файл = сгенерированный_хеш_код» ))
                • +2
                  Тогда уж и строки хешировать, чтобы включить их в контекст diff вместо оригинальных, ну и сам софт для diff модифицировать соответствующим образом. Тогда удобство работы с такими патчами будет не сильно ниже, чем с обычными.
                  • +1

                    Интересное концептуальное решение получается: система контроля версий, в которой вместо нулевой итерации будет magnet-хэш или torrent-файл, а в диффах вместо предыдущей версии строки указан её хэш. Правда в дифф-файлах следовало бы также предусмотреть возможность и других исправлений, таких как перемещение блока кода или замена части строки, чтобы максимально не засвечивать в коммитах оригинальный код.

  • +4

    Просто мечтаю чтобы кто нибудь собрал легаси оперу для маленьких АРМ девайсов на линуксе!

  • 0
    [del]
  • –6
    Ну не знаю. Как-то сразу после анонса, плюс на Гитхаб, смахивает на слив ради пиара. Да к тому же, судя по информации выше — не первый такой раз, а разве IT-гигант не научился бы на своих ошибках? И код неполный, как так сливать можно?
    Мой вердикт — пиар акция, да и только.
    • +7
      Код вполне себе полный. См. комментарии выше — вроде бы даже собрать уже удалось.
  • +5
    Repository unavailable due to DMCA takedown.
    • +5

      Теперь ждем на торентах

    • +3
      Ну вот, а я был на работе и не успел скачать. Может кто-нибудь поделиться в личку?
    • 0
      Быстро отреагировали.
      • +3
        Зато теперь в аутентичности утекших исходников можно не сомневаться.
        • 0
          Лично я бы посомневался в том, что анонимус не добавил какой-нибудь бэкдор, троян или что-то типа того забавы ради
        • +1
          Мне больше интересно кто и зачем слил — да еще на гитхаб где такие вещи банятся на раз два.
          • +2

            Перед тем, как они банятся, их успевает увидеть куча народу и сохранить себе. Так что смысл именно в GitHub'е есть.

    • 0
      у кого копия осталась? не успел :(
    • +4
      «То, что попало в интернет, останется там навсегда.»
      • +1
        Ага, в торрент и magnet-ссылку — в блокчейн BTC, комментарием к транзакции.
        (картинка-с-троллейбусом-из-буханки-хлеба)
      • +5
        Ах, если бы… Это только с тем, что всем интересно. А вот мало кому нужный контент (в моём случае — музыка) запросто может пропасть навсегда :-(
    • 0
      Вчера клонировал репозиторий:
      https://mega.nz/#!Lo0l1aZA!hFtA8QDtkgwYFm15slZbZWkGprhwI6R8xkl3G9ulzDI
      Вариант без папки .git (на 100 МБ меньше):
      https://mega.nz/#!GhVTVaRC!fhaeAwWmOfpMbMznjziDmAouuQnPFdifK_xEllImBKk
  • +1
    Господа успевшие скачать, ждем раздачу на торрентах:) Или может уже где-то есть?
  • –4
    Гитхаб лег под хабраэффктом?
    При попытке склонировать — выдает 504. При попытке скачать zip — 500.
    • +6
      Комментарий долго ожидал модерации, в момент опубликования уже устарел и, в итоге, набрал минусов.
      Эта система комментариев для незахабренных пользователей немного кривовата…
      • +2
        Я тоже в своё время мечтал о возможности снять комментарий с модерации.
  • +1
    Вот и прикрыли лавочку.

    Repository unavailable due to DMCA takedown.
  • +1
    Присоединяюсь к остальным — поздно новость в вк увидел, может кто поделиться?
  • +1
    Между прочим, из попыток пересоздания «старой оперы» Vivaldi и Otter тут уже все видели, а Fifth, кажется, ещё нет.
    • 0
      Fifth is a Linux-exclusive browser…
    • +1
      Как он вообще? пользовались?
  • +4
    «Opera — браузер, который мало где доминировал»
    Если верить Statcounter, Opera — самый популярный брузер в России (и некоторых странах бывшего СССР) в 2009 году. Так что доминировал, и вполне себе не мало.
    • +3
      Россия- это как раз и есть «мало где» в масштабах интернета.
      • +1
        Да, глобально это было 2%.
        • +1
          Поэтому боль от радикальных изменений в Опере и смены движка только в русскоязычном сообществе и была в основном замечена.
  • +4
    Интересно, что слив по времени совпал с релизом Opera Neon
    • +3

      Кого-то просто достало происходящее в опере.

  • +10
    В общем, я собрал это дело для raspberry pi
    Зависимости: libfontconfig1-dev libtinyxml-dev libxrender-dev libgstreamer-plugins-base0.10-dev libgtk2.0-dev libcups2-dev libfreetype6-dev libsqlite3-dev libxml-twig-perl zip

    Патчи:
    Build patch (был выше): https://paste.fedoraproject.org/527758/03599148
    Arm patch: https://paste.fedoraproject.org/527759/45036061

    ./flower -v -j 1 --without-kde4 --without-gtk3 --without-plugins --without-dual-plugin-wrapper --no-debug-symbols --optimize --without-autoupdatechecker --no-package-devel --release --package=tar

    Если собирать на железке, то нужен свап на пару гигов и много терпения, ибо собирается больше суток
    КПДВ: http://is2.4chan.org/g/1484503794169.png
    • +3
      Мсье знает толк!
      • +4
        Атож!
        Малоизвестная, кстати (видимо потому, что закрытая) фича оперы: яваскриптовый движок можно расширять бинарными плагинами. Например дергать gpio из js.
        • 0
          Это возможно на raspberry или на андройде из оперы мобайл то же?
          • 0
            Исходников оперы-мобайл нету, поэтому без понятия.
            Судя по дефайнам они включены для профилей smartphone и tv, а на десктопе какраз выключены.
            Собственно, никто не мешает собрать примеры из modules/jsplugins и попробовать.
  • +5
    Собрал под windows. Запускается, работает и даже html5 видео на youtube играет. Могу статью по сборке накидать, если надо.
    • 0

      давай

      • 0

        Выше уже опубликована достаточно подробная инструкция по сборке под Windows.

  • +6
    С opennet'а:
    зато я понял, наконец, что за «непреодолимое препятствие» было у presto, почему он «устарел» и всё такое. про то, что «с кодовой базой presto сложно поддерживать новые стандарты» — это полная чушь, само собой. а вот то, что престо принципиально сдизайнен как однопоточный двигатель — это факт, который неоднократно упоминается в разной документации. редизайн на много потоков/процессов невозможен, только перепись.
    • 0
      Webkit тоже не особо просто переходит на новые парадигмы, и webkit2 потребовал много нового кода и для множественных процессов и платформенности и многопоточности и пр. Но возможно не так болезненно как было бы с presto, но есть ли смысл?
      • +3
        ИМХО — смысла нет, возможно, конечно, если Presto переписать на потоки\процессы\рутины, то он и бы и стал работать на 10-30% быстрее, но, это бы не сыграло роли, он и так довольно шустрый. Короче — фап^W хайп на многопоточность сделал своё чёрное дело =(. Остается только надеяться, что Opera Software официально откроет сорцы, а то сейчас они вроде как и есть, а сделать с ними ничего нельзя.
        UPD:
        Или давайте распространять апдейты патчами, ночью, в поле
    • +2
      А по-моему этот движок вполне возможно сделать многопоточным, было бы желание…
    • +4
      Он и не нужен. Да, интерфейс однопоточен. Но тот же js — нет. Там вполне себе отдельные потоки. Плагины тоже отдельными потоками. Видео/Аудио — тоже.
    • +3
      Однопоточность ядра — это фича, а не проблема.
      Она позволяла зарабатывать делая кастомные браузеры для телевизоров и автомагнитол (эти браузеры часто даже не содержали слово «opera», можно было догадаться только по «presto» в User-Agent).
      На таких железках не всегда доступны треды и другие модные штучки, вроде gcc новее 3-й версии.
      • +4
        Однопоточность сначала была фичей, а потом стала проблемой. :)

        Насчёт кастомных браузеров и вообще кроссплатформенности — так и есть. Я на эту тему доклад делал.

        Статья на тему доклада: https://lvee.org/ru/abstracts/155
        Слайды: https://lvee.org/uploads/image_upload/file/385/Alexei_Khlebnikov.Crossplatform.2015-06-07.pdf

        В этих материалах есть и общая информация об архитектуре (код ядра vs код платформы). Не очень много, всё-таки NDA.

        И, «чтоб 2 раза не вставать», хочу порекомендовать отличную конференцию — LVEE.org, на которой я и делал тот доклад.
        • +1
          Расскажите лучше, за что вы так надругались над OpenSSL? (часть с malloc'aми и прочим я понимаю)
          Обертка над оберткой и оберткой погоняет.
          • 0
            Предполагаю, чтобы иметь возможность собрать с чем-то другим. Но я не работал в Опере, просто догадка.
          • +1
            Потому что надо было собирать для платформ, которые не поддерживают глобальные переменные.
            • +4
              Да и тут вопрос, кто над кем надругался. :) Так-то очень мучительно было эти обёртки делать.
              • +1
                Охотно верю. Попытки прикрутить ECC тоже весьма мучительны (и пока безуспешны)
  • 0
    Может кто-то пожалуйста, порт его ангстрем Linux?
  • +1
    Интересно, под WinRT собрать можно? А то первый сурфейс без нормального браузера прохлаждается.
    • 0

      Под WinRT нужно очень много переделывать, не стоит шкурка выделки.


      P.S. А первому сурфейсу место давно в мусорке, если на ebay не смогли пристроить — наверное, самая "тормознутая" (особенно, после принудительного апдейта на 8.1) из "таблеток", что я когда-либо держал в руках.

      • 0
        Ну насчет мусорки можно поспорить. Вещь очень качественно изготовленная, с шикарным чехлом-клавой, нормальным аккумом. Видео крутит, 13 офис летает. Не хватает только нормального браузера.
        • +1

          Был когда-то (довольно давно) доступен хак, позволяющий запускать "обычные" (в смысле, Win32) приложения, собранные под arm (в текстовом конфигурационном шаблоне проекта делалось одно небольшое изменение), на Windows RT. Посмотрите в одном из подфорумов вот тут.

          • +1
            Спасибо, поковыряю на досуге.
  • +3
    Яваскрипт-движок можно собрать отдельно:
    $ ./jsshell -e 'print("hello")'
    Opera JavaScript shell (, built Пн янв 16 15:23:18 MSK 2017)
    Setting address space limit to 512 MB

    hello
    --------------------------------------------------------------------------------
    Compilation time: 0.073975 ms
    Execution time: 0.047852 ms
    Major collection : 0.4ms (850.5%)
    Tracing : 0.4ms (741.8%)
    Sweeping : 0.1ms (106.6%)
    Number : 1
    Minor collection : 0.0ms (0.0%)
    Tracing : 0.0ms (0.0%)
    Sweeping : 0.0ms (0.0%)
    Number : 0
    Total in collection : 0.4ms (850.5%)
    Total bytes allocated : 87992
    Peak bytes allocated : 133032
    Total external bytes : 0
    Instructions executed : 5
    done!

    • +5

      JSS Hell

    • 0

      Ждём порт nodejs на presto :D

      • 0
        зачем?
        • +2
          Потому что можем ))
      • 0
        Имеете в виду на Carakan?
  • +4
    Если кто захочет поковырять, присоединяйтесь (Tg)
    • +2
      Разработка в Телеграмм?
      Будущее уже тут…
      • 0
        Разработка в i2p. Кибер/шифропанк уже здесь.
  • +4
    Патч на поддержку VP9: https://paste.fedoraproject.org/528850/14846609
    Сперва нужно обновить встроенную libvpx до 1.3.0

    Патч только линуксовый, сорри.
  • +2
    Копирастозащищенная раздача через I2P

    magnet:?xt=urn:btih:664901345132aa13322bf4eb5a03192dc4a16b40&tr=http://5m3pd32zx43xk3uz6hvrdksj6tlg7abnjsc3j5kkd2yzctet4nmq.b32.i2p/announce

    Трекер: ptt.i2p
    • 0
      Четыре пира… Не вижу хваленого Хабраэффекта!
  • +2
    Жалко нет никакого опраса. Интересно сколько ещё людей ей пользуются. У меня коллеги постепенно сдаются, уже всего 2 осталось кроме меня, кто на 12й версии сидит. Да и я уже дома на Я.Браузер перешёл.
  • +5
    Hello Russia! On 4chan we saw this leak too, and it got us very excited :) Thank you very much for it!

    There's already been lots of progress, people have ported it to FreeBSD, Raspberry PI, Visual Studio 2015…

    You can see some of our work here: https://github.com/PrestoXen/openopera-patches

    I wish I spoke Russian because I'm sure you guys are doing great stuff too, I hope we can work together somehow. We have an IRC channel described in that github link, and we usually have threads on 4chan /g/ board, one is up now, feel free to visit! https://boards.4chan.org/g/thread/58544865

    Google translate / Гугл переводчик:
    Привет Россия! На 4chan мы увидели эту утечку слишком, и он получил нас очень возбужденными :) Большое спасибо за это!

    Там уже было много прогресса, люди перенесли его на FreeBSD, Raspberry Pi, Visual Studio 2015…

    Вы можете увидеть некоторые из наших работ здесь: https://github.com/PrestoXen/openopera-patches

    Если бы я говорил по-русски, потому что я уверен, что вы, ребята, делаете большие вещи тоже, я надеюсь, что мы можем работать вместе как-то. У нас есть IRC-канал, описанный в этой ссылке GitHub, и мы, как правило, имеют резьбу на 4chan /g/ плате, один сейчас, не стесняйтесь посетить! https://boards.4chan.org/g/thread/58544865
    • +1
      Sup, Xen.
      A couple of us are actually posting on 4ch too ;)
  • +1
    Поиск в эклипсе показал, что есть какая то поддержка симбиана :-)
    • 0
      А сейчас вообще хоть где-то ещё, кроме утекших исходников Opera, есть хоть какая-то поддержка симбиана?
      • 0
        gcc включая 6.4.0, scummvm
  • +1
    New Thread on 4chan: http://boards.4chan.org/g/thread/58567400

    Btw, I still would like to have it ported to Angstrom Linux so I can run it on my Pandora.
  • 0

    Для всех, кто хочет продолжить обсуждение движка Престо, есть комната в телеграме telegram.me/opera_presto

    • +1
      Не у всех есть телеграм.
      • –1

        Ничто не мешает его завести.

        • 0
          Обязательность мобильника мешает. Особенно для такой не шибко законной темы
          • 0

            Кто сказал, что это не законно — обсуждать движок Престо? Не вижу ничего незаконного в этом. А распространять исходники Престо вас никто не заставляет,


            А насчет номера телефона, проблемы параноиков — это проблемы параноиков. Остальным 98% в телеграмме хорошо, удобно, и ничего не угрожает.

            • +1
              Остальным 98% в телеграмме хорошо, удобно, и ничего не угрожает

              Им и с блокировками в интернете хорошо.
              • +1

                Еще раз повторю, комната в телеге не моя, я просто принес ссылку. Контент там весь сохраняется в истории не хуже чем на Хабре. Если вы по религиозным соображениям не можете использовать Телеграм, я могу высказать только свое сочувствие.

          • 0
            Мобильник только для регистрации же. Можно использовать одноразовую симку, но с другой стороны, никто, кому вы не давали свой номер телефона, из Телеграма его не узнает без вашего разрешения, можно свободно пользоваться только юзернеймом без ограничений.
            • 0
              Какое-нибудь ФСБ или АНБ ни капельки не интересует, давал я разрешение или нет :)
              • 0
                Ну, положим, ФСБ до серверов/владельцев Телеграма вряд ли выйдет добраться. Я дла АНБ вы, скорее, «неуловимый Джо».
        • 0
          У меня есть аккаунт на Хабре, он лучше. Не знаю, как там работают комнаты, но обсуждение тут останется навсегда. Даже если и удалят, есть зеркала и вебархивы. Да и банально копию страницы мне ничто не мешает сделать.
          • 0

            С чем я вас и поздравляю. Не понимаю, почему вы взялись сравнивать Хабр и Телеграм. Я просто принес ссылку на тематическую комнату, где идет дальнейшая дискуссия. Мопед не мой.

  • +1
    Can someone please make a version of http://boards.4chan.org/g/thread/58567400#p58568131 that has debug symbols included?

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