angle-up arrow-clockwise arrow-counterclockwise arrow-down-up arrow-left at calendar card-list chat check envelope folder house info-circle pencil people person person-plus phone plus question-circle search tag trash x

Не стесняйтесь изобретать колесо заново, если вы хотите, чтобы ваше программное обеспечение с компонентами open source работало дольше.

10 марта 2020 возле Peter
В Flask

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

post main image
https://unsplash.com/@neilsoniphotography

Проблема: клиент хочет приложение с определенной функциональностью и хочет этого вчера. Что вы делаете, так это ищете решение plug-and-play, библиотеки и/или расширения. Вы говорите клиенту, что можете это сделать, клиент счастлив, вы это делаете. Например, вы берете Wordpress, выбираете и настраиваете некоторые плагины. Проблема решена или нет?

Да, проблема решена, но как долго? Через несколько месяцев Wordpress обновляется из-за уязвимости. Затем вдруг некоторые плагины или темы перестают работать. Затем PHP переходит на PHP 7.4 и снова некоторые подключаемые модули или темы перестают работать. В конце концов, это заставляет вас или вашего клиента запускать более старые, часто уязвимые версии программного обеспечения. Но это может быть и ваша бизнес-модель, обновления.

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

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

Например, посмотрите, что Google делает с Android. Каждый год они выпускают новую версию. И все производители телефонов должны следовать этому примеру. Новая версия лучше? В большинстве случаев, нет! Они делают большие переписывания определенных частей кода, так что если бы вы попытались понять и привыкнуть к внутреннему устройству версии X, то ваши знания ничего не стоят, когда выходит следующая версия. Да, они также вводят новые уязвимости, но это всего лишь ошибки. Многомиллиардная софтверная компания, конечно, не имеет ресурсов для тщательного анализа и тестирования своего программного обеспечения. Google также заставила сайты использовать HTTPS. Я знаю, для многих нетехнологичных людей это хорошая идея. Но сейчас многие сайты используют сертификаты от Letsencrypt, еще одна зависимость. А Letsencrypt конкуренты не допускаются, спасибо всем!

Разработчики Open source создают изменения

Хочу заявить, что я очень доволен доступностью программного обеспечения open source . Я очень уважаю разработчиков и сообщества open source . Без них программное обеспечение, которое мы используем сегодня, было бы совершенно другим. Программное обеспечение Open source заставляет больших техников думать об изменениях, продолжать разрабатывать новые версии, идти вперед. Во многих отношениях разработчики open source часто создают изменения, не зная об этом.

Срок службы программного обеспечения open source часто короче, чем у коммерческого программного обеспечения.

Если вы используете программное обеспечение open source для сборки своих приложений, у вас есть много причин быть очень осторожным. Как отмечали многие, очень сложно заработать с помощью программного обеспечения и проектов open source . Программное обеспечение Open source часто разрабатывается одним или несколькими людьми, потому что они нуждались в нем для чего-то, а затем делились им с миром, фактически раздавая его. Многие разработчики надеются, что другие люди примут участие в их проекте, но во многих случаях это не так. Через некоторое время разработчик начинает работать над другими проектами или получает трудоёмкую работу и не успевает поддерживать своё программное обеспечение. Вы можете назвать это темной стороной программного обеспечения open source .

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

Данный вебсайт построен с расширениями Python 3, framework Flask, немногие расширения Flask , SQLAlchemy, Bootstrap 4, jQuery, MariaDb. Выживет ли Python 3 в ближайшие пять лет? Надеюсь, что да. Python 2 была ошибкой, так как пропустила существенный функционал. Сопровождающие Python решили сделать Python 3 несовместимым с Python 2. По этой причине Python 2 должен жить как независимый от Python 3 язык, но сообщество решило его больше не поддерживать. Не очень хорошо, но я могу это понять. Основная причина в том, что сообщество не зарабатывает на поддержке Python , поэтому они переходят на Python 3. Python 2 является очень хорошим примером того, что может пойти не так с программой open source .

Выживет ли Flask в ближайшие пять лет? Надеюсь, но мне страшно. Создатель и главный разработчик Flask , возможно, захочет потратить свое время на другие проекты в ближайшие годы. Могут ли другие люди занять его место? Я не уверен. Расширения Flask - это другое дело. Как правило, они разрабатываются индивидуально. Flask было введено в 2010 году и уже большое количество расширений не обновлялось годами, какова будет судьба расширений, которые вы включаете в свой продукт сегодня?

