Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

installation and docker guide #261

Draft
wants to merge 77 commits into
base: master
Choose a base branch
from
Draft

installation and docker guide #261

wants to merge 77 commits into from

Conversation

alexey-pronkin
Copy link
Collaborator

@alexey-pronkin alexey-pronkin commented Nov 3, 2021

Планы изменились немного. Докер пока оставил для локальной разработки --stage dev, и для слушателей с минимальным набором пакетов, анакондой и jupyter-lab:

[] тесты для всех видов установок (gh-actions)
[] тест гайда на OSX
[] тест гайда на Linux
[] тест гайда на Windows
[] тест Docker
[] Перевод на русский

Закрывает/будет закрывать проблемы #230 #207

INSTALLATION.md Outdated

[_Jupyter book does not work with python 3.8+ on Windows_](https://github.com/jupyter/nbclient/issues/85), so for contributing use docker/WSL2 instead.

If packagin conflicts, then update conda:
Copy link
Collaborator Author

@alexey-pronkin alexey-pronkin Nov 3, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Packages

INSTALLATION.md Outdated Show resolved Hide resolved
INSTALLATION.md Outdated Show resolved Hide resolved
@SemyonSinchenko
Copy link
Collaborator

Вообще можно обсудить, может нам стоит вообще перейти на conda? Меня она просто бесит тем, что ей обязательно системный питон подменять - из-за этого на *nix пакетные менеджеры ломаются. Но я это переживу, если от этого всем станет смльно проще... Кажется, с conda в качестве основного менеджера тут было бы сильно меньше велосипедов.

@alexey-pronkin
Copy link
Collaborator Author

alexey-pronkin commented Nov 4, 2021

Я тоже думал об этом, но решение как-то разделить Software Development от создания контента для лекций и просмотра лекций мне кажется хорошей идеей, для последних двух кейсов использовать конду, для первого - poetry. У анаконды очень много недостатков, как в плане менеджера зависимостей, так и в плане тотальной помойки. По сравнению с poetry она пока что дно, плюс poetry активно развивается. Вроде как не нужно ей ничего заменять, сейчас она устанавливает вместе с собой свой отдельный пайтон и не меняет LC'ы по умолчанию, они вообще хотят перейти в сторону conda run -n env_name some_command

@SemyonSinchenko
Copy link
Collaborator

На *nix конда прописывает себя в .bashrc и всегда по умолчанию активируется ее окружение base вместо системного питона. Ну раньше так было и от этого неаозможно бвло избавиться (ну либо убрать ее из bashrc, но тогда и команда conda исчезала).

@SemyonSinchenko
Copy link
Collaborator

Просто учитывая то, что psi4 тоже только через conda собирается, я бы предложил заменить вообще poetry на conda.

@alexey-pronkin
Copy link
Collaborator Author

alexey-pronkin commented Nov 4, 2021

@SemyonSinchenko да, я тебя понял. Я о том, что в новых релизах они переделают это поведение, уже сделали .condarc и терминал по умолчанию будет открываться с окружением python из base только с командой conda init. Cейчас уже есть варианты с тем, чтобы при установке она ничего не прописывала bashrc (кроме как в PATH пути до bin/conda), по крайней мере в их докере ровно такое поведение и приходится использовать (и это супер правильно) conda run -n qmlcourse.ai python -m pip intall something или conda init && conda activate qmlcourse.ai && python -m pip intall something, в новых релизах будет изменено это поведение по умолчанию вроде как (если уже не) :) Так что стоит попробовать поставить на чистую, может уже все будет работать как предполагается.

@vvssttkk
Copy link
Member

vvssttkk commented Nov 4, 2021

@alexey-pronkin отметишь тогда ready for review когда можно будет уже смотреть

@vvssttkk
Copy link
Member

ввиду #296, psi4 тут не так важен, хорошо бы разобраться с #297
windows вообще оставить на потом

@alexey-pronkin
Copy link
Collaborator Author

Тут все работает, я детально прочитал про докер и у меня такое мнение, что докер тащить в CI сейчас не целесообразно, там они делают жёсткие ограничения, чтобы люди платили. По сути GitHub CI имеет те же возможности и сделан внутри также, тем более что уже почти починили psi4.
Основной contribution этого PR - детальная инструкция как можно альтернативно все поставить без пакетных менеджеров на английском в конду. У меня просто совсем нет времени, я хотел перевести на русский и расширить инструкцию для докера - как все запускать :)
Но прежде чем мерджить, я хочу закрыть #272 и сюда вмерджить, т.к. там добавляется один пакет (нужно будет поменять requirements*.txt тут) и он у меня локально конфликтует с тем, что сейчас в poetry lock :(
В #296 написал, что нужно местами поменять poetry install должен идти выше, чем conda install и нужно ставить ночную сборку psi, она не конфликтует

