Ну, расклад таков. Самое лучшее ПО для обучение это то, которое нужно
лично вам. Именно если оно нужно вам, тогда вы захотите его
поддерживать, пройдёте пару стадий рефакторинга, возможно перепишите
пару раз. Не подряд, конечно, через определённые промежутки времени,
перемежающиеся другими проектами, возможно даже по работе.
Посморите на успешнейшие Опен/Фри Сурс проекты -- их делали люди для
решения какой-то своей локальной задачи, то есть они даже не думали
что получиться что-то качественное, за них это сделали
контрибуторы.. Ох, что то не туда я.
Никто не напишет что вам нужно за вас. Даже сами мысли об этом есть
всецело продукт современной системы образования, где человек не
понимает до конца (хорошо, до необходимой ему степени) почему ему
нужно знать историю античности, а не как понтануться перед девками из
класса.
Для вновь прибывающих я бы строго рекомендовал бы пройтись по чек
листу:
1. Подумать о сферах ваших интересов
2. Найти готовые проекты с открытым кодом по вашим интересам из
пункта 1.
3. Попытайтесь проект запустить и использовать, если считаете, можете
найти лучше, возвращайтесь на пункт 2.
4. Найти у этого проекта issue список, там, где собраны проблемы и
баги проекта ИЛИ
5. Найти у этого проекта TODO лист, где написаны пожелания по
фичам. На гитхабе это всё в issues обычно хранят.
6. Находите ту фичу, что сами бы хотели иметь или тот баг, который вас
раздражает.
7. Пытаетесь понять какая подсистема программы отвечает за реализацию
этой фичи.
8. Начинайте ковырять(по-христианске "хакать") эту подсистему. Как
именно ковырять есть штука сложная и обычно приходит с опытом,
обычно с этим помогает документация если ещё ничего не понятно.
9. Оформляете результат своих ковыряний в виде патча и отправляете его
разработчикам. Это могут быть "пул реквесты", но я предпочитаю
пользоваться проектами, ведущие свою разработку через почтовую
рассылку.
На работе сразу вам никто сразу не даст писать проект с 0, особенно