Comments 239
Слабо верится, что это кто-то из бывших разработчиков взял и решил выложить.
А почему, соббсно, нет? Тем более написано, что «Аккаунт пользователя prestocore, выложившего файлы, анонимен и не содержит идентифицирующей информации». То есть понятно, что кому-то зачем-то пришлось шифроваться к тому-же.
Не всегда, к сожалению.
Я _очень_ хочу найти один проект, выложенный в Сеть автором в 1999 году и удалённый по каким-то причинам отовсюду (включая зеркала на archive.org).
Сам файлик, если я правильно понял, имеет размер в 56 килобайт или около того, исходников вроде не было в комплекте. Я нашёл чей-то архив программ для него на Archive, но ссылка на сам файл bas9k.zip была потёрта.
Вот прям про вашу ситуацию. Есть подозрение, что у этого человека (в смысле у немца) и необходимый вам файлик есть.
Надеюсь, что под гнетом утечки компания примет решение открыть исходники по-настоящему.
https://www.change.org/p/opera-software-open-sources-of-presto-engine
Открываем решение
\platforms\windows\OperaProjectFile.vcxproj
Ругается что не хватает кучи проектов:
![](https://habrastorage.org/files/833/20d/0ea/83320d0ea37c4f6a96f6098afa887f9c.png)
А с темплейтами, похоже, может работать ещё и скрипт git_checkout_hook.sh.
P.S. Кстати, он же и запускает vcxproj_update.py.
Необходимо:
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-версия работает абсолютно нормально.
Таким образом, исходники старой Оперы теперь доступны. Но что с ними делать дальше — вот в чём вопрос…
(Здесь нужен
У нас никто не поглядывает.
В нашем случае это непозволительная роскошь, череватая большой бедой. Мы тщательно избегаем нарушения авторских прав Майкрософт. Мы стараемся не оставить ни малейшей лазейки для возможности для успешного преследования нас в суде.
Мы запрещаем разработчикам даже подглядывать в утекшие коды. Если достоверно известно, что разработчик смотрел в исходники, опубликованные нелегально, такой разработчик никогда не получит права коммитить код в транк проекта, а его патчи в саму ОС вряд ли будут приняты (но он все еще сможет написать наборы тестов).
Все очень просто, разработчик должен уметь объяснить происхождение каждого фрагмента своего кода, почему он написал так, а не иначе.
Кроме того, разработчики проходят у нас проверку не менее года, прежде чем получить значительную степень доверия.
И третье, любой код проходит ревью, во время которого так или иначе претерпевает изменения, так как у нас свои Бест Практикс, которые точно различаются с принятым в майкрософт.
Это ничего не подтверждает. Все попытки использовать утекшие коды у нас тщательно пресекаются. Мы с огнем не играем.
Третий пункт нужен для того, чтобы избежать случайного сходства с проприетарными исходниками. Бывают изредка в программировании подобные парадоксальные ситуации.
Буду рад, если это настоящие исходники и думаю пока не слишком поздно сделать из них что-то интересное.
Да и вещи типа https://github.com/prestocore/browser/blob/master/data/translations/ru/search_eng.ini похожи на правду
имитация коммита от 95 года немного настораживаетДумаю, это просто один из шагов по заметанию следов.
История вообще могла пройти несколько этапов, например, CVS -> Subversion -> Mercurial -> Git.
Если я правильно понял причину недоумения.
Программа: WinRAR archiver;
Файл: D:\browser-master\modules\minpng\tests\x_too-large.png;
Время: 01/13/2017 15:41:35;
Название объекта: Exploit.Win32.CVE-2013-2977.a
в исходниках, встречаются копирайты и 2003 и 2011 года, с именами разработчиков.
Вопрос к знатокам: если это все же оригинальные исходники, то сможет ли Opera в суд на опенсорс проект основанный на этом двиге? Я просто туп в таких вопросах…
Если действительно Presto, то это очень здорово. Может кто то сделает новый годный браузер)
Конечно, сможет.
Я кстати давно жду такого явления как «темный open-source», которое объединяло бы открытую разработку и полное презрение к любому копирайту… А может такое уже где нибудь есть?
Оно, как и прочие темные интернеты, не слишком живое. Но вполне рабочее.
Ещё на просторах интернета встречается упоминание gitweb2zl5eh7tp3.onion, но он тоже лежит.
ehww2ercchnq7633.onion? Лежит.
А есть ещё варианты? Разумеется, из чисто академического интереса спрашиваю.
Потому, по возможности, рекомендуется ходить изнутри I2P, особенно на ресурсы с большим трафиком то git.
Работает, даже видео на ютубе играет.
Если выложено всё полностью, то это очень хорошо, для изучения в академических целях, конечно.
PS. Привет! :)
Все это дело жутко модульное. Каждый диалог, каждая фича — модулем.
В целом от исходников довольно приятные впечатления и собирается все минут за 5 не выжирая оперативку, в отличии от другого известного движка.
http://paste.fedoraproject.org/526781/32598714/ — патч на return'ы и на системный tinyxml
./flower -v --without-kde4
(у меня пятые кеды и оно в итоге собирается наполовину с пятыми, наполовину с 4ми и падает)
У меня на 64 битах не собирается автоматом 32битный плагин-враппер, потому что инклюдит 64-битный gdk. Приходилось брать команду из выхлопа, заменять путь к инклюдам и собирать вручную. Там три файла, для которых так надо сделать.
flover можно запускать с -j 1 дабы было виднее, на чем он падает.
У меня кстати собралось с системной so-шкой tinyxml без всякиз патчей. А инклюды gtk получаются через pkg-config, который и отдаёт lib64 вместо lib32, оно в platforms/quix/module.build/plugins.conf.py.
Ну и там по мелочам в некоторых perl-скриптах старый формат регекспов и переменных, но на сборку это не влияет.
Микропатчик, фиксит похожую на FALSE->NULL проблему во встроенном hunspell — http://pastebin.com/2EUFEBYp
Фиксит релизную (--release) сборку на линуксе. Современные (gcc5+) компилеры выдают кривой код после оптимизации, что приводит к крашам на очень многих страницах с JS.
Что опять же наводит на мысли о оптимизаторе. Поэтому и добавлен флаг, чтобы он ещё где подобного не учудил.
Собственно, была аналогичная проблема в gcc6 и хроме, он там тоже в -O3 собирается, и без этого же самого флага были очень похожие краши на некоторых JS.
Распространять код я не собираюсь, его и так уже все, кому не лень отзеркалили.
Как я понимаю, речь идёт не о том, чтобы распространять утекший код, а о том, чтобы коллективно создавать и распространять его улучшения. Вот интересно, кстати, насколько легален подобный процесс?
Процесс нелегален, поскольку патчи содержат куски исходного кода.
Если в виде диффов/патчей, то могут придраться к тому, что в них фигурирует код оригинала.
Если в виде «в файл такой-то после строки номер X нужно добавить вот этот написанный мной с нуля код» — то придраться практически невозможно.
Просто мечтаю чтобы кто нибудь собрал легаси оперу для маленьких АРМ девайсов на линуксе!
Мой вердикт — пиар акция, да и только.
Теперь ждем на торентах
https://mega.nz/#!Lo0l1aZA!hFtA8QDtkgwYFm15slZbZWkGprhwI6R8xkl3G9ulzDI
Вариант без папки .git (на 100 МБ меньше):
https://mega.nz/#!GhVTVaRC!fhaeAwWmOfpMbMznjziDmAouuQnPFdifK_xEllImBKk
Камрад на реддите выложил архив ;)
ссылки в этом треде
Вот тут ещё зеркало репозитория.
При попытке склонировать — выдает 504. При попытке скачать zip — 500.
Repository unavailable due to DMCA takedown.
Если верить Statcounter, Opera — самый популярный брузер в России (и некоторых странах бывшего СССР) в 2009 году. Так что доминировал, и вполне себе не мало.
Зависимости: 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
Малоизвестная, кстати (видимо потому, что закрытая) фича оперы: яваскриптовый движок можно расширять бинарными плагинами. Например дергать gpio из js.
Выше уже опубликована достаточно подробная инструкция по сборке под Windows.
зато я понял, наконец, что за «непреодолимое препятствие» было у presto, почему он «устарел» и всё такое. про то, что «с кодовой базой presto сложно поддерживать новые стандарты» — это полная чушь, само собой. а вот то, что престо принципиально сдизайнен как однопоточный двигатель — это факт, который неоднократно упоминается в разной документации. редизайн на много потоков/процессов невозможен, только перепись.
UPD:
Или давайте распространять апдейты патчами, ночью, в поле
Она позволяла зарабатывать делая кастомные браузеры для телевизоров и автомагнитол (эти браузеры часто даже не содержали слово «opera», можно было догадаться только по «presto» в User-Agent).
На таких железках не всегда доступны треды и другие модные штучки, вроде gcc новее 3-й версии.
Насчёт кастомных браузеров и вообще кроссплатформенности — так и есть. Я на эту тему доклад делал.
Статья на тему доклада: 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, на которой я и делал тот доклад.
Обертка над оберткой и оберткой погоняет.
Под WinRT нужно очень много переделывать, не стоит шкурка выделки.
P.S. А первому сурфейсу место давно в мусорке, если на ebay не смогли пристроить — наверное, самая "тормознутая" (особенно, после принудительного апдейта на 8.1) из "таблеток", что я когда-либо держал в руках.
Был когда-то (довольно давно) доступен хак, позволяющий запускать "обычные" (в смысле, Win32) приложения, собранные под arm (в текстовом конфигурационном шаблоне проекта делалось одно небольшое изменение), на Windows RT. Посмотрите в одном из подфорумов вот тут.
$ ./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!
Сперва нужно обновить встроенную libvpx до 1.3.0
Патч только линуксовый, сорри.
magnet:?xt=urn:btih:664901345132aa13322bf4eb5a03192dc4a16b40&tr=http://5m3pd32zx43xk3uz6hvrdksj6tlg7abnjsc3j5kkd2yzctet4nmq.b32.i2p/announce
Трекер: ptt.i2p
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
Btw, I still would like to have it ported to Angstrom Linux so I can run it on my Pandora.
Для всех, кто хочет продолжить обсуждение движка Престо, есть комната в телеграме telegram.me/opera_presto
Ничто не мешает его завести.
Кто сказал, что это не законно — обсуждать движок Престо? Не вижу ничего незаконного в этом. А распространять исходники Престо вас никто не заставляет,
А насчет номера телефона, проблемы параноиков — это проблемы параноиков. Остальным 98% в телеграмме хорошо, удобно, и ничего не угрожает.
На GitHub появился странный репозиторий, похожий на исходники движка Opera Presto [закрыто правообладателями]