LINUX.ORG.RU
ФорумTalks

Пятиминутка юмора

 


1

3

Самое комичное, что может случиться с опенсорсом, это когда старые пердуны начинают делиться с окружающими своим видением мира.

Робин Роу, который любит изображать из себя голливудского спеца по CG в стане опенсорса, на той неделе отжёг про CMake:

«Autotools and CMake are just too exotic to expect anyone but an expert to support, a barrier to new programmers joining CinePaint.»

А в реальности прямо не выходя из ниши CG:

Alembic: http://code.google.com/p/alembic/source/browse/
Open Shading Language: https://github.com/imageworks/OpenShadingLanguage
OpenColorIO: https://github.com/imageworks/OpenColorIO
OpenSubdiv: https://github.com/PixarAnimationStudios/OpenSubdiv
Ptex: https://github.com/wdas/ptex/tree/master/src

Какая беда, что Sony, Pixar и студия Диснея не посоветовались с нашим экспертом и таки стабильно получают патчи от сообщества несмотря на пугающий до дрожи в коленках CMake.

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

Тут можно только посоветовать вон из профессии.

★★★★★

Последнее исправление: AP (всего исправлений: 2)
Ответ на: комментарий от bhfq

Починил.

Computer Graphics. Распространённое обозначение всего, что так или иначе связано со спецэффектами, 3D, фотошопом и проч.

AP ★★★★★
() автор топика

это когда старые пердуны начинают делиться с окружающими своим видением мира

В один прекрасный момент из десятки autotools рукописные файлы стали не нужны. CMake это как гитхаб, а не не добитый sourceforge...

Сейчас сюда понабегут любители configure.

bhfq ★★★★★
()

Ну всё правильно сказал. Все эти автобилды монструозны. Приходится фактически помимо языка, на котором пишешь программу ещё изучать недоязычки этих автотулзов и все особенности и нюансы этих автосборных систем.
Фу, блин.

Bad_ptr ★★★★★
()

С коллегами часто нарезаю картинки из PSD. Когда-то задолбал неудобный Save for Web фотошопчика и ещё более неудобный аналогичный плагин гимпа (из фич в нём есть заморозка UI до пересчёта картинки при изменении любого параметра, сброс всех настроек при каждом открытии диалога - т.е. плюс 3 заморозки UI, разрешение меняется не в процентах). Ну и фотошопчик-то далеко не на всех машинах.

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

Что дальше? А ничего, так и бросил. Документация интерфейса плагинов скудная (в QtCreator вполне получается сами сорцы изучать, там всё ООПшно, Qtшно и модульно). Редактировал код в Gedit, а я не особо умею работать с незнакомым кодом без навигации и с ошибками компиляции в виде сплошного консольного лога. В QtCreator, опять же, код среды хорошо изучается и правится из самой среды.

Он может и не так сформулировал, как кому-то хотелось бы, но в целом прав - инструменты разработки в опенсорсе подбирают для себя лично, универсализацией и толковой поддержкой CMake в средах (так, чтобы пользователь даже слова Cmake без нужды не увидел) и не пахнет.

Если кто-то подскажет, как создать нужные удобства - работу над плагином продолжу и нужные патчи в SafeForWeb для гимпа полетят. Я не сишный программист, с gtk не работал и не чувствую в себе сил с gedit в руках лазать по сорцам гимпа, восполняя недостаток документации интерфейса плагинов.

quiet_readonly ★★★★
()
Ответ на: комментарий от bender

зачем нужны autotools, если есть cmake?

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от AP

Computer Graphics

Ну так исправь текст темы, чтобы понятно было!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от quiet_readonly

Ничто не мешает тебе сделать pull request и выдать что есть. Ауримас — вполне внятный чел, помог бы разобраться.

AP ★★★★★
() автор топика

«Autotools and CMake are just too exotic to expect anyone but an expert to support

ы-ы, я эксперт значит, как круто

Harald ★★★★★
()

anyone but an expert to support

Очень много ошибок в слове pervert. Дядьке 2 по орфографии.

GateKeeper ★★
()
Ответ на: комментарий от bender

кстати, зачем нужны autotools, если есть cmake?

Я вот ниасилил, как в ём фичи включать-выключать. Через какие-то дефайны надо пробираться, где их там смотреть. Я о CMakeLists.txt глаза все поломал.

То ли дело autoconf: переменные окружения, ключи командной строки, причем по --help описаны все.

shimon ★★★★★
()
Ответ на: комментарий от shimon

где их там смотреть.

В readme.txt, поставляемым с проектом. А так да, cmake сделан для разработчика в первую очередь, а не для пользователя.

