Кто-то на 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

  • snake266
    link
    fedilink
    arrow-up
    0
    ·
    3 years ago

    В отличии от того же subversion он ни капельку не централизован. То что мелкомягкие подмяли под себя самую крупную платформу хранения git-репозиториев это уже другой вопрос – кто хочет, тот хостит свои проекты на gitlab, codeberg или на self hosted gitlab/gitea.

    • torvn77
      link
      fedilink
      arrow-up
      0
      ·
      3 years ago

      мелкомягкие подмяли под себя самую крупную платформу хранения git-репозиториев

      Сам факт того что факт владения хостом с экземплярами git репозитаия позволяет что-то в этом репозитарии контролировать свидетельствует о том, что git не децентрализован.

      • snake266
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

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

        • torvn77
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          Возможность зеркалирования ничего не означает, это можно делать и с централизованными системами.

          Децентрализованность это когда каждый клиент является одновременно и сервером.

          • snake266
            link
            fedilink
            arrow-up
            0
            ·
            3 years ago

            Децентрализованность это когда каждый клиент является одновременно и сервером.

            Мне как-то тогда сложно представить как потом собирать изменения для релиза в случае, когда репозиторий клонировался древовидным образом

            • torvn77
              link
              fedilink
              arrow-up
              0
              ·
              3 years ago

              Но тем не менее гит по факту централизован.

              • snake266
                link
                fedilink
                arrow-up
                0
                ·
                3 years ago

                В общем случае да, наверно все-таки соглашусь, потому что чаще всего есть один сервер, куда попадают изменения от всей команды разработчиков

                • torvn77
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  3 years ago

                  Даже если серверов много то они всё равно не объединены в систему и не ищутся друг через друга стандартным для git способом(такого стандарта просто нет).
                  (нет аналога торрентовкского DHT)

                  Ну и опять таки, репозитарий в git адресуется не по ключу или названию и владельцу, а по доменному имени в интернете или ip адресу.

            • torvn77
              link
              fedilink
              arrow-up
              0
              ·
              3 years ago

              Мне как-то тогда сложно представить как потом собирать изменения для релиза в случае,

              Я думаю что с этим можно что-то придумать, если интересно то можно обсудить.

          • kmeawOP
            link
            fedilink
            arrow-up
            0
            ·
            3 years ago

            Децентрализованность это когда каждый клиент является одновременно и сервером.

            Но ведь так и есть. “Отправить pull-request” в своём оригинальном значении означает “написать письмо с просьбой сделать pull со своего хоста”, а не “запросить в централизованной системе слияние двух веток”.

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

            • torvn77
              link
              fedilink
              arrow-up
              0
              ·
              edit-2
              3 years ago

              Смотри, вот у тебя пустая домашняя папка и ты набираешь команду
              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 хоть капельку децентрлизован?
              Если он децентрализован то он всё это должен уметь по дефолту без настроек, патчей и всяких костылей.

              • kmeawOP
                link
                fedilink
                arrow-up
                0
                ·
                edit-2
                3 years ago

                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.

                • torvn77
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  edit-2
                  3 years ago

                  Стоп, не надо меня учить 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, то это и будет огромным костылём.

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

                  • kmeawOP
                    link
                    fedilink
                    arrow-up
                    0
                    ·
                    3 years ago

                    И если kernel.org в этот транспорт не умеет то что будет?

                    То же самое, если попытаться связаться с тобой по телефону, если телефона у тебя никогда не было. Я про то, что git - это штука, которая синхронизирует объекты и ветки на двух машинах, если они уже смогли как-то связаться друг с другом, и git не очень интересно, как именно они это сделали.

                    Так же и ты можешь прочитать моё сообщение, даже если linuxtalks.co перестанет существовать. Возможно, я найду какой-то другой способ связаться с тобой, например напишу email или ещё как-то. От этого твоя способность понимать текст никак не поменяется.

                    это мета-команда которая потом передаёт управление в какой либо специализированный блок

                    Проблема не в том, из одного блока состоит программа или из разных. systemd ведь тоже не из одного бинаря состоит. Проблема начинается, когда авторы комплекта программ пытаются навязать одновременно и mechanism, и policy, лишая пользователя гибкости.

                    То есть если сделать git search, который делает всё, что ты предлагаешь, то придётся повторить всю эту работу для остальных задач, где полезен распределённый поиск - сделать ещё и youtube-dl search, wget --search, apt search и так далее.

                    Вместо этого лучше взять отдельно транспорт, отдельно систему разрешения имён, отдельно сервер метаданных, отдельно индексатор. Тогда можно будет простым скриптом в git hook вытащить информацию об объектах/ветках/коммитах и передать её в программу, накапливающую локальные метаданные. Другая программа сможет рассказать моим соседям (по DHT или ещё как-нибудь) про всё, чем я готов поделиться. И уже поверх этих компонентов можно делать глобальный поиск.

                    • torvn77
                      link
                      fedilink
                      arrow-up
                      0
                      ·
                      3 years ago

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

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

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

                      • torvn77
                        link
                        fedilink
                        arrow-up
                        0
                        ·
                        3 years ago

                        @kmeaw так что скажешь о двух предыдущих постах?

                        • kmeawOP
                          link
                          fedilink
                          arrow-up
                          0
                          ·
                          3 years ago

                          Увы, не знаю, что такое sendxml/sendjson.

                          Большая часть этих идей существует с времён FidoNet, когда мейлер, тоссер, редактор - отдельные программы. Сортировка и автопересылка писем там есть.

                          Если рассматривать классический email поверх SMTP, то есть git-send-email, а большинство MTA поддерживают .forward, откуда можно вызвать скрипт для разбора таких писем и применению патчей (git-am) из них в remote-ветки. Получателем таких писем может быть mailing list, рассылающий широковещательно письма, как это часто происходит в крупных opensource-проектах (например в ядре Linux).

                          Отсутствие прямой связи сейчас может и выглядит комично, но offline-протоколы всё ещё востребованы. До сих пор на Земле есть места, где связь очень так себе или появляется не всегда, а с расширением на космические масштабы проблема связи вообще становится неизбежной. Тот же TCP с дефолтными таймаутами и congestion control до Марса просто сломается.

                          Из интересных распределённых систем хранения (и поиска) стоит отметить IPFS, Tahoe-LAFS, YaCy. Я не знаю, как (и вообще ли) сделана в них защита от плохих участников - что случится, если кто-то будет отвечать медленно и/или неправильно.

                          Другая проблема в отсутствии общепринятого протокола для обмена статически типизированных данных между программами - большинство утилит командной строки в unix-пободных системах потребляют и порождают plain text, что не всегда удобно для сложных композиций. Некоторые умеют JSON, но нигде не описывают схему. Некоторые - XML. В корпорациях и модных cloud-native программах любят Protobuf (и gRPC). Для чтения людьми хороши recfiles - если бы мне нужно было выбрать формат описания артефактов для большой сети друзей, я бы начал именно с него.

                          Ещё интересный вопрос - что делать, если индексы очень большие, и вынуждают поисковую систему не скачивать сам индекс, а распределять пользовательские запросы на все системы, где потенциально могут быть искомые данные - насколько богатые запросы стоит разрешать? В мире веба похожую задачу решает GraphQL - он позволяет запрашивать, изменять или подписываться на изменения коллекций данных на удалённой машине и поддерживает фильтрацию и по вложенным полям, что обычно транслируется в запросы к локальной реляционной или объектной базе.

                    • torvn77
                      link
                      fedilink
                      arrow-up
                      0
                      ·
                      3 years ago

                      То есть если сделать git search, который делает всё, что ты предлагаешь, то придётся повторить всю эту работу для остальных задач, где полезен распределённый поиск - сделать ещё и youtube-dl search, wget –search, apt search и так далее.

                      Тогда можно будет простым скриптом в git hook вытащить информацию об объектах/ветках/коммитах и передать её в программу, накапливающую локальные метаданные. Другая программа сможет рассказать моим соседям (по DHT или ещё как-нибудь) про всё, чем я готов поделиться. И уже поверх этих компонентов можно делать глобальный поиск.

                      Ты довольно уникальный человек который начал просекать идею сервиса sendxml(ну или sendjson)