Вторая часть марлезонского балета!
#abi
Потому что однажды создатели С++ добавили в него https://en.wikipedia.org/wiki/Turing_tarpit под названием "шаблоны".
С одной стороны, это было хорошо, потому что позволяло писать более typesafe код, с другой, это привело С++ к его текущему положению:
* Программист на С++ изучает шаблоны.
* Сначала он не может в них.
* Потом он с их помощью начинает мета-программировать.
* Потом он понимает, что на этих костылях и подпорках, которые изначально не создавались для этого, он может решить много интересных проблем.
* Потом он попадает в комитет по стандартизации
И в этот момент ловушка для языка захлопнулась!
Потому что если комитет по стандартизации С++ добавит в язык нормальное (*) метапрограммирование, то все время, инвестированное в это говно под названием "шаблоны", разом обесценится у очень большого числа людей. А оно кому-то надо? А что после этого будут делать уважаемые люди из комитета С++?
(пишу я это вполне осознано, как человек, когда-то спавший со стандартом под подушкой, и думавший, что он щас все сделает на этом сраном pattern matching под названием "частичная специализация")
Замкнутый круг.
Я вообще никому и никогда не советую начинать новые проекты на С++.
Лично я начинаю с Python, если неважен perf. В последнее время чаще смотрю на Go, и, думаю, однажды Go мне полностью Python заменит. Что бы я взял, если бы нужно было запилить что-то perf critical, в новой кодовой базе? Мне не нравится Rust, но, скорее всего, это был бы он.
(*) Что такое нормальное метапрограммирование? Это, по сути, доступ к AST (или, хотя бы, к потоку токенов) средствами самого языка, либо внешним кодогенератором:
* https://terralang.org/
* https://github.com/python/cpython/blob/main/Lib/collections/__init__.py#L439 - ядро изготовления namedtuple в python (да, кодогенерация + eval)
* lisp/scheme/etc
* в Rust норм
#abi
Потому что однажды создатели С++ добавили в него https://en.wikipedia.org/wiki/Turing_tarpit под названием "шаблоны".
С одной стороны, это было хорошо, потому что позволяло писать более typesafe код, с другой, это привело С++ к его текущему положению:
* Программист на С++ изучает шаблоны.
* Сначала он не может в них.
* Потом он с их помощью начинает мета-программировать.
* Потом он понимает, что на этих костылях и подпорках, которые изначально не создавались для этого, он может решить много интересных проблем.
* Потом он попадает в комитет по стандартизации
И в этот момент ловушка для языка захлопнулась!
Потому что если комитет по стандартизации С++ добавит в язык нормальное (*) метапрограммирование, то все время, инвестированное в это говно под названием "шаблоны", разом обесценится у очень большого числа людей. А оно кому-то надо? А что после этого будут делать уважаемые люди из комитета С++?
(пишу я это вполне осознано, как человек, когда-то спавший со стандартом под подушкой, и думавший, что он щас все сделает на этом сраном pattern matching под названием "частичная специализация")
Замкнутый круг.
Я вообще никому и никогда не советую начинать новые проекты на С++.
Лично я начинаю с Python, если неважен perf. В последнее время чаще смотрю на Go, и, думаю, однажды Go мне полностью Python заменит. Что бы я взял, если бы нужно было запилить что-то perf critical, в новой кодовой базе? Мне не нравится Rust, но, скорее всего, это был бы он.
(*) Что такое нормальное метапрограммирование? Это, по сути, доступ к AST (или, хотя бы, к потоку токенов) средствами самого языка, либо внешним кодогенератором:
* https://terralang.org/
* https://github.com/python/cpython/blob/main/Lib/collections/__init__.py#L439 - ядро изготовления namedtuple в python (да, кодогенерация + eval)
* lisp/scheme/etc
* в Rust норм
Wikipedia
Turing tarpit
programming language or computer interface that allows for flexibility in function but is difficult to learn and use because it offers little or no support for common tasks
🔥40❤4😁2👍1👎1
#gold #blob #supply
https://github.com/serde-rs/serde/issues/2538 этот тред, конечно, пополнит мою золотую коллекцию.
Разработчики serde (насколько я знаю, самая популярная библиотека сериализации для Rust), решили, что им "очень нада" ускорить сборку своего поделия, и положили предсобранную либу в свой репозиторий.
При этом, насколько я понял из объяснений в этом топике, библиотека не может быть собрана обычным образом из исходников (ну вот нельзя там где-то в Cargo.toml написать if). А заниматься патчингом уважающие себя дистрибутивы не хотят.
В тред набижали старшие и более опытные товарищи, инапихали хуев этим малолетним долбоебам объяснили, что так делать "не нада".
https://github.com/serde-rs/serde/issues/2538#issuecomment-1676139711
https://github.com/serde-rs/serde/issues/2538#issuecomment-1676355050
Вот, наверное, наиболее корректные сообщения с объяснением возникающих проблем при попытке воспроизвести сборку.
(От Jakub Jirutka, наверное, можно особо не объяснять, кто это?)
UPD: там, конечно, ЖЫР:
* Набижали SJW со своими "community deserves more" (я, как последовательный правый, считаю, что сообщество заслуживает только того, что написано в лицензии) https://github.com/serde-rs/serde/issues/2538#issuecomment-1684526456
* Или вот автор форка этой либы, который пишет, что сам не хочет его поддерживать, и есть ли на это волонтеры. https://github.com/serde-rs/serde/issues/2538#issuecomment-1684531496
* А кто-то предлагает скинуться по 10 баксов автору либы, чтобы он сделал эту фичу opt-out - https://github.com/serde-rs/serde/issues/2538#issuecomment-1684607407
https://github.com/serde-rs/serde/issues/2538 этот тред, конечно, пополнит мою золотую коллекцию.
Разработчики serde (насколько я знаю, самая популярная библиотека сериализации для Rust), решили, что им "очень нада" ускорить сборку своего поделия, и положили предсобранную либу в свой репозиторий.
При этом, насколько я понял из объяснений в этом топике, библиотека не может быть собрана обычным образом из исходников (ну вот нельзя там где-то в Cargo.toml написать if). А заниматься патчингом уважающие себя дистрибутивы не хотят.
В тред набижали старшие и более опытные товарищи, и
https://github.com/serde-rs/serde/issues/2538#issuecomment-1676139711
https://github.com/serde-rs/serde/issues/2538#issuecomment-1676355050
Вот, наверное, наиболее корректные сообщения с объяснением возникающих проблем при попытке воспроизвести сборку.
(От Jakub Jirutka, наверное, можно особо не объяснять, кто это?)
UPD: там, конечно, ЖЫР:
* Набижали SJW со своими "community deserves more" (я, как последовательный правый, считаю, что сообщество заслуживает только того, что написано в лицензии) https://github.com/serde-rs/serde/issues/2538#issuecomment-1684526456
* Или вот автор форка этой либы, который пишет, что сам не хочет его поддерживать, и есть ли на это волонтеры. https://github.com/serde-rs/serde/issues/2538#issuecomment-1684531496
* А кто-то предлагает скинуться по 10 баксов автору либы, чтобы он сделал эту фичу opt-out - https://github.com/serde-rs/serde/issues/2538#issuecomment-1684607407
GitHub
using serde_derive without precompiled binary · Issue #2538 · serde-rs/serde
I'm working on packaging serde for Fedora Linux, and I noticed that recent versions of serde_derive ship a precompiled binary now. This is problematic for us, since we cannot, under no circumst...
🤡14🐳6🔥4❤3👍3😱1
Будни #bootstrap
Я, как вы уже заметили, люблю собирать запчасти для #stal/ix с разными там выподвыпердами.
Например, базовые программы у меня собраны со стандартным аллокатором из musl (потому что там важнее размер бинаря, а не скорость аллокации), и с netbsd curses вместо ncurses. Тоже из-за экономии размера, ну и потому, что там terminfo database вкомпилена в либу, а не валяется в виде 100500 файлов на диске, как у ncurses. Так же из них выпилены gnu gettext, потому что нефиг.
Выглядит это так - https://github.com/pg83/ix/blob/main/pkgs/set/system/0/ix.sh#L4 Фактически, собираю поддерево проектов с особым набором флагов, которые переключают те или иные умолчания.
Вот, нашел на просторах интернета hardened malloc - https://github.com/GrapheneOS/hardened_malloc, и решил, что мне обязательно нужно собрать с ним единственную программу, которая у меня в системе занимается privilege escalation - sshd (https://xn--r1a.website/itpgchannel/291).
Не то чтобы я очень боялся, что ее взломают, но зумеры и хипстеры же падки на такие заявления - "security enhanced base system, with hardened malloc" etc etc и прочий bullshit.
https://github.com/pg83/ix/blob/main/pkgs/bin/sud/ix.sh#L7 - вот, буквально одна строчка изменений, помимо того, чтобы положить саму либу в репозитоий.
Fun fact:
В процессе линковки "усиленного" dropbear выяснилось, что кто-то у кого-то потырил исходники:
Я, как вы уже заметили, люблю собирать запчасти для #stal/ix с разными там выподвыпердами.
Например, базовые программы у меня собраны со стандартным аллокатором из musl (потому что там важнее размер бинаря, а не скорость аллокации), и с netbsd curses вместо ncurses. Тоже из-за экономии размера, ну и потому, что там terminfo database вкомпилена в либу, а не валяется в виде 100500 файлов на диске, как у ncurses. Так же из них выпилены gnu gettext, потому что нефиг.
Выглядит это так - https://github.com/pg83/ix/blob/main/pkgs/set/system/0/ix.sh#L4 Фактически, собираю поддерево проектов с особым набором флагов, которые переключают те или иные умолчания.
Вот, нашел на просторах интернета hardened malloc - https://github.com/GrapheneOS/hardened_malloc, и решил, что мне обязательно нужно собрать с ним единственную программу, которая у меня в системе занимается privilege escalation - sshd (https://xn--r1a.website/itpgchannel/291).
Не то чтобы я очень боялся, что ее взломают, но зумеры и хипстеры же падки на такие заявления - "security enhanced base system, with hardened malloc" etc etc и прочий bullshit.
https://github.com/pg83/ix/blob/main/pkgs/bin/sud/ix.sh#L7 - вот, буквально одна строчка изменений, помимо того, чтобы положить саму либу в репозитоий.
Fun fact:
В процессе линковки "усиленного" dropbear выяснилось, что кто-то у кого-то потырил исходники:
ld.lld: error: duplicate symbol: chacha_keysetupОбычно такое скрывают с помощью всякого рода hidden символов, но это не работает в случае статической линковки.
>>> defined in ./libssh.a(chacha.o)
>>> defined in .../libhardened_malloc.a(chacha.o)
ld.lld: error: duplicate symbol: chacha_ivsetup
>>> defined in ./libssh.a(chacha.o)
>>> defined in .../libhardened_malloc.a(chacha.o)
ld.lld: error: duplicate symbol: chacha_keysetup
>>> defined in ./libssh.a(chacha.o)
>>> defined in .../libhardened_malloc.a(chacha.o)
ld.lld: error: duplicate symbol: chacha_ivsetup
>>> defined in ./libssh.a(chacha.o)
>>> defined in .../libhardened_malloc.a(chacha.o)
ld.lld: error: duplicate symbol: chacha_keysetup
>>> defined in ./libssh.a(chacha.o)
>>> defined in .../libhardened_malloc.a(chacha.o)
👍13🔥5😁3🤯1🗿1
И к важным новостям: https://www.phoronix.com/news/KDE-Plasma-6-Double-Click
"KDE Plasma 6 Default Behavior Is Now Double-Click For Opening Files/Folders"
"KDE Plasma 6 Default Behavior Is Now Double-Click For Opening Files/Folders"
Phoronix
KDE Plasma 6 Default Behavior Is Now Double-Click For Opening Files/Folders
Nate Graham is out with his weekly KDE development summary to highlight all of the interesting changes to this open-source desktop environment with Plasma 6 development continuing at full-speed ahead.
😁23👍6🤯5❤3😱2🤡2
Forwarded from Мост на Жепи (Валерия Бр.)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁47🔥5❤2
У телеги brain split на несколько независимых сегментов, интересно, к чему это?
🤔6
В этой новости прекрасно все, поэтому я просто оставлю ее тут:
https://www.opennet.ru/opennews/art.shtml?num=59641
На самом деле (tm), особо ничего неожиданного в этом нет, потому что Python сначала победил в качестве языка для анализа всяческих данных, потом победил Jupyter Notebook, а потом Екселю не осталось ничего, как признать поражение, и сделать вот ровно то же самое.
https://www.opennet.ru/opennews/art.shtml?num=59641
На самом деле (tm), особо ничего неожиданного в этом нет, потому что Python сначала победил в качестве языка для анализа всяческих данных, потом победил Jupyter Notebook, а потом Екселю не осталось ничего, как признать поражение, и сделать вот ровно то же самое.
www.opennet.ru
В Microsoft Excel встроена поддержка языка программирования Python
Компания Microsoft, в которой с 2020 года работает Гвидо ван Россум, создатель языка программирования Python, объявила об интеграции Python в табличный процессор Excel. Python можно использовать в Excel для написания формул, работы с данными, анализа информации…
🔥15👍6🤔1
commit -m "better"
Знаменитый блоггер #maskray продолжает радовать нас зануднейшими текстами про устройство линкера. КМК, читать такое можно только либо за зарплату, ну или если вы - фанат. https://maskray.me/blog/2023-05-14-relocation-overflow-and-code-models Основной текст…
#maskray #rant
https://maskray.me/blog/2021-11-07-init-ctors-init-array
А вот еще один классный текст от знаменитого блоггера MaskRay!
Он про устройство секций, в которых лежат указатели на функции, которые нужно вызвать до main. Так что, если вам казалось, что там есть какая-то магия, то почитайте, ничего магического там нет.
Наткнулся я на этот текст по рабочей необходимости.
Старая версия CUDA (<= 10), которую все еще иногда приходится использовать, содержит в себе секции .ctors, но не содержит .init_array. А используемый нами линкер пару лет назад перестал поддерживать секцию .ctors. Ну и нам приходилось поддерживать патчи на линкер, чтобы он умел в .ctors, а не только в .init_array.
При переходе на новую версию линкера мне надоело накладывать эти патчи, и я, пользуясь этой заметкой, бинарно переделал библиотеки от nvidia, переместив конструкторы из .ctors в .init_array.
Примерно вот такой командой:
Что формат .ctors и .init_array ничем не отличаются, это одна и та же секция, просто ее назвали иначе.
Чем же кому-то не угодила секция .ctors, почему в новых стандартах пришлось заводить .init_array, который, по сути, ничем не отличается, и зачем нужно было убирать поддержку .ctors, история (и MaskRay) умалчивают:
"Under the hood, on ELF platforms, the initialization functions or constructors are implemented in two schemes. The legacy one uses .init/.ctors while the new one uses .init_array"
Наверное, потому, что ничего технически интересного в этой истории нет, а просто кто-то с кем-то не договорился, как оно обычно и бывает.
https://maskray.me/blog/2021-11-07-init-ctors-init-array
А вот еще один классный текст от знаменитого блоггера MaskRay!
Он про устройство секций, в которых лежат указатели на функции, которые нужно вызвать до main. Так что, если вам казалось, что там есть какая-то магия, то почитайте, ничего магического там нет.
Наткнулся я на этот текст по рабочей необходимости.
Старая версия CUDA (<= 10), которую все еще иногда приходится использовать, содержит в себе секции .ctors, но не содержит .init_array. А используемый нами линкер пару лет назад перестал поддерживать секцию .ctors. Ну и нам приходилось поддерживать патчи на линкер, чтобы он умел в .ctors, а не только в .init_array.
При переходе на новую версию линкера мне надоело накладывать эти патчи, и я, пользуясь этой заметкой, бинарно переделал библиотеки от nvidia, переместив конструкторы из .ctors в .init_array.
Примерно вот такой командой:
objcopy --rename-section .ctors=.init_array file
Что нам говорит этот вызов?Что формат .ctors и .init_array ничем не отличаются, это одна и та же секция, просто ее назвали иначе.
Чем же кому-то не угодила секция .ctors, почему в новых стандартах пришлось заводить .init_array, который, по сути, ничем не отличается, и зачем нужно было убирать поддержку .ctors, история (и MaskRay) умалчивают:
"Under the hood, on ELF platforms, the initialization functions or constructors are implemented in two schemes. The legacy one uses .init/.ctors while the new one uses .init_array"
Наверное, потому, что ничего технически интересного в этой истории нет, а просто кто-то с кем-то не договорился, как оно обычно и бывает.
MaskRay
.init, .ctors, and .init_array
Updated in 2023-03. In C++, dynamic initializations for non-local variables happen before the first statement of the main function. All (most?) implementations just ensure such dynamic initializations
🔥12
commit -m "better"
https://asahilinux.org/2022/11/november-2022-report/ Очередной status update от #asahi Linux. Интересно почитать про пляски вокруг firmware(потому что Apple не нужно заморачиваться с кучей платформ, и они хранят firmware прямо в своем ядре!), и про power…
#asahi
https://www.opennet.ru/opennews/art.shtml?num=59648
У коллег, судя по всему, прямо прорыв в поддержке 3D.
Интересно, конечно, что у них с питаловом, то есть, сколько жрет GPU с этим drm driver.
Напомню, что это были основные проблемы с open source nvidia driver, что, без изпользования подписанного nvidia firmware, все работало не самым оптимальным образом.
Но, вообще, конечно, это очень и очень круто. Надо будет как-нибудь попробовать там запустить #stal/ix. Прямо сейчас мне мешает только тот факт, что drm driver написан на Rust.
https://www.opennet.ru/opennews/art.shtml?num=59648
У коллег, судя по всему, прямо прорыв в поддержке 3D.
Интересно, конечно, что у них с питаловом, то есть, сколько жрет GPU с этим drm driver.
Напомню, что это были основные проблемы с open source nvidia driver, что, без изпользования подписанного nvidia firmware, все работало не самым оптимальным образом.
Но, вообще, конечно, это очень и очень круто. Надо будет как-нибудь попробовать там запустить #stal/ix. Прямо сейчас мне мешает только тот факт, что drm driver написан на Rust.
www.opennet.ru
Открытый драйвер Asahi для чипов Apple M1 и M2 сертифицирован на совместимость с OpenGL ES 3.1
Консорциум Khronos, занимающийся разработкой графических стандартов, признал полную совместимость открытого драйвера Asahi для GPU AGX, поставляемого в чипах Apple M1 и M2, со спецификацией OpenGL ES 3.1. Драйвер успешно прошёл все тесты из набора CTS (Kronos…
🔥5😁3🤔1
commit -m "better"
Воскресный #rant из серии "лучше бы они". https://www.phoronix.com/news/Intel-oneAPI-Embree-4.1 Лучше бы они портировали под arm https://github.com/intel/hyperscan. Проблема, конечно, в том, что hyperscan - полезная библиотека, и так-то быстрые регулярки…
Совершенно случайно пришлось заглянуть в код subj.
Слушайте, мне иногда кажется, что у некоторых программистов, когда они кодят, в голове происходит что-то типа https://www.youtube.com/watch?v=NVwAOiKbOqI
Потому что я вот не знаю, чем можно объяснить вот такое:
https://github.com/intel/hyperscan/blob/master/src/rose/rose_build_convert.cpp#L564
* new/make_shared может вернуть nullptr? А в 21 веке?
* разное поведение в дебаге и в релизе - assert vs. runtime error (кстати, немного в сторону - то, как в Rust обрабатываются переполнения - это треш, угар, содомия)
* этот bad_alloc не содержит line info, поэтому человек, решивший такое раздебажить, может поседеть
Короче, это совершенно redundant блок кода, который современный компилятор может вообще убрать нафиг. И вообще, это как использовать 3 презерватива, если вы понимаете, о чем я.
И это не единственная такая штука - там все, все выделение ресурсов обмазано вот такой вот проверкой. https://github.com/intel/hyperscan/blob/master/src/nfa/goughcompile.cpp#L210, всего несколько десятков таких однотипных проверок.
Слушайте, мне иногда кажется, что у некоторых программистов, когда они кодят, в голове происходит что-то типа https://www.youtube.com/watch?v=NVwAOiKbOqI
Потому что я вот не знаю, чем можно объяснить вот такое:
https://github.com/intel/hyperscan/blob/master/src/rose/rose_build_convert.cpp#L564
shared_ptr<NGHolder> h_new = make_shared<NGHolder>();В этом отрывке прекрасно все:
if (!h_new) {
assert(0);
throw std::bad_alloc();
}
* new/make_shared может вернуть nullptr? А в 21 веке?
* разное поведение в дебаге и в релизе - assert vs. runtime error (кстати, немного в сторону - то, как в Rust обрабатываются переполнения - это треш, угар, содомия)
* этот bad_alloc не содержит line info, поэтому человек, решивший такое раздебажить, может поседеть
Короче, это совершенно redundant блок кода, который современный компилятор может вообще убрать нафиг. И вообще, это как использовать 3 презерватива, если вы понимаете, о чем я.
И это не единственная такая штука - там все, все выделение ресурсов обмазано вот такой вот проверкой. https://github.com/intel/hyperscan/blob/master/src/nfa/goughcompile.cpp#L210, всего несколько десятков таких однотипных проверок.
YouTube
ОБЕЗЬЯНКА В ГОЛОВЕ
Взято из мультфильма: Симпсоны в кино
🔥10😁5🐳3❤2
Будни #bootstrap, пятничный #rant
Отвязывать сборку от окружения - сложно (особенно без контейнеризации/виртуализации).
Недавно я узнал, что cmake и meson, в момент configure, могут дергать вот такую вот команду:
А потом, передавать в линкер /usr/lib/libxml2.a, вместо -lxml2. К чему это приводит, вы можете придумать и сами, от банальных ошибок в линковке, до падений в runtime, из-за разных ABI.
Какой в этом поиске физический смысл - я не понимаю.
Система сборки должна запустить pkg-config (или cmake, если метаинформация про установочные пути живет в базе данных от cmake), и узнать у него про пути к библиотекам, а не заниматься вот такого рода самодеятельностью.
Я не стал выяснять, что там воркэраундили эти сумасшедшие, а просто налепил workaround на workaround - https://github.com/pg83/ix/blob/main/pkgs/bld/wrapcc/kuroko/wrapcc.krk#L118-L119 Теперь и cmake, и meson, не видят этих путей для поиска, и меньше лезут в систему.
Отвязывать сборку от окружения - сложно (особенно без контейнеризации/виртуализации).
Недавно я узнал, что cmake и meson, в момент configure, могут дергать вот такую вот команду:
# clang -print-search-dirsИ использовать найденные пути для поиска библиотек!
programs: = ...:.../clang-16/bin: \
/usr/lib/gcc/.../x86_64-linux-gnu/bin
libraries: = .../clang-16/lib/clang/16: \
/usr/lib/gcc/x86_64-linux-gnu/9: \
/usr/lib/gcc/.../lib64: \
/lib/x86_64-linux-gnu: \
/lib/../lib64: \
/usr/lib/x86_64-linux-gnu: \
/usr/lib/../lib64: \
/lib: \
/usr/lib
А потом, передавать в линкер /usr/lib/libxml2.a, вместо -lxml2. К чему это приводит, вы можете придумать и сами, от банальных ошибок в линковке, до падений в runtime, из-за разных ABI.
Какой в этом поиске физический смысл - я не понимаю.
Система сборки должна запустить pkg-config (или cmake, если метаинформация про установочные пути живет в базе данных от cmake), и узнать у него про пути к библиотекам, а не заниматься вот такого рода самодеятельностью.
Я не стал выяснять, что там воркэраундили эти сумасшедшие, а просто налепил workaround на workaround - https://github.com/pg83/ix/blob/main/pkgs/bld/wrapcc/kuroko/wrapcc.krk#L118-L119 Теперь и cmake, и meson, не видят этих путей для поиска, и меньше лезут в систему.
🔥10😁4🤣3💩1
commit -m "better"
#fork https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license #HashiCorp вычеркивают себя из open source. Флаг им в руки, но не думаю, что у них выйдет из этого что-то хорошее.
https://www.opennet.ru/opennews/art.shtml?num=59666 #fork
Продолжение истории с #hashicorp.
Как обычно, когда какая-то компания пытается монетизировать выстреливший, за счет своей бесплатности и доступности, продукт, у нее ничего не выходит, потому что подсевшие на эту иглу просто скидываются, и продолжают развивать форк. Потому что никто и никогда не будет договариваться с шантажистом.
Я бы сравнил подобную деятельность со стрельбой себе в ногу, потому что пока компания ведет себя честно, никто даже и не пытается такой форк замутить, потому что кто же им будет пользоваться? А вот как только компания-собственник сходит с ума, тут же появляется шанс на то, что такой форк будет вполне жизнеспособен.
Из интересного - форком будет заниматься >= 14 разрабов fulltime, а в hashicorp всего 5.
Продолжение истории с #hashicorp.
Как обычно, когда какая-то компания пытается монетизировать выстреливший, за счет своей бесплатности и доступности, продукт, у нее ничего не выходит, потому что подсевшие на эту иглу просто скидываются, и продолжают развивать форк. Потому что никто и никогда не будет договариваться с шантажистом.
Я бы сравнил подобную деятельность со стрельбой себе в ногу, потому что пока компания ведет себя честно, никто даже и не пытается такой форк замутить, потому что кто же им будет пользоваться? А вот как только компания-собственник сходит с ума, тут же появляется шанс на то, что такой форк будет вполне жизнеспособен.
Из интересного - форком будет заниматься >= 14 разрабов fulltime, а в hashicorp всего 5.
www.opennet.ru
Организация OpenTF создала форк платформы управления конфигурацией Terraform
Объявлено о создании организации OpenTF, которая будет развивать форк платформы управления конфигурацией и автоматизации поддержания инфраструктуры Terraform. Разработку планируют перевести под покровительство организации Linux Foundation для дальнейшего…
🔥14🎉3🆒2👍1👎1
Forwarded from Programmer memes
This media is not supported in your browser
VIEW IN TELEGRAM
😁19👎4❤3🆒2🫡1
commit -m "better"
Не помню, рассказывал про свое микросоревнование с самим собой, или нет, беглый поиск по каналу ничего такого не нашел, поэтому рассказываю, тем более, есть повод! Просто писать код - скучно, это уже давно доведено до автоматизма. Поэтому я, по крайней мере…
Сумел стереть еще 1.5кб кода, но, правда, до 50кб так и не "ужал".
Стер за счет того, что "перепридумал" способ указывать exe, который будет выполнять конкретный скрипт. Раньше это был хардкод в ядре, а теперь я это перенес в шаблон, вместе с остатками скриптовой питонячки.
https://github.com/pg83/ix/commit/9899433a4e9c0003764aff563b1d3213a45d213b
https://github.com/pg83/ix/commit/c8b112fc9406e35802f688906f7c4faa40247c47
Благодаря этому упрощению теперь возможно использовать шаблоны описания сборки пакетов на любом языке, а не только на ранее захардкоженных sh/python.
Не то чтобы я ожидал шквал пакетов на JS, но, тем не менее.
Стер за счет того, что "перепридумал" способ указывать exe, который будет выполнять конкретный скрипт. Раньше это был хардкод в ядре, а теперь я это перенес в шаблон, вместе с остатками скриптовой питонячки.
https://github.com/pg83/ix/commit/9899433a4e9c0003764aff563b1d3213a45d213b
https://github.com/pg83/ix/commit/c8b112fc9406e35802f688906f7c4faa40247c47
Благодаря этому упрощению теперь возможно использовать шаблоны описания сборки пакетов на любом языке, а не только на ранее захардкоженных sh/python.
Не то чтобы я ожидал шквал пакетов на JS, но, тем не менее.
GitHub
better · pg83/ix@9899433
ix package manager. Contribute to pg83/ix development by creating an account on GitHub.
🔥10💩3❤2🤔2
commit -m "better"
Призывал и буду призывать владельцев open source софта всегда делать официальный бекап на github. Потому что github самый надежный, а ваш sr.ht/repo.cz/gitlab/whatever однажды ляжет, и поднимать его будут неделю. Поэтому я всегда радовался, какие же хорошие…
Опять лежит gitlab от freedesktop - https://gist.github.com/pg83/de5cc5e61cd5bbd05ac7e6959136fd89
И я, конечно, воспользуюсь этим, чтобы призвать всех владельцев open source софта делать RO зеркала на github.
И я, конечно, воспользуюсь этим, чтобы призвать всех владельцев open source софта делать RO зеркала на github.
Gist
gist:de5cc5e61cd5bbd05ac7e6959136fd89
GitHub Gist: instantly share code, notes, and snippets.
👍8😁6🔥2