Этот пост был первоначально опубликован в blog.florimond.dev .
Прошло много времени с тех пор, как я написал сообщение в блоге. Почти два месяца, на самом деле. Итак, где я был?
С одной стороны, последний год моих инженерных исследований занимал больше моего времени, чем я думал. Я не жалуюсь, хотя – я узнал кучу интересных и полезных вещей, как теоретических, так и практичных. Кроме того, я хочу воспользоваться возможностью, чтобы жить в последнем году.
Другая сторона истории – я работаю над строительством Бокадильо , Asynchronous Python Python Web Framework. Приключение, которое началось для меня, чтобы узнать о внутренних интервалах веб -структуры, до сих пор было захватывающим.
Это означает, что, поскольку день составляет всего 24 часа, мне пришлось немного отложить блог. Но теперь, когда я нахожусь в отпуске, я наконец могу потратить время, чтобы подумать о том, что происходит. 🥳
В этом сообщении я хочу надеть на бумагу свои мысли о том, как построить веб -структуру и особенно Запуск проекта с открытым исходным кодом . Я уже многому научился в процессе, от методов программирования до управления проектами и инструментов разработки, поэтому я хотел поделиться своим опытом с вами!
Что в меню?
- Что такое Бокадильо? : Представляем Бокадилло для создания некоторого контекста.
- История за всем этим : Я расскажу вам историю о том, как это стало моим первым проектом с открытым исходным кодом!
- Советы, чтобы начать свой собственный проект с открытым исходным кодом : серия подсказки Я собрался из опыта.
Перво -наперво – позвольте мне познакомить вас с Бокадильо! (Это будет коротко и мило, я обещаю.)
Что такое Бокадильо?
Bocadilloproject/Bocadillo
(Uncainted) Быстрые, масштабируемые и способные веб-API-интерфейсы в режиме реального времени для всех
Бокадильо сейчас Невозможно . Это хранилище должно быть заархивировано в ближайшее время. Мы рекомендуем пользователям мигрировать в другие хорошо поддерживаемые альтернативы, такие как Starlette или FASTAPI . Пожалуйста, смотрите #334 за дополнительной информацией.
Документация: https://bocadilloproject.github.io
Бокадильо – это Python Async Web Framework Это делает строительный и очень одновременный веб -API веселыми и доступными для всех.
Требования
Python 3.6+
Установка
pip install bocadillo
Пример
from bocadillo import App, configure app = App() configure(app) @app.route("/") async def index(req, res) res.json = {"hello": "world"}
Сохраните это как app.py
, затем начать Uvicorn сервер (горячая перезагрузка включена!):
uvicorn app:app --reload
Скажи привет!
$ curl http://localhost:8000 {"hello": "world"}
Готовы погрузиться? Посетите сайт документации Анкет
Изменение
Все изменения в Бокадилло записаны в…
Лифт
Бокадильо – это Modern Python Web Framework Это обеспечивает здравомыслящий инструментарий для строительства работоспособных веб -приложений и услуг с использованием асинхронное программирование Анкет Он совместим с Python 3.6+ и MIT-лицензированным.
Хотите начать? Прочитайте документацию !
Ключевые фигуры
Первоначальный коммит Бокадилло был 3 ноября 2018 года. По состоянию на 21 декабря, то есть через полтора месяца, вот где стоит Бокадильо:
- 500+ Commits и 31 звезды на Bocadilloproject/Bocadillo Репо – не стесняйтесь добавлять свой!
- 10 выпусков в Pypi – Последнее – v0.7
- 8K+ загрузки, измеренные по Питаться
- Около 30 страниц Документы !
- 2 участника с открытым исходным кодом – и многие другие приветствуются! 🥳
Эти цифры, конечно, очень скромные, но я уже очень доволен ими. Конечно, если вы хотите поддержать Bocadillo, вы можете:
Кроме того, если вы уже пробовали Bocadillo, пожалуйста, свяжитесь с нами через Twitter или Друттер чат – я бы хотел услышать от вас!
Философия
С точки зрения философии, Бокадильо – это Подходит для начинающих , но это направлено на то, чтобы дать пользователям мощности ту гибкость, в которой они нуждаются. Он фокусируется на Опыт разработчика при поддержке лучших практик.
Кроме того, Бокадилло не предназначен для минималистического (но не мастодон). Идея состоит в том, чтобы включить Тщательно выбранный набор включенных батарей , с разумными значениями по умолчанию, чтобы вы могли решить общие проблемы и быть продуктивным сразу же Анкет
Цели
Моя цель состоит в том, чтобы люди обнимали Новые возможности Async Python И этот бокадильо становится Инструмент, который помогает людям решать реальные проблемы легче и эффективно Анкет
Впереди еще много работы, чтобы добраться туда, но марафон начался!
Говоря о Асинхронизация Python, позвольте мне решить вопрос, который вы уже задали себе …
Что с асинхронным?
Как правило, экземпляр веб -приложения тратит много (если не большинство) своего времени обработки запросов в ожидании завершения ввода -вывода – API -вызовов, запросов базы данных, операций файловой системы. и т. д. Большинство из этих операций Блокировка , что обычно ограничивает производительность, если несколько клиентов запрашивают сервер.
Идея с асинхронными рамками, такими как Bocadillo, состоит в том, чтобы построить Приложения, которые не блокируют операции ввода/вывода . Чтобы достичь этого, мы используем асинхронное программирование и недавние дополнения к языку питона, например Асинсио и Асинхрон/жду – Доступно от Python 3.4+ и 3.6+ соответственно. Это позволяет нам рассмотреть вопрос о обработке запроса как задачи, которая «запланирована» для работы в ближайшем будущем, то есть, когда ЦП является доступным.
В результате, помимо лучшего использования процессора, эта архитектура имеет очень интересное преимущество – теперь мы можем обрабатывать несколько запросов одновременно Анкет
(Примечание: я не писал в параллельном , так как Async по -прежнему использует один поток. Параллелизм не параллелизм ..
Это свойство в конечном итоге приводит к Более стабильная пропускная способность и производительность Как увеличивается количество одновременных клиентов. Из моих собственных (еще не опубликованных) тестов, Bocadillo сохраняет постоянную скорость обработки, независимо от того, общается ли он с 10 или 10 000 клиентов. С другой стороны, «синхронизационные» рамки, такие как Фласка или Джанго, показывают значительное падение в запросах/с в настройках высокой параллелистики.
Хотите больше на Python Asynchronous Programming? Вот несколько разговоров, которые я рекомендую, возможно, за ним следует смотреть:
- Асинхронный питон для полного новичка , Мигель Гринберг, Pycon 2017.
- Асинхрон/ждать в Python 3.5 и почему это круто , Юрий Селиванов, Europython 2016.
- Страх и ожидание в асинхронности: дикое путешествие в сердце коратики мечты , Дэвид Бизли, Pyohio 2016.
Реализация
Бокадильо построен на Uvicorn , молниеносный веб-сервер ASGI и Starlette , удобный инструментарий ASGI. Оба были созданы Том Кристи Основной вклад в рамки REST Django (среди прочего).
Примечание : Asgi является асинхронным эквивалентом WSGI, то есть спецификацией того, как веб -серверы должны общаться с асинхронно Python Web Applications.
Функции
Что у Бокадильо уже есть : Запросы, ответы, представления (на основе функций и классифицированные), маршруты и параметры маршрута, типы носителей, перенаправления, шаблоны, статические файлы, фоновые задачи, CORS, HSTS, Gzip, «Рецепты» (a.k.a. Blueprint крючки и даже CLI. В конвейере выпуска больше!
Одна вещь, которую делает Бокадильо не есть (пока), однако, это Уровень базы данных Анкет Большинство веб -приложений или API, которые я создал, необходимы для каким -то образом сохранить данные, поэтому я считаю, что это (или, по крайней мере, официальная рекомендация о том, как интегрировать асинхронный уровень базы данных, такой как tortoise orm ) должна попасть в структуру в какой-то момент.
Привет, мир!
Давайте закончим с традиционным сценарием «Привет, мир»!
# api.py from bocadillo import API api = API() @api.route("/") async def hello(req, res): res.text = "Hello, World!" if __name__ == "__main__": api.run()
История за всем этим
Хорошо, хватит бокадильо! Теперь, когда вы знаете, что это такое, я хочу поделиться с вами историей, которая заставила меня написать этот самый пост в блоге.
Как и почему это началось? Каковы были некоторые из самых значимых событий? Давайте выясним это.
Учебный проект
Бокадильо начался как Способ для меня узнать больше о внутренних интернатах веб -структуры Анкет Я хотел сойти за кулисы после почти 2 лет использования различных веб -фреймворков Python и JS. Я хотел знать, как это на самом деле все работали.
Чтобы быть ясным, Бокадилло не начался с очень подробного плана. Черт возьми, я даже не думал о том, была ли необходимость в (другой) веб -структуре Python Async. Я хотел Узнайте больше, чем что-либо.
Давайте заново заносите колесо и отпустим его как можно скорее
Итак, я был, 3 ноября, внедрял функции настолько распространенными, что было похоже на Заново изобрести колесо Анкет Это были такие функции, как запросы, ответы, представления, маршруты или сервер приложений. «Сотни веб -фреймворков уже решили эти проблемы раньше», – подумал я…
Но мне было все равно. Как @funkybob любезно щедрый мне :
Изобретение колеса – это отличный способ учиться … а иногда то, что вы узнаете, – это то, насколько ваши существующие рамки делают для вас.
Твердый аргумент в пользу переосмысления колеса, который заставил меня понять, насколько Джанго является абсолютным массивным зверем.
Во всяком случае, это начальное усилие привело меня к выпуску v0.1 на PYPI 4 ноября. Всего через два дня после первоначального коммита , люди уже могли PIP установить Bocadillo
и создать минимальное асинхровое веб -приложение. (Кто сказал, что упаковка Python была болью? 🐍)
Первые признаки потенциала
После того, как V0.1 был выпущен, я продолжил внедрять больше функций, таких как новые типы ответов или обработка ошибок.
6 ноября V0.2.1 вышел. Именно тогда я начал понимать, что Бокадильо был хорошим кандидатом на мой первый Полный проект с открытым исходным кодом . Идея казалась мне привлекательной, поэтому я пошел на это!
В этот момент я еще ничего не раскрыл о Бокадильо, даже для друзей, поэтому я хотел сделать первое объявление. Я решил сделать это в Твиттере.
Потому что первоначальный дизайн и реализация Bocadillo заинтересовались из -за глубокого вдохновения от Респондент , Собственная асинхронная структура Кеннет Рейц, Я решил дать крик Анкет
Ответ Кеннета и предстоящие реакции после того, как он ретвитнул объявление, заставили меня подумать, что У Бокадильо действительно был потенциал Анкет
Всего за день репо получил 20 звезд (личный рекорд!) И, хотя это может выглядеть тривиально, я подумал, что это действительно круто.
PSST: Если вы хотите помочь узнать Bocadillo, ты могу Светь это тоже и распространите новости!
Итак, после того, как V0.2 был выпущен, я почувствовал мотивацию продолжать работать над Bocadillo и добавлять больше функций.
Пока я что -то не понял …
Где документы? Нравится настоящие документы?
Мне было ясно: я хотел, чтобы Бокадильо был моим первым Проект с открытым исходным кодом . Я хотел взять это Серьезно Чтобы узнать как можно больше из процесса.
Итак, с самого начала я написал информативный Readme , куратор A Изменение (С помощью сохранить изменение изменений ) и добавить Вклад методические рекомендации. По мере того, как все больше и больше выпусков выпускались с 6 ноября по 18 ноября, я обновил Changelog и задокументировал новые функции в Repo Readme.
Быстро, однако, это стало непрактичным. Readme росла в размерах, и это стало трудно ориентироваться, даже с содержанием.
Вот когда я понял Мне нужна правильная документация Анкет
Если вы думаете об этом, Хорошая документация – это sine qua non Условие для того, чтобы люди использовали то, что вы построили Анкет И эта длинная Readme не была хорошей документацией, учитывая размер, в который направлялся Бокадильо.
Тогда это поразило меня-много крупномасштабных инструментов, библиотеков или фреймворков с открытым исходным кодом, которые я использую и любите, есть Сайт документации Анкет
Это то, что привело меня к выпуску v0.5 18 ноября с крупным дополнением: совершенно новый сайт документов , который я построил с Vuepress и размещен на GitHub Pages Анкет
По необходимости хорошей документации – Джо Манкусо, создатель Масонит Структура, однажды поделилась со мной этим замечательным советом:
Если это не задокументировано, его не существует.
Вот почему я очень серьезно относимся к документации и стараюсь сделать ее настолько хорошей, насколько это возможно, и вы должны с каждый Проект, над которым вы работаете.
Затем, создавая сайт DOCS, я сделал то, что сейчас считаю очень важным шагом для любой Проект с открытым исходным кодом …
Позволить Бокадилло стоять на своих ногах
Прежде чем выпустить документы, я перенес Бокадилло из личного репо в свою собственную организацию GitHub, а именно Bocadilloproject Анкет
Основная мотивация в то время заключалась в том, что я мог использовать домен страниц организации GitHub bocadilloproject.github.io
для документации. Это определенно более чище и доступнее, чем Florimondmanca.github.io/bocadillo
Анкет 🙃
Тем не менее, это имело положительный эффект от дачи Бокадильо собственное онлайн -пространство Анкет Это больше не было связано с моей личной учетной записью GitHub – организация была новым домом для исходного кода Бокадильо.
Позже, когда я понял, что объявления Bocadillo захватывают мою личную учетную запись в Твиттере, я создал специальную учетную запись в Твиттере.
Дело: Важно, чтобы проект с открытым исходным кодом жил за пределами его создателей .
Теперь, вернувшись к истории – 18 ноября у меня был сайт DOCS, который люди могли посетить. Что дальше?
Открытие процесса разработки
До 20 ноября то, как я следил за отставанием и прогрессом, был через частную доску Trello.
Это было очень практично для меня: я использую Trello для множества вещей. Но я понял, что Люди, посещающие репо, не имели видимости на том, что будет дальше, или возможными способами внести свой вклад.
Фактически, с точки зрения посетителя, я думаю, что репо выглядело как любой другой личный проект – никаких проблем, никаких PRS, всего лишь тонны коммитов от одного человека – и не Направленное на сообщество усилия, то есть то, чем бы я хотел стать Бокадильо.
Итак, согласно совету моего близкого друга и вдохновленным Эта статья Дханраджа Ачарья , Я решил Откройте процесс разработки Анкет
Я преобразовал все свои карты Trello в проблемы GitHub и добавил значимые этикетки (см. SANE GITHUB Метки Дэйв Ланни) и описание им. Я думаю, что репо теперь обеспечивает лучшую видимость в проекте и чувствует себя более обнадеживающим для новичков.
Я узнал из этого, что Открытый исходный код – это не только открытие исходного кода . Вы должны быть открыты и о процессе разработки.
Теперь я надеялся, что с репо, заполненным проблемами и общественными PR, это привлечет своих первых участников с открытым исходным кодом.
Оповещение о спойлере: это произошло!
Ура! Первые участники!
Примерно в то же время, когда Бокадильо вырос в размерах, я начал чувствовать необходимость в внешних советах. Я боялся, что мог принять плохие дизайнерские решения или что код мог бы быть лучше. Короче, Мне нужны были участники Анкет
К счастью, все еще 20 ноября, я имел большое удовольствие приветствовать первый вклад в репо в форме Алина Панайту, комментирующих PR #3 Для новой функции “Hooks”.
Алин помог мне исправить несколько вещей о этой функции, которую я изначально не был уверен в себе, и предложил способы, которыми ее можно было сделать еще более полезным. Он зашел так далеко, как разбрызгивал репо и отправил мне различие, демонстрируя исправление.
Позже, 23 ноября, Алин слиял свой первый пиар. Бокадилло официально получил своего первого участника! 🎉
Как бы я ни был эмоциональным, я был тронут.
Еще больше, что Алин действительно торчал. В выпуске v0.7 Алин внес 2 новые функции (GZIP и ASGI Middleware), с кодом-точнее время, вероятно, менее чем на несколько часов. Спасибо, Алин, отличные вещи!
Вход в режим обслуживания
С конца ноября и далее темп проекта немного замедлился. С одной стороны, я немного спешил с школьными проектами и экзаменами, которые были на повестке дня, но это не объяснило все. Я испытывал что -то еще.
Вначале вы видите, что совершение кода Бокадильо было очень легко. Было едва ли какое -либо наследие, так что это было захватывающе И у меня было множество идей. Все осталось сделать.
Но по мере того, как было добавлено больше функций, он начал чувствовать себя тяжелее. Релизы заняли больше времени, чтобы выйти – теперь занимая неделю вместо дней. Тестирование, рефакторирование и документация стали основными частями процесса разработки. Кроме того, теперь я также управлял присутствием в Интернете Бокадильо.
Не поймите меня неправильно – я не жалуюсь. На самом деле, мне нравится, что я должен пройти мимо первоначального возбуждения и вошел Режим обслуживания Анкет Кроме того, это определенно нормальный сдвиг для проекта, который пытается набрать импульс и обратиться к сообществу.
Теперь я наслаждаюсь тем, что работа над Бокадильо не должна брать меня ночи, как раньше. Что приводит меня к следующему пункту …
Это не спринт, это марафон
Недавно я заметил, что мое отношение к проекту изменилось.
Вместо того, чтобы спешить, чтобы получить функции как можно быстрее, и надеясь, что всплеск пользователей заглянет, отправит звезды в массовом будет медленным.
Это связано с тем фактом, что Поддержание проекта с открытым исходным кодом – марафон, а не спринт Анкет
Ставьте иначе, Успех всегда должен быть побочным продуктом, а не целью Анкет
Вы заметили, что в утверждении целей Bocadillo не упоминается слава, ни пороговое число пользователей. В нем говорится, что я надеюсь, что Бокадильо сможет помочь некоторые люди Решите проблемы Анкет Если это так, по крайней мере, для одного человека, я рассмотрю это победой. Если это станет так для многих людей, я буду рассматривать это только как побочный эффект.
Это для истории, стоящей за строительством Бокадильо! Как вы, возможно, отмечали из этих дискуссий, я до сих пор любил этот опыт, и я на самом деле убежден, что принял правильное решение, когда решил пройти мимо страха перед суждением и создать свою собственную веб -структуру. Что приводит меня к последнему разделу этого блога.
Советы, чтобы начать свой собственный проект с открытым исходным кодом
Если есть одна вещь, которую я хочу, чтобы вы отняли от прочтения этой статьи, это должно быть следующим образом:
Открытый исходный код – это отличный способ учиться. Вы должны начать свой собственный проект сегодня!
«Звучит великолепно», вы думаете, – но как мне продолжить? Есть ли у вас какие-либо советы?”
Ну, у меня есть некоторые. 😋
В первую очередь, Узнайте столько, сколько сможете, и убедитесь, что наслаждайся Анкет Открытый исходный код никогда не должен становиться бременем, и если это так, попытайтесь найти способы, которыми вы можете начать делегировать или полагаться на сообщество, чтобы продвигать проект вперед.
В остальном, приготовьте себя – категоризированные пулевые очки впереди!
Примечание : Если вы не уверены в том, как реализовать какой -либо из следующих элементов и/или хотите увидеть, как я использовал или настроил инструменты на практике, не стесняйтесь проверять Репо Бокадильо И просто скопируйте заинтересованные вами биты – в конце концов, это открытый исходный код!
Определение проекта
- Решите Что Вы хотите построить.
- Решите Почему Вы хотите построить его – хотя это не должно быть глубоким или абстрактным, обладает четким источником мотивации.
- Подумайте о объем и Философия дизайна : Это поможет принимать обоснованные дизайнерские решения и предотвратить ползучесть.
- Решите Кто Вы нацелены: ваши пользователи веб -разработчики, Sys Admins, менеджеры проектов …?
- Явно определите Ожидания пользователей навыков : С чем должны быть знакомы ваши пользователи и сколько?
- Решите Как Вы будете распространять свой проект (например, пакет PYPI).
Маркетинговые коммуникации
- Построить идентичность : по крайней мере имя и слоган. Сделайте их короткими, запоминающимися и запоминающимися. Продемонстрируйте их повсюду (репо, Pypi Page, Docs сайт…).
- Создать Визуальная идентичность : Это ваш логотип и графическая хартия. Лучше иметь нормальный временный логотип, чем вообще без логотипа.
- Решите на точка входа , то есть естественное онлайн -место, где люди могут искать ваш проект. Это может быть репо Github, сайт документов или что -то еще, но он должен существовать. (Для Бокадильо, я считаю, что это сайт документов.)
- Дайте ваш проект собственная жизнь : Рекомендуется создать отдельную организацию GitHub или аккаунт в социальных сетях.
- Используйте социальные сети Чтобы сообщить новости, анноумы и советы, и начать собирать людей вокруг проекта (я использую Twitter для этого).
- Предоставьте людям, чтобы люди могли видеть Куда ты направляешься в – Дорожная карта, список вопросов, «неизданный» раздел в измене и т. Д.
Сообщество
- Реализация Лучшие практики с открытым исходным кодом : Правильный Readme , внесение руководящих принципов, кодекс поведения, шаблоны выпуска/PR и т. Д. (Используйте контрольный список GitHub!). Это сделает репо более гостеприимным для потенциальных участников и покажет, что вы заботитесь о сообществе.
- Быть поддерживающим и добрым другим. Спасибо за их вопросы. Предоставить полезные ресурсы.
- Это может быть хорошей идеей, чтобы создать место для неформальных дискуссий. Я недавно решил поэкспериментировать с Друттер чат.
Управление проектом
- Используйте GitHub выпуски Чтобы перечислить ваш тодо. Таким образом, задаваясь вопросом, над чем вы должны работать дальше, просто возьмите билет и поработайте над ним!
- Установите значимые этикетки проблемы (см. SANE GITHUB Метки )
- Вы также можете настроить GitHub Project Чтобы показать свои проблемы и PRS в доске Канбан.
Качество кода
- Установите CI/CD Pipeline Анкет
- Быть неумолимым на Тесты – Помимо обеспечения того, чтобы ваше программное обеспечение работало так, как это предназначено, они помогут вам и всем поймать регрессии и быть уверенными при внесении изменений (я использую pytest в качестве структуры тестирования).
- Мера тестовое покрытие (Я использую pytest-cov для pytest/coverge.py Integration и Codecov для отчетов о покрытии).
- Применять это PRS пройти тесты перед слиянием.
- Каждый PR должен содержать все 3 элемента: код, тесты и документы.
- Используйте Форматер кода Чтобы уменьшить шум в стиле синтаксиса/кода в обзорах кода (я использую самоуверенную форму Если у вас нет других рецензентов, Сделайте PRS для себя , пусть они успокоились и вернутся позже. Проще увидеть, является ли код в беспорядке через несколько дней.
Документация
- Напишите ясное и информированное Readme По крайней мере, с описанием проекта, установите инструкции, быстрый пример старта и ссылку на документы или где -то, где пользователи могут узнать больше.
- Держите изменену , вы поблагодарите себя позже.
- Построить сайт документов Если вы строите больше, чем простая библиотека (я использую Вуэпресс как статический генератор сайта).
- Структура ваших документов : Учебные пособия, дискуссии, справки, ссылка (совет: я использую pydocmd Чтобы генерировать ссылку на API Markdown прямо из моего Python Docstrings).
- Помните: Если это не задокументировано, его не существует Анкет
- Добавить симпатичный Значки к вашему чтению (например, с shields.io ).
Версия и выпуск
- Используйте Семантическое управление версией (См. semver ).
- Автоматизировать Версия удара с такими инструментами, как Bumpversion Анкет
- Автоматизируйте Выпустите трубопровод Анкет Я использую ТРЕВИСКИ Чтобы выпустить Tagged Commits в PYPI.
- Настройка Специальные филиалы выпуска Анкет Например, я использую
релиз/документы
для развертывания документов иВыпуск/Тест
Для выпуска для тестирования PYPI.
Достижение разблокировано?
Этот пост теперь подходит к концу, так что давайте завершим!
Хотя Bocadillo начинал для меня, чтобы узнать больше о внутренних интернатах веб -структуры, Он превратился в полномасштабный проект с открытым исходным кодом Анкет
Со всеми усилиями, которые уже пошли на создание структуры, документировали ее, настройку репо и управляющие релизы, Теперь я начинаю думать о себе как о содействии открытым исходным кодам – Что я думаю, очень обогащающий опыт!
Несмотря на то, что я горжусь тем, чего я достиг до сих пор, Все это также очень унизительно . Теперь я понимаю, насколько сложным может быть управление проектом с открытым исходным кодом, не говоря уже о создании сообщества вокруг него. Это тяжело!
Тем не менее, я верю, что вы должны пойти на это и Начните свой собственный проект с открытым исходным кодом Анкет Это может быть простой инструмент или библиотека или целая платформа приложения – в любом случае, вы многому научиться в процессе.
Конечно, не стесняйтесь проверить Bocadillo Repo Если вы ищете идеи о структурировании проекта с открытым исходным кодом или настройкой инструментов. Есть также множество отличных ресурсов на opensource.guide , так что проверьте этот сайт тоже!
Спасибо, что прочитали эту статью! Как всегда, отзывы очень ценится. В частности, я бы хотел услышать Ваши собственные истории о поддержании проектов с открытым исходным кодом Анкет Кроме того, если случайно эта статья вдохновила вас, обязательно бросьте комментарий! ❣ ️
Наилучшие пожелания для этого праздничного сезона всем вам. ✌
Оставайся на связи!
Если вам понравился этот пост, вы можете Найди меня в Твиттере Для обновлений, объявлений и новостей. 🐤
Оригинал: “https://dev.to/bocadillo/how-i-built-a-python-web-framework-and-became-an-open-source-maintainer-3okd”