@vvssttkk
Copy link
Member

можем это на следующий запуск сделать, сейчас не горит

@vvssttkk
Copy link
Member

вот тут вообще забыл к чему в итоге пришли. возможно стоит отдельно обговорить и разбить на малые задачи. от win вообще пока отказаться

@vvssttkk
Copy link
Member

vvssttkk commented Jun 9, 2022

предлагаю закрыть этот pr: от win отказались, docker тянуть сейчас не охота. если потребуется, то возобновим ну или наработки возьмем

@alexey-pronkin
Copy link
Collaborator Author

alexey-pronkin commented Jun 12, 2022

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

@vvssttkk
Copy link
Member

vvssttkk commented Jun 12, 2022

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

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

@alexey-pronkin
Copy link
Collaborator Author

Просто не хочу чтобы фичебранчи закрылись. Сам файл докера сделаю в другой ветке docker2, тут документацию к нему опишу в виде урока и протестирую винду. Не закрывай пока, сделаю ребейз и смерджу конфликты

@vvssttkk
Copy link
Member

Просто не хочу чтобы фичебранчи закрылись. Сам файл докера сделаю в другой ветке docker2, тут документацию к нему опишу в виде урока и протестирую винду. Не закрывай пока, сделаю ребейз и смерджу конфликты

win точно убираем сейчас, много гемора!
с docker если хочешь играйся, но смысла не вижу сейчас, тк всё на poetry заводится

@alexey-pronkin
Copy link
Collaborator Author

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

@vvssttkk
Copy link
Member

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

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

@vvssttkk
Copy link
Member

когда создашь новый pr, удали этот пж

@alexey-pronkin
Copy link
Collaborator Author

alexey-pronkin commented Jul 17, 2022

Спасибо за рефакторинг, годно. Я просто не хотел плодить пакеты, у меня на ноутбуке сейчас просто нехватает места для курса :)

@vvssttkk
Copy link
Member

Спасибо за рефакторинг, годно. Я просто не хотел плодить пакеты, у меня на ноутбуке сейчас просто нехватает места для курса :)

можешь использовать gh codespaces, он для открытых реп бесплатный и должно хватать
image

@alexey-pronkin
Copy link
Collaborator Author

Не увидел никаких фри вариантов
image
Кажется, что потом счет вышлют, я по старинке удалю что-то :)

@alexey-pronkin
Copy link
Collaborator Author

alexey-pronkin commented Jul 18, 2022

Я опять не донес суть, что requirements - это только для слушателей. Им не зачем конвертировать лекции, мы будем это делать и просто выкладывать в релизы или в ветку с артефактами. Анаконду хочу поддерживать как альтернативу, там очень много около "продакшен" в квантовом мире пакетов, которые поставить иначе тяжко. (Тем более, я на нее много времени убил и разобрался как там что работает, кроме кэширования :) ) Предлагаю тогда сделать два requirements как и было до того, как я отказался от этой идеи. Так же для разработки/CI, где есть всё и минимальный набор для слушателей. Норм?

@vvssttkk
Copy link
Member

Я опять не донес суть, что requirements - это только для слушателей. Им не зачем конвертировать лекции, мы будем это делать и просто выкладывать в релизы или в ветку с артефактами

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

Анаконду хочу поддерживать как альтернативу, там очень много около "продакшен" в квантовом мире пакетов, которые поставить иначе тяжко.

у нас сейчас проблема только с psi4, остально на простое окружение норм устанавливается

Предлагаю тогда сделать два requirements как и было до того, как я отказался от этой идеи

кратко напиши что для чего будет использоваться? у нас как бы ещё и poetry сверху, получается 3 файла, очень много для такого проекта

Так же для разработки/CI, где есть всё и минимальный набор для слушателей

для сего сейчас poetry используется ведь или ты хочешь изменить?

@alexey-pronkin
Copy link
Collaborator Author

alexey-pronkin commented Jul 18, 2022

вот это впервые слышу, нужно обдумать как лучше тогда это делать: чтобы студии знали что у нас есть такая возможность
Для этого я и начал переписывать лекции по установке, там много работы ещё.

