Кто-то на GitHub Actions сделал автоматизацию, которая собирает FFmpeg для сотни платформ: https://github.com/BtbN/FFmpeg-Builds
В процессе сборки она скачивает FFmpeg и все его зависимости, включая GNU gmp. Исходники берёт самые свежие, и у GNU gmp они лежат в Mercurial.
Сервера у GNU gmp не держат такую огромную нагрузку (отдать несколько гигабайт за несколько часов), и источник нагрузки начали банить: https://gmplib.org/list-archives/gmp-devel/2023-June/006164.html
Злого умысла у FFmpeg-Builds нет.
Предположим, что некто решает задачу автоматического анализа бинарников, например с целью выявления нарушений GPL. Он строит pipeline, на вход которому дают исполняемый файл, а на следующем этапе происходит поиск исходников, периодически приводящий к скачиванию их с серверов GNU. Будет ли подобный бан на стороне серверов GNU нарушением GPL (ведь лицензия требует предоставить исходники пользователю программы)?
Перемещено crypt из feedback
Нет, в лицензии не оговорен метод доставки исходного кода. Его обязаны предоставить по запросу любым удобным для автора способом. Могут и по почте отправить распечатку.
Будет ли подобный бан на стороне серверов GNU нарушением GPL
Будет или не будет но факт выявления технических недостатков git на лицо, он слишком централизован.
В отличии от того же subversion он ни капельку не централизован. То что мелкомягкие подмяли под себя самую крупную платформу хранения git-репозиториев это уже другой вопрос – кто хочет, тот хостит свои проекты на gitlab, codeberg или на self hosted gitlab/gitea.
мелкомягкие подмяли под себя самую крупную платформу хранения git-репозиториев
Сам факт того что факт владения хостом с экземплярами git репозитаия позволяет что-то в этом репозитарии контролировать свидетельствует о том, что git не децентрализован.
Так можно зеркалировать репозиторий на другие хостинги. Точно знаю что на codeberg можно в несколько кликов создать зеркало репозитория с популярных серверов и сервисов
Возможность зеркалирования ничего не означает, это можно делать и с централизованными системами.
Децентрализованность это когда каждый клиент является одновременно и сервером.
Децентрализованность это когда каждый клиент является одновременно и сервером.
Мне как-то тогда сложно представить как потом собирать изменения для релиза в случае, когда репозиторий клонировался древовидным образом
Но тем не менее гит по факту централизован.
В общем случае да, наверно все-таки соглашусь, потому что чаще всего есть один сервер, куда попадают изменения от всей команды разработчиков
Даже если серверов много то они всё равно не объединены в систему и не ищутся друг через друга стандартным для git способом(такого стандарта просто нет).
(нет аналога торрентовкского DHT)Ну и опять таки, репозитарий в git адресуется не по ключу или названию и владельцу, а по доменному имени в интернете или ip адресу.
Мне как-то тогда сложно представить как потом собирать изменения для релиза в случае,
Я думаю что с этим можно что-то придумать, если интересно то можно обсудить.
Децентрализованность это когда каждый клиент является одновременно и сервером.
Но ведь так и есть. “Отправить pull-request” в своём оригинальном значении означает “написать письмо с просьбой сделать pull со своего хоста”, а не “запросить в централизованной системе слияние двух веток”.
Для git сервер часто запускается по требованию клиента, используя sshd в качестве безопасного транспорта и механизма запуска.
Смотри, вот у тебя пустая домашняя папка и ты набираешь команду
git search tag=kernel,linux,sources,src
Он после её выполнения предложит сам по себе загрузится с kernel.org или github.com?
Будет ли в этом списке куча исходников с кастомными патчами?
Ничего такого он тебе не предложит, он напишет что такой команды нет и искать эти репозитарии ты будешь в браузере.Теперь второй вопрос: положим мы живём в одном многоквартирном доме и находимся в подсетке одного провайдера и я набрал на своём компе команду
git clone kernel.org/linuxчем скачал к себе исходники ядра после чего разлогинился из компьютера.
Потом ты выполнил уже на своём компьютере ту же команду
git clone kernel.org/linux
Вопрос: откуда git будет качать исходники: с моего компа, неведомого Васи Пуркина или именно с kernel.org?
Подозреваю что именно с kernel.org, про частичные копии репозитария на моём компьютере или компьютере Васи Пупкина git на твоём компе ничего не знает и что важно даже не попытается узнать, у него просто нет для этого средств и механик.То есть то что ты пишешь про написание письма может и создаёт ПРЕДПОСЫЛКИ для децентрализации, но по факту всё будет завязано на конкретный домен и если этот домен заблокируют спецслужбы то ты не получишь копии репозитария не смотря на то что она есть рядом с тобой на моём компьютере, у тебя просто не будет средств о этом узнать если только я не напишу о этом в интернете, например в виде поста в соцсети.
git сам мой репозитарий не найдёт и к тебе не скачает.Пойдём дальше, kernel.org по прежнему заблокирован, а ты внёс в свои версии исходника правку и набрал условный git pull.
Вопрос: когда твои изменения попадут на сервер kernel.org?
При гормальной децентрализации они сначала попадут в копию репозитария у Джона Пупкина в США и уже оттуда через некоторое время фоновой синхронизации придут на kernel.org
И всё это без каких либо твоих тело движений как нормальная работа децентрализованного клиента.Но что же будет по факту?
По факту ты будешь сидеть и ждать когда с kernel,org снимут блокировку, при том что компьютер Джона Пупкина заблокирован не будет.И вот после всех этих "не" ты будешь говорит о том, что git хоть капельку децентрлизован?
Если он децентрализован то он всё это должен уметь по дефолту без настроек, патчей и всяких костылей.git децентрализован в том смысле, что он может функционировать в сети равноправных участников. Ему всё равно, как работает DNS-резолвер и IP-маршрутизация в твоей системе. Можешь даже свой транспорт положить в
/usr/libexec/git-core/git-remote-*или сделатьgit clone fd::7,8/astral:linux, предварительно подключив файловые дескрипторы 7 и 8 к астральному транспорту - лишь бы с другой стороны был запущенgit upload-pack linux.Участники полностью равноправны - любой может запускать как fetch (pull), так и push.
Команды
git searchв системе, которая следует парадигме “выполняй одну задачу и делай это хорошо” быть не должно. Вместо неё стоит реализоватьgit clone $(distributed_search_client -format uri -tag kernel,linux,sources,src | head -n1).git clone kernel.org:linuxв текущей реализации - это краткая формаgit clone ssh://kernel.org/linux, аgit clone kernel.org/linuxозначает “сделай клон из локальной директории./kernel.org/linux”. В первом случае можно обеспечить себе желаемый уровень децентрализации с помощьюProxyCommand %h %pв~/.ssh/config- можно вынести в отдельную программу любую, даже самую наркоманскую логику для установки связи через децентрализованный астрал с хостом%h.Писать письма не обязательно через SMTP с резолвом доменов через MX-записи централизованной системы доменных имён с корнями
*.root-servers.net- любой элемент этой цепочки можно заменить, если хочется избежать блокировки. Или сразу все, используя системы типа store-and-forward, например NNCP - тогда будет не важно, через какой канал пришёл пакет, главное, чтобы у него была правильная подпись, которой ты доверяешь. NNCP может работать даже поверх флоппинета или флешки, замурованной в общедоступной стене - наличие возможности для работы интерактивного протокола необязательно.Если он децентрализован то он всё это должен уметь по дефолту без настроек, патчей и всяких костылей.
Если запихать все эти возможности в сам git, то это и будет огромным костылём. Такие задачи должны решаться на уровне дистрибутива, который соберёт вместе все компоненты, обеспечивающие согласованную работу децентрализованной системы.
Наиболее важные, на мой взгляд, свойства unix-подобных систем (из списка The Art of Unix Programming, Eric Steven Raymond):
Rule of Modularity: Write simple parts connected by clean interfaces.
Rule of Composition: Design programs to be connected to other programs.
Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
Стоп, не надо меня учить git, я им какое-то время пользовался и если надо то всё вспомню или прочитаю.
Мои примеры надо понимать схематически и давать на них такие же схематические ответы, избегая детализации чтобы концентрироватся на сути, а не на частностях.Можешь даже свой транспорт положить в /usr/l…
И если kernel.org в этот транспорт не умеет то что будет?
Участники полностью равноправны - любой может запускать как fetch (pull), так и push.
Как бы они не были равноправны, всё равно все пулреквесты будут мержится не в распределённой сети, а на одном конкретном хосте с конкретным адресом и не важно, будет это реальный ip или будет адрес в одном из многочисленных анонимезаторов.
Команды git search в системе, которая следует парадигме «выполняй одну задачу и делай это хорошо»
Как я понимаю git это мета-команда которая потом передаёт управление в какой либо специализированный блок как это сейчас делается в командах
ip,aptилиbtrfsи я не вижу ничего плохого в том если она подряд обратится к нескольким блокам, в конце концов в интеграции блоков и есть её назначение.Вместо неё стоит реализовать
git clone $(distributed_search_client -format uri -tag kernel,linux,sources,src | head -n1)То есть ты предлагаешь сделать отдельную команду
distributed_search_clientработу которой ты понял неправильно так как иначе вместо ошибочного| head -n1использовал бы конвеер из кучиgrep, в частности|grep kernel.orgи наверное gawk на случай если попадётся адрес видаdiadia_kiev.com/kernel.org/linuxкоторый вне сомненья будет удовлетворять твоему наивному запросу потому какkernel.orgто в нём есть…
Это во первых, а во вторых как твоя утилитаdistributed_search_clientобработает запрос видаgit search tag=kernel,linux,sources,src branch=brainfuck type=commit autor='Free Jone' include_txt='func brainfuck.extfs(devname) date_dia='2002.06.24.12:32-2016.12.xx.24:00'Теперь понимаешь всю нелепость твоего предложения делать отдельную утилиту
distributed_search_clientособенно если искомый коммит есть удалён из kernel.org и остался только в личном экземпляре исходников Free Jone?Писать письма не обязательно через SMTP
Если запихать все эти возможности в сам git, то это и будет огромным костылём.
Ты не понял ход моей мысли, я смотрю на это не как на отдельный функционал, а как на одно из возможных применений единой очень гибкой системы.
ipfs хватит всем



