WiringPi — Устарел


Открытый исходный код прекрасен — за исключением тех случаев, когда это не так. Последняя мини-катастрофа, давайте не будем увлекаться, заключается в том, что создатель и сопровождающий WiringPi сдался, разочарованный тем, как люди, они же пользователи, относятся к его коду и к нему.

Трудно понять, насколько важен WiringPi. Он обеспечивает подход «проводки» Arduino к использованию GPIO Raspberry Pi (Универсальный входной выход), а также электроники, используемой для ввода и вывода данных. Лично я никогда не использовал его, главным образом потому, что предпочитаю более прямой подход к GPIO, который имеет минимальные и полностью заменяемые зависимости. Таким образом, я знаю, что мой код может продолжаться вечно. Большая проблема с принятием любого нового подхода с открытым исходным кодом — это зависимость-в смысле «можете ли вы зависеть от него и его сопровождающего». Ваш продукт вполне может пережить библиотеки с открытым исходным кодом, которые вы используете.

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

Так же обстоит дело и с WiringPi, творением Гордона Хендерсона. Эта библиотека предназначена для использования C, C++ и его собственным языком RTB BASIC, но, поскольку она написана на C, другие люди создали привязки для других языков — Python, JavaScript, PHP, Perl и Ruby, чтобы назвать те, о которых я знаю. Однако существуют альтернативы, и программисты Python, в частности, предпочитают MicroPython, GPIO zero и PPi.GPIO. Из них GPIO zero, по-видимому, является самым популярным, но WiringPi, из-за его привычки к программистам Arduino, имеет значительное место и присутствие.

Тогда сюрприз заключается в том, что появилось сообщение в блоге под названием WiringPi – устаревший… Теперь устаревшее-это странное слово для использования в проекте с полностью открытым исходным кодом, и не совсем ясно, что оно означает. Что ясно, так это то, что его создатель и сопровождающий отказывается от проекта. Неясно, что произойдет с базой кода в будущем:

«Я скоро сделаю окончательный выпуск WiringPi доступным – с источниками, но это все. Больше никаких публичных релизов. Я по-прежнему буду поддерживать его для своих собственных нужд и клиентов, но для всех остальных, пожалуйста, найдите альтернативную библиотеку GPIO для текущих проектов.»

Если кому — то захочется взять на себя проект и разветвить его, я не вижу причин, почему бы и нет, но будьте осторожны в своих желаниях.

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

«Я никогда не предполагал, что WiringPi будет статически связан – и благодаря некомпетентности многих людей, которые сделали именно это, я получил более 10 000 электронных писем от людей, которые обновили свой Pi и обнаружили, что код перестал работать, потому что они зависели от системы (обычно какой-то java/javascript/node или домашней автоматизации или ИБП), которая статически связывала более старую версию. Эта явная некомпетентность с их стороны сильно опечалила и огорчила меня.»

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

«А те, кто украл мое программное обеспечение и продал его как свое собственное? Хм. Конечно, трудно украсть бесплатное программное обеспечение, но, скажем, вы немецкий производитель Pi UPS, и вы разбираете WiringPi, чтобы получить только нужные вам биты, статически связываете это с вашим собственным управляющим кодом, но вместо того, чтобы публиковать код и немного “спасибо”, вы оставляете мой адрес электронной почты, а затем бедный пользователь, который заплатил вам хорошие деньги за покупку вашего комплекта, связывается со мной, когда они обновляют свой Pi…»

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

«Самое печальное, что люди постоянно крадут GPL, LGPL и другие бесплатные/свободные программы. У меня даже был кто-то, кто сказал мне в лицо, что они возьмут и переиздадут мой код под своим именем, потому что я ничего не могу с этим поделать. Так что больше ничего.»

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

— Последняя капля? Человек по имени Даниэль, который блеял на меня за то, что я своевременно не выпустил исходники для версии Pi v4. Я бы создал файл .deb, предназначенный для правильной динамической привязки, но Дэниел указал

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

Здорово. Спасибо, Дэн. Поскольку в то время у меня были ограниченные возможности, я просто чувствовал, что это так. Если я собираюсь получать такие письма для небольшого проекта, то это больше не стоит того.»

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

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

Что бы ни случилось в будущем, несмотря на мое вступительное слово, я думаю, что буду держаться подальше от WiringPi для новых проектов, и да, я думаю, что именно это означает «осуждать».

Гарри Фэрхед является автором Raspberry Pi IoT в C , Micro:bit IoT в C и Fundamental C: Приближение к машине. Его последняя книга-Применение языка Си Для Интернета Вещей с Linux.


Добавить комментарий