Анаконду хочу поддерживать как альтернативу, там очень много около "продакшен" в квантовом мире пакетов, которые поставить иначе тяжко.
у нас сейчас проблема только с psi4, остально на простое окружение норм устанавливается

Это у нас проблема, а наша целевая аудитория - студенты, которых учат на anaconda, и в jupyter notebooks. Хотелось чтобы была эта фишечка кроссплатформенности, плюс дать студентам возможность поиграть, пописать код сразу в лекциях (может даже дойдут руки ради этого свой сервер сделать и поддерживать). Хочется смотреть что там студенты пробуют, где затыки.

Предлагаю тогда сделать два requirements как и было до того, как я отказался от этой идеи

кратко напиши что для чего будет использоваться? у нас как бы ещё и poetry сверху, получается 3 файла, очень много для такого проекта

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

Так же для разработки/CI, где есть всё и минимальный набор для слушателей

для сего сейчас poetry используется ведь или ты хочешь изменить?

Я хочу, чтобы было в идеале:
Три докера: poetry, anaconda full (суффикс dev), anaconda mini (суффикс listener пока)
Сайт на том, что будет в конкретный момент времени контрибьютерам проще поддерживать и дешевле (потому что пакеты развиваются, что-то умирает и тд. Это нормально)
И тесты на все остальное, которые запускаются когда бесплатные минуты/ресурсы ещё есть.

Мне не нравится, что мы удаляем контент не проверив никак то, а не был ли он уникален и полезен кому-то. То есть makefile тоже бы оставил как есть, хотя я в нем ничего не понимаю:)

@vvssttkk
Copy link
Member

Анаконду хочу поддерживать как альтернативу, там очень много около "продакшен" в квантовом мире пакетов, которые поставить иначе тяжко.

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

Это у нас проблема, а наша целевая аудитория - студенты, которых учат на anaconda, и в jupyter notebooks.

откуда ты взял что все на anaconda? jn с окружения запускается спокойно

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

зачем сервер? ты всё сильно усложняешь. для всего этого есть colab и пусть там играются сколько захотят + бесплатна видяха

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

это тебя seo сказали что сразу будем выше? даже если и так, то не шибко выше это будет и более того, в основном не для квантов

Три докера: poetry, anaconda full (суффикс dev), anaconda mini (суффикс listener пока)
Сайт на том, что будет в конкретный момент времени контрибьютерам проще поддерживать и дешевле (потому что пакеты развиваются, что-то умирает и тд. Это нормально)
И тесты на все остальное, которые запускаются когда бесплатные минуты/ресурсы ещё есть.

почему в текущем моменте не просто, посмотри на наши задачи по лекциям?
в текущей ситуации, краше будет все наши лекции запускать по кнопке в colab

Мне не нравится, что мы удаляем контент не проверив никак то, а не был ли он уникален и полезен кому-то. То есть makefile тоже бы оставил как есть, хотя я в нем ничего не понимаю:)

makefile никто не удаляет, с чего ты взял? он работает как и планировалось

@alexey-pronkin
Copy link
Collaborator Author

alexey-pronkin commented Jul 18, 2022

зачем сервер? ты всё сильно усложняешь. для всего этого есть colab и пусть там играются сколько захотят + бесплатна видяха

Хочется видеть, что люди вообще делают. А так это гугл будет смотреть 😁

@vvssttkk
Copy link
Member

vvssttkk commented Jul 18, 2022

зачем сервер? ты всё сильно усложняешь. для всего этого есть colab и пусть там играются сколько захотят + бесплатна видяха

Хочется видеть, что люди вообще делают. А так это гугл будет смотреть 😁

у нас есть аналитика на просмотры лекций, это уже много о чём говорит, на ретро это обсуждали

то что ты хочешь норм идея, но одним pr не решится и нужно садиться делать карту

@alexey-pronkin
Copy link
Collaborator Author

alexey-pronkin commented Jul 19, 2022

Да, это не тут. Но скрипты я делаю под эту идею. Просто описал в общем, что хотелось бы получить в конце.

Короче, тут на выходных, если будет время засяду, надо тесты доделать и прогнать хотя бы локально, плюс на русский перевести. По неймингу много вопросов, как лучше назвать минимальный набор minimal или listener? Хочется чтобы интуитивно люди понимали, что если им только посмотреть, то устанавливайте именно это...

@vvssttkk
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request lecture next-run Issue for the next run of the course
Projects
Status: to do
Development

Successfully merging this pull request may close these issues.

3 participants