Много кто на Хабре знает мое имя из-за моего проекта dnevniklib - Python библиотека для работы с API МЭШ (Московская Электронная Школа). На пике популярности ее скачали с PyPI 3000 раз! Данный проект являлся моей моей визитной карточкой, многие мои знакомые, которые как и я програмисты, нашли меня именно через мой Github. Да, это было круто, но потом произошло затишье... Я кинул проект в архив и он до сих пор там валяется. Но почему?
Эта статья расскажет о чем сразу стоит позаботится, прежде чем выпускать какой-либо продукт (даже open source) в main ветку
1. Документация
Главная боль всех времен - хороший инструмент без документации. Я когда писал библиотеку, думал что все будет интуитивно и понятно, но потом решил все таки написать хотя бы небольшую. Вот она - документация мечты!. Вам тоже не нравится? Как будто создатель забил на проект и просто кинул все на произвол судьбы (так и было). Про первую версию я вообще молчу, там документация была вложена в README репозитория.
Если кратко: делай документацию к своему детищу даже на ранних стадиях. Иначе проект умрет, или твоя личка будет забита вопросами
2. Сам стиль написания кода
До dnevniklib я разве что тыкал по репозиторию FastAPI. Я не понимал что и как надо делать, чтобы всем было удобно и понятно. Я даже не знал значение слова "архитектура". Для меня это было что-то из мира строительства. Как выглядело взаимодействие с моей библиотекой?
Так, надо создать объект класса Student. Добавляем токен. Ура! Работает! Так, хочу получить оценки. Что? Надо новый класс делать? Хорошо, сейчас сделаем. Делаем объект класса Marks, который принимает объект класса Student. Как сюда дату загружать? Другой класс нужен???
И так строилась вся архитектура моей библиотеки. Костыль костыльный на костыле костыльном. Как же больно щас все это читать ?
Для примера можете глянуть класс Marks, в котором видно как я "старался".
Также, хочу показать как у МЭШа выглядит response при запросе Д/З
{
"type": "oo",
"description": "Выучить орфоэпические нормы в именах существительных (прикреплено)",
"comments": [],
"materials": [
{
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"type": "attachments",
"selected_mode": null,
"type_name": "Прочее",
"id": 100000001,
"urls": [
{
"url": "https://example.com/files/suschestvitelnoe.pdf",
"type": "file_link"
}
],
"description": "Учебный материал по орфоэпическим нормам.",
"content_type": "application/pdf",
"title": "Существительное.pdf",
"action_id": 2,
"action_name": "Изучить"
}
],
"homework": "Выучить орфоэпические нормы в именах существительных (прикреплено)",
"homework_entry_student_id": 999999999,
"attachments": [],
"subject_id": 12345678,
"group_id": 87654321,
"date": "2025-10-13",
"date_assigned_on": "2025-10-07",
"subject_name": "Русский язык",
"lesson_date_time": "2025-10-13T00:00:00",
"is_done": false,
"has_teacher_answer": false,
"homework_id": 987654321,
"homework_entry_id": 123456789,
"homework_created_at": "2025-10-07 15:20:00",
"homework_updated_at": "2025-10-07 15:20:00",
"written_answer": null,
"date_prepared_for": "2025-10-13T00:00:00"
}
И каким я его возвращал юзеру. К слову, их API никак не поменялось))
Кратко: читай код других библиотек, их все таки не дураки пишут
3. Комьюнити
Мой проект - библиотека для школьного дневника. Исходя из этого можно понять, что основная масса ее пользователей будут школьниками. Мне писало пару человек, которые вели себя неподобающе со мной, как будто я их друг. Я старался помогать этим людям, но когда их запросы выходили за рамки моего проекта, я отправлял их в Google.
Мне учитель сказал написать бота для WhatsApp с МЭШ. Как его поставить на сервер?
Я хочу написать бота, который получает ответы из тестов МЭШ
Что делать если мой бот ломается?
Все эти люди получали ссылку на Google. Может это неправильно, ведь я сам был таким и мне не у кого было спросить что либо, но у меня не бесконечное время, чтобы объяснять человеку как работает Docker и какие кнопки нужно кликать на клавиатуре чтобы его установить.
Кратко: тут нечего сказать, проще прочитать
Спасибо за внимание! Еще увидимся
SystemSoft
Понимаю тебя, тоже такой был: как почитаю свой проект с неправильной архитектурой так сразу начну разочаровываться. Смотрю на код своего проекта спустя долгой разработки (на днях закончилась) понял что код рабочий, но написан как... как не надо. Но почему же так? Потому что когда хочешь добавить новый функционал, то он несовместим с другим, и тогда начинаешь писать костыль, лишь бы заработало. Вроде сначала понимаешь, но спустя пару недель думаешь "это как так работает?". Я думаю для восьмиклассников в начале это нормально, я сам человек не старше.
apevzner
Если в комнате никогда не убираться, зарастёшь грязью. Вот так и в коде. Надо время от времени наводить порядок, даже если код работает.