В 2000-2002 годах я занимался разработкой поисковых систем для российских музеев. Lucene тогда уже был, а вот опыта у меня не было, поэтому я реализовал обратный индекс поверх реляционной базы данных и всё отлично работало. Сейчас я бы использовал Lucene и в те времена мог сравнительно легко внести свой вклад в его развитие. А сейчас мне понадобился Костя Периков, чтобы поставить задачу, пара месяцев разработки, помощь коллег, чтобы причесать получившийся код, попытка подать доклад на JPoint, чтобы программный комитет помог мне трезво переосмыслить получившийся результат и переписать код ещё раз, и всё равно после этого нужно было
исправить множество замечаний от разработчиков Lucene. И несмотря на то, что участие в разработке Lucene очень важно для нашей компании, даже
статью сделали в корпоративном блоге, всё равно шансы включить мой код в Lucene исчезающе малы, потому что задача слишком специфическая, а решение довольно тяжёлое.
Недавно я начал изучать Kotlin, поднял сервис на Spring 5, попробовал интеграцию с Cassandra, попробовал поработать с PostgreSQL, столкнулся с библиотекой
Exposed - опа, а она под Mac не собирается. По-моему, трудно представить более очевидную проблему, которую нужно решать. Оказалось, что MySQL на Mac при создании таблицы может дать ей имя с большими и маленькими буквами, но при первом обращении все буквы становятся маленькими. Интерфейс JDBC явно не позволяет корректно разрешить эту проблему, но тесты довольно просто починить, если использовать конструкцию DROP TABLE IF EXISTS. Однако, так не умеет Oracle, а тестирование Oracle - это отдельная проблема, потому что нужно поднимать Docker и всё такое. Итого, получилась одна неделя от создания
бага до его закрытия. Если бы год назад мне кто-нибудь сказал, что я сделаю коммит в один проект с Максимом Шафировым, я бы просто немного поплакал в сторонке.
Если вы хотите внести свой вклад в популярный проект - самое время обратить внимание на Kotlin, через 5 лет коммитить в основные библиотеки смогут только избранные. И это отличный способ изучить перспективный язык программирования.