То же самое справедливо и для SQLAlchemy, красивого программного обеспечения, ORM так, как это должно быть. Но что произойдет, когда создатель решит уйти и сделать что-то другое? Bootstrap - это open source , и, похоже, у них есть политика, позволяющая двигаться вперед, ломая предыдущие версии. Теперь я нахожусь на Bootstrap 4 , но предположим, что вы были на Bootstrap 3 и должны были перейти на Bootstrap 4. Нелегкая задача. Bootstrap уже анонсировала версию 5, которая будет работать без jQuery. Я с нетерпением жду этой миграции ... НЕ.

jQuery очень часто используется, но будет стараться идти в ногу с изменениями, навязанными большими технологиями. Могу только надеяться, что они смогут это сделать. Такие проекты как jQuery-UI и jQuery-Mobile более или менее мертвы. И еще есть MariaDb. Я считаю, что они здесь, чтобы остаться как минимум на пять лет, потому что они поставляют очень хороший продукт. Я также думаю, что Oracle хочет, чтобы они существовали, так как они стимулируют развитие Oracle MySQL . MariaDb также продает поддержку, зарабатывает деньги, это очень важно.

Следует ли использовать программное обеспечение open source для разработки следующего приложения?

Лучше ли программное обеспечение от коммерческих организаций? Во многих случаях ответ - нет. Но вы получаете поддержку, и для них важно быть в курсе последних событий. Тем не менее, я считаю, что использование компонентов open source является хорошим выбором для создания нового программного обеспечения. Но только если вы сначала тщательно изучите проблему времени жизни компонентов. И, конечно же, вы должны проверить лицензирование перед тем, как что-то делать.

Минимизация рискованных зависимостей путем написания собственных компонентов.

Много лет назад я взял на себя проект, который был написан на Perl. Когда пришел PHP , я создал свой собственный маленький framework и преобразовал его в PHP. Потому что я не использовал никаких библиотек, все было под моим контролем. К счастью PHP оказалась достаточно обратно совместима, что означало, что не так уж много усилий по переходу на новые версии. Многие PHP framework пришли и ушли, но моя программа PHP все еще работает. Но, конечно, она могла выжить только потому, что я был там. Я часто вижу на таких сайтах, как Stackoverflow комментарии, что не стоит изобретать колесо заново. Но разработка собственных компонентов часто НЕ ДОЛЖНА изобретать колесо заново!

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

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

Два компонента, которые я недавно собрал: макрос сборки данных и макрос Jinja Bootstrap

В предыдущем проекте я использовал блок данных jQuery . Хорошо, но ... через некоторое время мне понадобилась функциональность, например, переход на другой месяц без выбора даты. Это было началом многих головных болей при работе над этим и другими ограничениями все время. Для этого сайта мне также нужен сборщик данных, он должен быть интегрирован с Flask и WTForms и должен придерживаться Content Security Policy. Последнее можно решить, экспортировав параметры сборщика данных из Python в application/json.
Макрос Jinja Bootstrap должен очень легко генерировать все виды форм, он должен быть гибким и поддерживать широкий спектр полей, включая мой собственный блок данных. Ненавижу строить формы 'вручную', т.е. помещать все поля формы отдельно в шаблон, когда с небольшими дополнительными усилиями в макросе это можно сделать просто написав:

{{ bootstrap_form(demo_form, id='demo_form') }}

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

Резюме

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

Ссылки / кредиты

How to make money from open source software
https://www.cio.com/article/3178621/how-to-make-money-from-open-source-software.html

Open Source, SaaS and Monetization
https://lucumr.pocoo.org/2019/11/4/open-source-and-saas/

REINVENT THE WHEEL | meaning in the Cambridge English Dictionary
https://dictionary.cambridge.org/dictionary/english/reinvent-the-wheel

Подробнее:
Flask

Оставить комментарий

Комментируйте анонимно или войдите в систему, чтобы прокомментировать.

Комментарии

Оставьте ответ

Ответьте анонимно или войдите в систему, чтобы ответить.