Reset ★★★★★
()
Ответ на: комментарий от shimon

Я вот ниасилил, как в ём фичи включать-выключать

$ cmake-gui

и тыцкай себе галочки.

AP ★★★★★
() автор топика
Ответ на: комментарий от Eddy_Em

В большинстве случаев хватает обычных мейкфайлов. А проекты, в которых автоматически генерируются команды по длине превышающие возможности шелла (hey, Apple!) — не нужны :)

buddhist ★★★★★
()
Ответ на: комментарий от buddhist

В большинстве случаев хватает обычных мейкфайлов

Это если ты для себя делаешь и тебе не лень каждый раз полные пути расписывать или копипастить тысячу строчек...

Eddy_Em ☆☆☆☆☆
()

я согласен с высоким порогом вхождения в cmake. так же как и в make, в autotools (чёрт, до сих пор страшно когда вспоминаю это все макросы-хуякросы с которыми мне довелось столкнуться когда пришлось писать не слишком большую программу) и прочую гнутую муть. я не знаю оправдано ли это высокий уровень вхождения или нет (т.е. можно ли сделать это проще, причём гораздо или нет. полагаю, правда, что можно), но то что он высок - это, пожалуй, факт.

что конечно не отменяет того факта что остальные проекты с cmake как то пишутся и у них есть таки контрибьюторы.

думаю, что упрощение сборки позволило бы привести дополнительных контрибьюторов не только в cpaint.

AndreyKl ★★★★★
()
Ответ на: комментарий от Bad_ptr

Ну всё правильно сказал. Все эти автобилды монструозны. Приходится фактически помимо языка, на котором пишешь программу ещё изучать недоязычки этих автотулзов и все особенности и нюансы этих автосборных систем.
Фу, блин.

согласен абсолютно. но если не они, то всё равно приходится изучать ant, maven, sbt...

AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

думаю, что упрощение сборки позволило бы привести дополнительных контрибьюторов не только в cpaint.

В настоящее время в этом проекте кроме так называемого руководителя ноль целых хрен десятых участников. Каких _дополнительных_ участников туда можно привести? :) Какое к этому отношение имеет CMake?

AP ★★★★★
() автор топика
Ответ на: комментарий от shimon

Я о CMakeLists.txt глаза все поломал. ... То ли дело autoconf: переменные окружения, ключи командной строки, причем по --help описаны все.

оба копец просто, на сколько я помню.

AndreyKl ★★★★★
()
Ответ на: комментарий от AP

Каких _дополнительных_ участников туда можно привести? :)

дядька жалуется на cmake. у меня наболело, я поддерживаю :) что симейк что уатотулз - копец полный.

AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

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

AP ★★★★★
() автор топика
Ответ на: комментарий от AP

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

shimon ★★★★★
()

FLTK. That CinePaint uses GTK has always been a source of bugs. This C API isn’t very forgiving and is very hard to trace in the debugger. Safer C++ APIs such as Qt and FLTK are the most portable alternatives. I like FLTK because it’s much smaller.

Бггг.

Alsvartr ★★★★★
()
Ответ на: комментарий от shimon

Ну, я лично все «свои» проекты, где юзается CMake, стараюсь документировать на предмет ключей сборки. Согласен, что автотулзы в этом плане несколько удобнее. Но криворуким программистам ничто не мешает сделать так, что половина нужных ключей не будет выводиться по --help. Плавали — знаем.

AP ★★★★★
() автор топика
Последнее исправление: AP (всего исправлений: 1)
Ответ на: комментарий от Alsvartr

Это не смешно, это грустно. Я не видел ещё ни одного аккуратного приложения на «лёгком, невесомом» FLTK. А уже если вспоминать порт Cinepaint на FLTK (Glasgow), так это был вообще феерический трындец. Там у виджетов такой паддинг, что дефолтная тема GTK+2 как дура стоит с отвисшей челюстью.

AP ★★★★★
() автор топика
Ответ на: комментарий от AP

Ага. И типа cmake создаст барьер для вхождения новых разработчиков, а переписывание с убогонького GTK+ на божественный FLTK - нет.

Alsvartr ★★★★★
()
Ответ на: комментарий от Eddy_Em

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

o_o, какой разницы во времени выполнения?

vertexua ★★★★★
()
Ответ на: комментарий от tailgunner

Язык CMake эталонно уродлив.

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

Любопытно, что популярность набрал именно CMake, а не какой-нибудь там SCons (или любая другая система сборки, afaik зрелых систем не меньше полудюжины имеется).

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)

форкнуть под управление адекватного менеджера кто запрещает? опенсорс же

