Данный пост на самом деле является инициатором еще одного, который уже выходил ранее. Меня на самом удивило, что о такой интересной вещи, как Mylyn, так мало написано на хабре и мне бы хотелось немного это исправить. Под катом перевод достаточно интересной, на мой взгляд, статьи. Надеюсь на интересное обсуждение.
Современные среды разработки подарили множество средств для ускоренной работы, когда множество действий можно делать всего пальцем. Интеграция редакторов и компиляторов для самых разнообразных языков, средства для работы с базами данных, инструменты разработки специфичные для того или иного фреймворка, а так же многие другие являются уже привычными для нас и основаны на более мелких, но ключевых вещах. Но зачастую в момент интеграции забывают о ключевой части, о конечном пользователе – разработчике.
Созданные на сегодняшний день различные инструменты разработки, с одной стороны надежно работающие, а с другой, не грамотно встроенные в интерфейс, помогают разработчику быть более продуктивным. Тем не менее, с ростом сложности интегрированных средств разработки, только наличие подобных небольших инструментов помогают ориентироваться в возможностях этих систем. В связи с этим современным разработчикам необходима такая среда, которая позволит сосредоточиться только на тех артефактах, которые представляют интерес для пользователя, и, кроме этого, будет отображать только тот функционал системы, который действительно важен пользователю. И здесь на сцене появляется Eclipse и плагин под названием Mylar, позднее переименованный в Mylyn. Mylyn меняет принцип разработки программного обеспечения следующим образом. Вместо того чтобы устанавливать массу инструментов для работы с артефактами, возникающими в процессе разработки, и использовать постфактум, Mylyn помогает обрабатывать эти артефакты в момент создания.
Итак, закрепив эту ключевую мысль в голове, перейдем к более детальному описанию возможностей Mylyn.
Номер раз
Mylyn позволяет вам сконцентрироваться на ваших задачах
Чтобы ощутить всю мощь Mylyn, вам нужно все ваши активности (как связанные с разработкой, так и непрофильные) переработать в задачи. Каждая задача содержит в себе небольшую часть всей работы, которая будет иметь конечный результат. Разумеется, вначале с формулировкой задач будут проблемы («Написать приложение» явно не лучший вариант, так как неясно, каким должно быть следующее действие), но со временем, придет опыт, и задачи станут более четкими («Поменять форму кнопки с квадрата на круг»). Подобное саморазвитие связано с тем, что вам самим становится проще выполнять и планировать задачи, которые сформулированы более грамотно (в принципе человек бессознательно стремится к подобному планированию деятельности). Понятное дело, что все задачи будут сформулированы по-разному, но именно наиболее четко сформулированные задачи показывают, насколько эффективен Mylyn.
Еще одно преимущество задач – они показывают, в каком состоянии находится работа. Всегда можно посмотреть, что уже сделано, а что осталось. Возможность фильтрации задач по типу поможет определить то же самое, но уже для какого-то конкретного направления. В то время как фильтрация по приоритетности показывает, как много ключевых задач было сделано. (рис. 1)
Номер два.
Mylyn показывает лишь то, что вам необходимо
В то время как вы находитесь в своем рабочем пространстве, Mylyn ведет запись всех ваших действий, как например редактирование файлов, классов, конкретных методов и так далее. Таким образом, каждый раз когда вы затрагиваете в ходе работы какой-то артефакт (открыв файл, отредактировав тип и так далее), Mylyn отметит данную активность, которая позволить ему организовать коллекцию все того, что вам будет интересно и необходимо. И уже в дальнейшем вы будете видеть только то, что касается сферы ваших интересов. В процессе роста количества артефактов, попадающих в эту сферу, будет меняться и их отображение, например, те классы и методы, с которыми вы работаете наиболее часто, будут выделены жирным.
Рисунок 2 показывает новую задачу, после открытия конкретного класса. Важно отметить, что в иерархическом списке (Package Explorer) показан только тот класс, который упоминается в задаче. Кроме этого, список методов (outline view) пуст, собственно, потому что еще не был затронут ни один и методов открытого класса.
На третьем рисунке показано то же самое рабочее пространство после небольших изменений, сделанных над классом. Метод drawImage() теперь виден как в иерархическом списке, так и в списке доступных методов. Как только будут изменены другие методы, они так же попадут в область видимости.
Существует и обратная реакция. Как только вы становитесь менее заинтересованным в артефакте, его выделение становится тусклым (из жирного переходит в нормальное, из нормального в серый), и постепенно артефакт пропадает из области видимости. Данный механизм основан на следующей точке зрения: если вы вносили изменение в артефакт, вы обязательно вернетесь к нему хотя бы еще раз. В дальнейшем, завершая задачу, вы возможно снова вернетесь к тем же артефактам, над которыми работали наиболее активно. Обратно так же верно: чем реже вы обращаетесь к артефакту, тем меньше будет необходимость в нем в будущем.
Данный режим с легкостью может быть отключен простым нажатием на кнопку «Focus on Active Task». Это сделано для того, чтобы вы могли найти артефакт, скрытый Mylyn, сделать его активным и вновь вернуться в прежний режим работы. Однако Java разработчики пользуются этим не так часто, в силу причин присущих Eclipse Java Development Tools (JDT), которые с легкостью позволяют просматривать родственные связи. Возможно так же отложить текущую задачу, с целью поработать над другими артефактами, или, например, другой задачей, и вернутся к первой.
Номер три.
Mylyn помнит,(что вы делали прошлым летом — прим. перевод.) что вы делали, пока переключались между задачами.
На следующих двух картинках можно видеть, как выглядит рабочее пространство во время работы над багами Eclipse: 138600 и 164658. Разница видна невооруженным глазом. Таким образом, мы подошли к еще одной важной особенности Mylyn: сохранение конкретного рабочего контекста для конкретной задачи.
Таким образом, переключаясь между задачами, вы будете видеть только те артефакты, которые касаются только этой задачей. Важно, что только одна задача может иметь статус активной, но никто не мешает переключаться между задачами. Задачу можно сделать активной массой способов: через выпадающее меню в редакторе задач, с помощью работы с записью в меню «Navigate» или нажатием на первую колонку строке, где описана данная задача. Чтобы все было совсем просто, вы можете переключаться между задачами используя выпадающее меню, появляющееся при нажатии на заголовок вкладки “Task List”, как показано на рисунке 6.
Название текущей активной задачи видно в верхней части вкладки “Task List”, а так же выделено жирным в общем списке задач.
Управляя контекстом для каждой задачи, Mylyn позволяет разработчику сфокусировать все свое внимание на хорошо сформулированной задаче и потратить как можно меньше времени, для переключения между этими задачами. Другими словами: как только вы переключились на другую задачу, вы видите тот материал, с которым надо работать. И никаких лишних временных затрат.
Номер четыре
Mylyn может подцепляться к системам управления
На сайте Mylyn помимо всего прочего можно найти плагины для интеграции с Bugzilla, JIRA, и Trac. Кроме того, есть возможности интегрировать Mylyn с XPlannerи другими подобными сервисами. Такой функционал позволяет управлять задачами вне сред разработки, а также видеть их другим разработчикам.
Например на рисунке 7 можно видеть список задач, полученных из различных систем. Наприме, пункт «Open Harmony Bugs» позволяет подсоединиться к JIRA, используемой командой ApacheHarmony. Другие пункты меню получают позволяют видеть задачи, получаемые из EclipseBugzilla.
Добавление задач в свой список сводится к отправке запроса на сервер. Он возвращает ваши задачи, после чего вы можете начать работу над ними. Существует и поддержка режима работы offline; все изменения, сделанные в нем, отправятся на сервер после следующей синхронизации. Создание запросов операции более чем простая и легко выполняется с помощью диалогов, как например это показано на рисунке 8.
Задачи, полученные из репозитория, регулярно автоматически обновляются. Те задачи, которые были изменены, помечаются в общем списке, что сразу делает их заметным. Mylyn позволяет добавлять к задачам дополнительную информацию, включая информацию, касающуюся времени (например когда вы начнете работать над задачей), как долго вы будете над ней работать и насколько она выполнена. Так же можно выставлять длительность работы над задачей.
Существует так же возможность присоединения рабочего контекста (см. рис 9), что позволяет заархивировать рабочий контекст задачи и отправить его как дополнительную информацию на сервер. Контекст содержит информацию обо всех артефактах, с которыми вы поработали. Помимо того, что все могут видеть область вашей работы, они так же могут расширить и свой рабочий контекст вашими артефактами. В последующем вы можете работать совместно над одними и тем же контекстом.
Создание дополнительных коннекторов для репозиториев задач возможно благодаря открытому API. Что касается коннекторов к другим источникам задача, включающим в себя веб-сервисы, базы данных и корпоративные программы управления задачами, то их создание так же возможно, что делает Mylyn единым средством для работы над задачами.
Номер пять
Mylyn имеет продуманный Look And Feel
Mylyn очень качественно интегрирован в интерфейс Eclipse. Разработчики Mylyn следовали правилу «Лучше меньше да лучше»и на выходе получили интуитивно понятный и достаточно мощный по возможностям дизайн, который при этом не является перегруженным. Mylyn можно найти повсюду, однако он нигде не кричит о своем присутствии. Большинство вкладок (включая Navigator, Package Explorer и Outline) содержат в себе функционал от Mylyn, но при этом их принцип работы остается прежним, Поэтому чтобы привыкнуть к Mylyn требуется совсем немного времени. Вместе с этим появились и нововведения (как например временное раскрытие спрятанных артефактов кнопкой Alt), но это служит больше для удобства. Продолжая эту стратегию, пункты меню, связанные с Mylyn просто добавились в список уже существующих, но при этом не внесли ничего нового.
Mylyn хорошо смотрится и при этом предсказуемо работает. Например, ненавязчивое мигание всплывающего окна в нижней правой части экрана, уведомляет вас об изменения, сделанных на сервере над задачей.
Таким образом, Mylyn –это изящное, но при этом мощное средство работы, понятное для пользователя.
Заключение
Для любой предложенной задачи, Mylyn предоставляет именно те артефакты, которые почти наверняка понадобятся в будущем. Mylyn уверено отталкивает сложившиеся представления об интегрированных средах разработки: вместо того, чтобы подбирать инструменты для решения проблемы, следует распределить проблемы по имеющимся инструментам. Возможно, это не совсем очевидно, но тем не менее это так важна. Mylyn интегрируется с остальными инструментами первой необходимости, и делает разработку более эффективной и продуктивной, чем изначально позволяет среда.
Для того, чтобы осознать потенциал Mylyn, вам нужно научиться правильно формулировать свои задачи. Если задача слишком широкая, Mylyn не будет столь эффективен (в основном потому, что количество просматриваемых артефактов будет слишком велико, и мы приходим к тому, с чего начинали).
UPD. Перенесено в блог Eclipse.
Современные среды разработки подарили множество средств для ускоренной работы, когда множество действий можно делать всего пальцем. Интеграция редакторов и компиляторов для самых разнообразных языков, средства для работы с базами данных, инструменты разработки специфичные для того или иного фреймворка, а так же многие другие являются уже привычными для нас и основаны на более мелких, но ключевых вещах. Но зачастую в момент интеграции забывают о ключевой части, о конечном пользователе – разработчике.
Созданные на сегодняшний день различные инструменты разработки, с одной стороны надежно работающие, а с другой, не грамотно встроенные в интерфейс, помогают разработчику быть более продуктивным. Тем не менее, с ростом сложности интегрированных средств разработки, только наличие подобных небольших инструментов помогают ориентироваться в возможностях этих систем. В связи с этим современным разработчикам необходима такая среда, которая позволит сосредоточиться только на тех артефактах, которые представляют интерес для пользователя, и, кроме этого, будет отображать только тот функционал системы, который действительно важен пользователю. И здесь на сцене появляется Eclipse и плагин под названием Mylar, позднее переименованный в Mylyn. Mylyn меняет принцип разработки программного обеспечения следующим образом. Вместо того чтобы устанавливать массу инструментов для работы с артефактами, возникающими в процессе разработки, и использовать постфактум, Mylyn помогает обрабатывать эти артефакты в момент создания.
Итак, закрепив эту ключевую мысль в голове, перейдем к более детальному описанию возможностей Mylyn.
Номер раз
Mylyn позволяет вам сконцентрироваться на ваших задачах
Чтобы ощутить всю мощь Mylyn, вам нужно все ваши активности (как связанные с разработкой, так и непрофильные) переработать в задачи. Каждая задача содержит в себе небольшую часть всей работы, которая будет иметь конечный результат. Разумеется, вначале с формулировкой задач будут проблемы («Написать приложение» явно не лучший вариант, так как неясно, каким должно быть следующее действие), но со временем, придет опыт, и задачи станут более четкими («Поменять форму кнопки с квадрата на круг»). Подобное саморазвитие связано с тем, что вам самим становится проще выполнять и планировать задачи, которые сформулированы более грамотно (в принципе человек бессознательно стремится к подобному планированию деятельности). Понятное дело, что все задачи будут сформулированы по-разному, но именно наиболее четко сформулированные задачи показывают, насколько эффективен Mylyn.
Еще одно преимущество задач – они показывают, в каком состоянии находится работа. Всегда можно посмотреть, что уже сделано, а что осталось. Возможность фильтрации задач по типу поможет определить то же самое, но уже для какого-то конкретного направления. В то время как фильтрация по приоритетности показывает, как много ключевых задач было сделано. (рис. 1)
Номер два.
Mylyn показывает лишь то, что вам необходимо
В то время как вы находитесь в своем рабочем пространстве, Mylyn ведет запись всех ваших действий, как например редактирование файлов, классов, конкретных методов и так далее. Таким образом, каждый раз когда вы затрагиваете в ходе работы какой-то артефакт (открыв файл, отредактировав тип и так далее), Mylyn отметит данную активность, которая позволить ему организовать коллекцию все того, что вам будет интересно и необходимо. И уже в дальнейшем вы будете видеть только то, что касается сферы ваших интересов. В процессе роста количества артефактов, попадающих в эту сферу, будет меняться и их отображение, например, те классы и методы, с которыми вы работаете наиболее часто, будут выделены жирным.
Рисунок 2 показывает новую задачу, после открытия конкретного класса. Важно отметить, что в иерархическом списке (Package Explorer) показан только тот класс, который упоминается в задаче. Кроме этого, список методов (outline view) пуст, собственно, потому что еще не был затронут ни один и методов открытого класса.
На третьем рисунке показано то же самое рабочее пространство после небольших изменений, сделанных над классом. Метод drawImage() теперь виден как в иерархическом списке, так и в списке доступных методов. Как только будут изменены другие методы, они так же попадут в область видимости.
Существует и обратная реакция. Как только вы становитесь менее заинтересованным в артефакте, его выделение становится тусклым (из жирного переходит в нормальное, из нормального в серый), и постепенно артефакт пропадает из области видимости. Данный механизм основан на следующей точке зрения: если вы вносили изменение в артефакт, вы обязательно вернетесь к нему хотя бы еще раз. В дальнейшем, завершая задачу, вы возможно снова вернетесь к тем же артефактам, над которыми работали наиболее активно. Обратно так же верно: чем реже вы обращаетесь к артефакту, тем меньше будет необходимость в нем в будущем.
Данный режим с легкостью может быть отключен простым нажатием на кнопку «Focus on Active Task». Это сделано для того, чтобы вы могли найти артефакт, скрытый Mylyn, сделать его активным и вновь вернуться в прежний режим работы. Однако Java разработчики пользуются этим не так часто, в силу причин присущих Eclipse Java Development Tools (JDT), которые с легкостью позволяют просматривать родственные связи. Возможно так же отложить текущую задачу, с целью поработать над другими артефактами, или, например, другой задачей, и вернутся к первой.
Номер три.
Mylyn помнит,(что вы делали прошлым летом — прим. перевод.) что вы делали, пока переключались между задачами.
На следующих двух картинках можно видеть, как выглядит рабочее пространство во время работы над багами Eclipse: 138600 и 164658. Разница видна невооруженным глазом. Таким образом, мы подошли к еще одной важной особенности Mylyn: сохранение конкретного рабочего контекста для конкретной задачи.
Таким образом, переключаясь между задачами, вы будете видеть только те артефакты, которые касаются только этой задачей. Важно, что только одна задача может иметь статус активной, но никто не мешает переключаться между задачами. Задачу можно сделать активной массой способов: через выпадающее меню в редакторе задач, с помощью работы с записью в меню «Navigate» или нажатием на первую колонку строке, где описана данная задача. Чтобы все было совсем просто, вы можете переключаться между задачами используя выпадающее меню, появляющееся при нажатии на заголовок вкладки “Task List”, как показано на рисунке 6.
Название текущей активной задачи видно в верхней части вкладки “Task List”, а так же выделено жирным в общем списке задач.
Управляя контекстом для каждой задачи, Mylyn позволяет разработчику сфокусировать все свое внимание на хорошо сформулированной задаче и потратить как можно меньше времени, для переключения между этими задачами. Другими словами: как только вы переключились на другую задачу, вы видите тот материал, с которым надо работать. И никаких лишних временных затрат.
Номер четыре
Mylyn может подцепляться к системам управления
На сайте Mylyn помимо всего прочего можно найти плагины для интеграции с Bugzilla, JIRA, и Trac. Кроме того, есть возможности интегрировать Mylyn с XPlannerи другими подобными сервисами. Такой функционал позволяет управлять задачами вне сред разработки, а также видеть их другим разработчикам.
Например на рисунке 7 можно видеть список задач, полученных из различных систем. Наприме, пункт «Open Harmony Bugs» позволяет подсоединиться к JIRA, используемой командой ApacheHarmony. Другие пункты меню получают позволяют видеть задачи, получаемые из EclipseBugzilla.
Добавление задач в свой список сводится к отправке запроса на сервер. Он возвращает ваши задачи, после чего вы можете начать работу над ними. Существует и поддержка режима работы offline; все изменения, сделанные в нем, отправятся на сервер после следующей синхронизации. Создание запросов операции более чем простая и легко выполняется с помощью диалогов, как например это показано на рисунке 8.
Задачи, полученные из репозитория, регулярно автоматически обновляются. Те задачи, которые были изменены, помечаются в общем списке, что сразу делает их заметным. Mylyn позволяет добавлять к задачам дополнительную информацию, включая информацию, касающуюся времени (например когда вы начнете работать над задачей), как долго вы будете над ней работать и насколько она выполнена. Так же можно выставлять длительность работы над задачей.
Существует так же возможность присоединения рабочего контекста (см. рис 9), что позволяет заархивировать рабочий контекст задачи и отправить его как дополнительную информацию на сервер. Контекст содержит информацию обо всех артефактах, с которыми вы поработали. Помимо того, что все могут видеть область вашей работы, они так же могут расширить и свой рабочий контекст вашими артефактами. В последующем вы можете работать совместно над одними и тем же контекстом.
Создание дополнительных коннекторов для репозиториев задач возможно благодаря открытому API. Что касается коннекторов к другим источникам задача, включающим в себя веб-сервисы, базы данных и корпоративные программы управления задачами, то их создание так же возможно, что делает Mylyn единым средством для работы над задачами.
Номер пять
Mylyn имеет продуманный Look And Feel
Mylyn очень качественно интегрирован в интерфейс Eclipse. Разработчики Mylyn следовали правилу «Лучше меньше да лучше»и на выходе получили интуитивно понятный и достаточно мощный по возможностям дизайн, который при этом не является перегруженным. Mylyn можно найти повсюду, однако он нигде не кричит о своем присутствии. Большинство вкладок (включая Navigator, Package Explorer и Outline) содержат в себе функционал от Mylyn, но при этом их принцип работы остается прежним, Поэтому чтобы привыкнуть к Mylyn требуется совсем немного времени. Вместе с этим появились и нововведения (как например временное раскрытие спрятанных артефактов кнопкой Alt), но это служит больше для удобства. Продолжая эту стратегию, пункты меню, связанные с Mylyn просто добавились в список уже существующих, но при этом не внесли ничего нового.
Mylyn хорошо смотрится и при этом предсказуемо работает. Например, ненавязчивое мигание всплывающего окна в нижней правой части экрана, уведомляет вас об изменения, сделанных на сервере над задачей.
Таким образом, Mylyn –это изящное, но при этом мощное средство работы, понятное для пользователя.
Заключение
Для любой предложенной задачи, Mylyn предоставляет именно те артефакты, которые почти наверняка понадобятся в будущем. Mylyn уверено отталкивает сложившиеся представления об интегрированных средах разработки: вместо того, чтобы подбирать инструменты для решения проблемы, следует распределить проблемы по имеющимся инструментам. Возможно, это не совсем очевидно, но тем не менее это так важна. Mylyn интегрируется с остальными инструментами первой необходимости, и делает разработку более эффективной и продуктивной, чем изначально позволяет среда.
Для того, чтобы осознать потенциал Mylyn, вам нужно научиться правильно формулировать свои задачи. Если задача слишком широкая, Mylyn не будет столь эффективен (в основном потому, что количество просматриваемых артефактов будет слишком велико, и мы приходим к тому, с чего начинали).
UPD. Перенесено в блог Eclipse.