После публикации нашего пятничного дайджеста ситуация c Project Jigsaw стала ещё острее. Напомним содержание предыдущих серий: IBM и Red Hat решили на стадии Public Review голосовать против Jigsaw («в проекте требуются значительные изменения»), а Марк Рейнхольд решил все равно выставить проект на голосование в текущем виде. Что произошло после этого?
Сначала Рейнхольд опубликовал открытое письмо к участникам исполнительного комитета JCP, которым предстояло голосовать. Краткое содержание его текста:
- Jigsaw в текущем виде соответствует изначально заявленной цели, осталось кое-что допилить, но это успеваем сделать: например, разбираемся с командой Maven, и они довольны.
- Red Hat против, потому что вместо модульной системы, о которой изначально договаривались, хотят «метасистему» для подключения разных (что играет на руку Red Hat JBoss).
- IBM во время работы над JSR молчали, а теперь внезапно против и стали требовать то, что уже обсудили без них.
- Лучшее — враг хорошего; стоит выпустить что есть, посмотреть на результат и итеративно улучшать, а не погрязнуть на годы в полировке и получить перегруженную систему, которой никто не будет пользоваться.
- Главный аргумент IBM против Jigsaw — «отсутствие консенсуса», однако голосовать против по такой причине означает голосовать против самого Java Community Process, потому что там и не требуется полный консенсус, а то всякие «эксперты» в своих собственных интересах начнут тормозить прогресс.
При всей стройности слов Рейнхольда стоит помнить, в какой ситуации он их пишет. Выход его детища переносится уже много лет: изначально предполагалось, что Jigsaw станет частью Java 7 (вышедшей ещё в 2011-м). К Java 9 всё пришло в статусе «ну вот тут-то уж точно надо», и модульная система стала главной фичей новой версии. Из-за сложностей в работе над ней выход самой Java 9 переносился — тот же самый Рейнхольд и вносил предложение отложить релиз до июля, чтобы сделать всё как следует. И теперь, когда казалось, что сроки наконец будут соблюдены и труд многих лет скоро выйдет-таки, возникают новые возражения. В такой ситуации, когда Рейнхольд заявляет «компании отстаивают свои личные интересы вместо интересов всего Java-сообщества», не факт, что он сам не делает то же самое.
Мнения известных участников сообщества разделились. Например, Николай Парлог, пишущий сейчас книгу о Java 9, оказался в целом согласен с Рейнхольдом:
Reading @mreinhold's open letter I find myself nodding a lot. I think a few more months might do good but by and large #JPMS is ready.
— Nicolai Parlog (@nipafx) May 5, 2017
А вот Милен Дьянков (Liferay), ранее выступавший с докладами о модулях в Java, придерживается совсем другого мнения, разделяя «разработчиков, которые искренне считают, что JPMS может упростить модульность» и «разработчиков, которые уже достаточно подробно с ней разбирались, чтобы заметить проблемы, которые архитекторы платформы не хотят видеть». По его словам, упрёки «вы не за интересы разработчиков» странно звучат от корпоративного гиганта Oracle, а Рейнхольд высокомерно пытается выставить идиотами всех, кто не согласен с ним. В комментариях тот же Парлог заметил, что Дьянков некорректно вырвал цитату Рейнхольда из контекста — в общем, обсуждение важного технического вопроса начинает напоминать все остальные интернет-споры в мире. Осталось узнать, какая сторона первой сравнит другую с Гитлером.
А 8 мая закончился срок голосования по Public Review — и оказалось, что из 23 участников 13 проголосовали «против». Для того, чтобы проект перешёл на следующую стадию Final Review, требовалось две трети голосов, а теперь в течение 30 дней может быть представлена его обновлённая версия для повторного Public Review.
Можно было подумать, что в жёстком противостоянии Рейнхольда с IBM / Red Hat большинство участников однозначно заняло вторую сторону, однако позиция многих из них мягче. Например, London Java Community написали пост с основной мыслью «мы не считаем, что с проектом что-то масштабно не так, и не хотим масштабно его задерживать, а просто считаем, что дополнительные 30 дней помогут разрешить остающиеся разногласия, и после этого радостно проголосуем «за»».
Некоторые другие проголосовавшие «против» также снабдили это комментариями о том, что видят большой прогресс проекта в последнее время и считают, что дополнительный месяц позволит оказаться куда ближе к консенсусу. Общее ощущение от таких комментариев — «мы просто недообсудили, давайте ещё немного поговорим, и всё хорошо будет».
В результате многие оценивают результаты голосования не как «всё плохо», а как «ну, дедлайн немного отодвинулся»:
Lay down & relax! The NO for JSR #376 https://t.co/hxUkzs0wLD isn't the end. It's just an extended deadline. We just had that for JavaOne 🙂
— Volker Simonis (@volker_simonis) May 9, 2017
Однако не все видят будущее настолько безоблачным. Сегодня Рафаэль Уинтерхалтер (выступавший у нас на Joker 2016) опубликовал подробный пост со своим мнением. Там он среди прочего пишет, что, пока многие рассчитывают достичь консенсуса по оставшимся вопросам, в этих вопросах «консенсус возможен только в случае, если одна сторона вообще откажется от своей позиции». Он надеется, что Oracle не окажется этой стороной и на начнёт добавлять проекту новые цели просто ради успеха повторного голосования. На пост Рафаэля ссылается и другой спикер Joker 2016 Сандер Мак — автор готовящейся книги «Java 9 Modularity», пристально следящий за темой.
Будем следить за развитием событий — а пока уверенно скажем о будущем только то, что в пятницу эту историю обсудят в «Разборе Полётов», и к такому выпуску подкаста наверняка можно готовить попкорн вёдрами. То есть пока что главная мораль истории такая: сейчас самое время вкладываться в попкорн.
@nipafx Wild speculation is the fuel of popcorn economy. Buy. Shares. In. Popcorn.
— Aleksey Shipilëv (@shipilev) May 9, 2017
- Rafael WinterhalterRafael works as a software consultant in Oslo, Norway. He is a proponent of static typing and a JVM enthusiast with particular interest in code instrumentation, concurrency and functional programming. Rafael blogs about software development, regularly presents at conferences and was pronounced a JavaOne Rock Star. When coding outside of his work place, he contributes to a wide range of open source projects and often works on Byte Buddy, a library for simple runtime code generation for the Java virtual machine. For his work, Rafael received a Duke's Choice award and was elected a Java Champion. @rafaelcodes
- Volker SimonisWorks for SAP in the SAP JVM Technology group. OpenJDK contributor from the very beginning and helped SAP and the SAP JVM team engage in the OpenJDK project. Project lead of the OpenJDK PowerPC/AIX porting project, a JDK8 committer and JDK9 reviewer.
- Sander MakCo-author of «Java 9 Modularity» book, Sander crafts scalable software at Luminis Technologies. With almost a decade of experience on the JVM platform, he specializes in modular Java and JavaScript development. Additionally, data analysis and machine learning are part of his ever growing list of interests. Sander loves sharing knowledge, for example through his blog at http://branchandbound.net. Furthermore, he speaks regularly at international developer conferences, sharing his passion for Java, alternative JVM languages and related technologies. @Sander_Mak