marvin_yorke ★★★
()
Ответ на: комментарий от Manhunt

Ну, в звуковом софте для музыкантов сейчас рулит waf, например.

AP ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Ты видел http://gittup.org/tup/ и https://github.com/apenwarr/redo ?

И что из них умеет генерировать нативные файлы проектов для IDE?
Можно будет проект со сборкой на этих системах открыть в MSVC/Xcode/Eclipse и поиметь все фичи от IDE (только участвующие в сборке исходники, корректные includes/defines для парсеров кода и работу в отладчике)?

kamre ★★★
()
Ответ на: комментарий от kamre

И что из них умеет генерировать нативные файлы проектов для IDE?

Это риторический вопрос, да?

Можно будет проект со сборкой на этих системах открыть в MSVC/Xcode/Eclipse и поиметь все фичи от IDE (только участвующие в сборке исходники, корректные includes/defines для парсеров кода и работу в отладчике)?

Искаропки - вряд ли, а вообще всё, что умеет работать с make, несложно научить работать и с этими системами.

tailgunner ★★★★★
()
Ответ на: комментарий от shimon

Саша, оно классно, только когда ты по ссх присосался к сборочному хосту, это не смешно.

Для тех, кто присосался по SSH без иксов вместо cmake-gui есть ccmake, тот же GUI, но на ncurses. Благо, это всего лишь фронтенд к CMakeCache.txt.

Dendy ★★★★★
()
Ответ на: комментарий от tailgunner

Язык CMake эталонно уродлив.

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

Свою популярность CMake приобрёл отнюдь не благодаря синтаксису, скорее вопреки. Главное его преимущество — правильная архитектура для системы сборки:
- универсальность для любого типа проекта;
- независимость директории сборки от директории исходников, позволяющая иметь произвольное количество сборок с разными конфигами;
- наличие кеша с опциями;
- поддержка истории команд в CMakeRuleHashes.txt, с которыми были собраны цели (больное место у чистых Makefile — если он изменился, то при следующей сборке неизвестно что именно было изменено, как следствие часть целей могут не пересбораться или пересобраться ошибочно, ставя крест на инкрементальности);
- кросскомпиляция;
- лёгкость расширения сторонними модулями.

Сейчас в зародыше находится QBS, судя по заявленным возможностям это прямой конкурент CMake. Нужно пощупать как выйдет хоть что-то стабильное.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

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

Это как?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Их язык суперпрост для интерпретатора. Отсутствуют даже элементарные конструкции для циклов, математических операций. Все переменные — строки. Стандартная библиотека — простой проброс foo(a b c) в C++. Думаю, придумать транслятор foo.cmake -> foo.py довольно несложно, если определиться с новым синтаксисом.

Другое дело, что очевидно развитие CMake застопорилось, проект стагнирует и у разработчиков есть свои проблемы, помимо гениальных идей улучшения синтаксиса. Всё их развитие за последние пару лет — сплошные исправления ошибок и мелкие допилы.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

Для тех, кто присосался по SSH без иксов вместо cmake-gui есть ccmake, тот же GUI, но на ncurses. Благо, это всего лишь фронтенд к CMakeCache.txt.

Но вот етить, зачем было не сделать --enable-XXX, --disable-YYY, --with-ЙЙЙ? Оно им жить мешало?

shimon ★★★★★
()
Ответ на: комментарий от shimon

Но вот етить, зачем было не сделать --enable-XXX, --disable-YYY, --with-ЙЙЙ? Оно им жить мешало?

cmake-gui, как правило, ставится отдельным пакетом из-за зависимостей от Qt. ccmake — отдельным пакетом из-за зависимости от ncurses.

Вообще, углубляться в такие мелочи именования в случае CMake глупо. Там вообще посмотреть трезвым взглядом куча нелогичностей, пришедших к нам из прошлого. Чего стоит одно название файла проекта — CMakeLists.txt. Lists чего? И причём тут txt? Почему нельзя альтернативно выбрать название файла, как у make -f? Почему я для подпроектов должен создавать новые директории, только потому, что имя файла прибито гвоздями? Почему нет префикса у функций стандартной библиотеки, а всё в одной куче?

Dendy ★★★★★
()
Ответ на: комментарий от kamre

И что из них умеет генерировать нативные файлы проектов для IDE?

Cmake умеет, но для меня это абсолютно не нужная фича, vim рулит.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Что вы можете сказать об этих системах?

Уг уныло :) Для сложного проекта использовать вот это можно только если уж совсем упороться. Кроссплатформеность только на уровне «бинарник запускается» для каждой платформы под разные компиляторы все заново.

Уж лучше scons честное слово.

bhfq ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.