Куда мы пойдем после Git?

Давайте начнем эту вечеринку

Преамбула

Git изменил способ написания программного обеспечения. Это гениальная технология, а ее сообщество и экосистема чрезвычайно динамичны. Он стал настолько повсеместным, что трудно представить, что за ним что-то может последовать. Но сейчас такой ход мыслей должен звучать подозрительно: люди говорили то же самое о лошади и телеге, газовой лампе и стационарном телефоне. По сути, люди относятся к виду беспокойных изобретателей, и технологии не сидят на месте. Итак, хотя Git все еще может казаться свежим - возможно, из-за всего процветающего вокруг него - стоит помнить, что первая версия была выпущена за два года до оригинального iPhone. С тех пор многое изменилось, мягко говоря.

Чтобы было ясно, это не статья о неминуемой кончине Git. Я люблю Git, я не думаю, что он сейчас исчерпал свои возможности, и не думаю, что он исчезнет в ближайшее время. Вероятно, в обозримом будущем он будет продолжать расти и, скорее всего, никогда не исчезнет полностью. Возможно, когда-нибудь, после некоторого затишья в использовании, даже появится Git Renaissance, напоминающий возвращение винила. Но что-то придет после Git, и, похоже, пора начать гадать, что это может быть.

Давайте сначала на мгновение вернемся во времени. Принятие Git распределенных рабочих процессов отразило децентрализацию вычислений в целом, которая происходила. Электроэнергия больше не находилась исключительно на центральном сервере, а клиенты играли лишь зависимую, подчиненную роль. Конечные точки могли работать под собственной тяжестью, и в результате получился новый мобильный, новый, свободный мир. Это было действительно раскрепощающим!

Однако возникли новые проблемы: наиболее болезненно то, что данные были не синхронизированы или полностью недоступны на разных устройствах. Если сложно вспомнить, на что это было похоже, примите во внимание, что Git был выпущен в том же году Microsoft приобрела FolderShare, таким образом войдя в развивающееся пространство технологии синхронизации файлов и удаленного доступа, которое помогает клиентам получать доступ к информации на нескольких устройствах. . Это было на год до Google Docs и на два года до Dropbox. Это мир, в котором родился Git.

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

Прогнозы

Поскольку разработка Git отразила движения в вычислительной технике десять лет назад, мы можем подозревать, что его преемник отразит преобразования, которые мы переживаем сегодня. Таким образом, мы можем ожидать увидеть некоторые из них:

Подключено по умолчанию

Git упрощает связывание ветки на вашем компьютере с веткой на удаленном устройстве. Но по умолчанию эти ассоциации являются просто указателями, а не соединениями. Если вы не загружаете обновления вручную или не используете клиент Git, который периодически делает это за вас, данные на вашем компьютере устареют, даже если все устройства подключены к сети. Для любого пользователя современных технологий это должно показаться устаревшим. Если кто-то другой работает над тем же, что и я, я ожидаю, что ему скажут, не спрашивая.

Всегда в движении

Облегченная модель ветвления Git позволяет легко отойти в сторону и попробовать некоторые изменения, не опасаясь действительно испортить ситуацию. Вы можете зафиксировать свои изменения в своей собственной ветке, чтобы они не были потеряны, и объединить их обратно, только если что-то получится. Но есть еще много возможностей потерять работу: если отключится питание с несохраненными изменениями или если вы решите, что вам нужно вернуться в состояние между коммитами, вам, скорее всего, не повезло. В наши дни я верю, что программное обеспечение никогда не потеряет мою работу, независимо от того, когда я и думал о сохранении. Моя работа всегда в движении, и я ожидаю, что мое программное обеспечение будет не отставать.

Социально присутствует

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

Вечеринка

Эти аспекты описывают нечто совершенно отличное от Git. Больше, чем система управления исходным кодом, что-то связанное, движущееся и социальное звучит очень похоже на ... вечеринку. Итак, приступим к вечеринке. Далее следует гипотеза о будущем системы управления версиями программного обеспечения.

$ party start myhouse @friend1 @friend2

Для начала мы start party по имени myhouse и приглашаем двух моих друзей. Это устанавливает эквивалент репозитория Git на моем компьютере и на моем центральном сервере по умолчанию и отправляет уведомления на friend1 и friend2.

$ party talk app.js

Мы начинаем talk друг с другом работать над некоторой базовой логикой. Во время редактирования мы все видим нажатия клавиш и точки вставки друг друга в режиме реального времени. Обычно это то место, где мы сохраняем, фиксируем, извлекаем и отправляем в Git, но здесь ничего этого не происходит. Все вместе веселятся.

$ party punchline "Basic logic works"

В конце концов мы достигаем стабильной точки. Несмотря на то, что каждое действие, которое мы предприняли до сих пор, автоматически запоминается, некоторые моменты на временной шкале, безусловно, стоит запоминать больше, чем другие. Для этого мы вызываем punchline, который представляет интересующий момент времени. Это удобные ссылки для использования в будущем, похожие на теги в Git.

$ party clique refactoring @friend1

В конце концов, friend1 и я решаем, что нам нужно внести некоторые рискованные изменения в логику, и мы предпочли бы не прерывать работу friend2. Я создаю clique под названием refactoring и приглашаю друга1. Хотя friend2 будет иметь доступ к просмотру в реальном времени всего, что происходит в клике рефакторинга, только friend1 будет приглашен для редактирования. Поскольку клики служат для разделения наборов работ, они похожи на тематические ветки в Git.

$ party listen center

Friend2 все еще работает в center партии, эквиваленте главной ветки в Git. По умолчанию, когда я создавал клику рефакторинга, friend1 и я перестали видеть какую-либо работу, которую делал friend2, что позволяло нам сосредоточиться на нашей собственной работе. Но после внесения наиболее значительных изменений мы хотим снова идти в ногу с тем, что делает friend2, чтобы мы могли разрешить любые конфликтующие изменения. Мы listen в центре вечеринки и сразу же замечаем работу friend2. Это похоже на получение удаленных коммитов и их локальное слияние в Git.

$ party join center

После того, как мы проработали несколько конфликтов слияния и получили все в хорошем состоянии, мы снова join в центре группы, и тогда friend2 видит нашу работу. Это соответствует передаче работы удаленному мастеру в Git, за исключением того, что friend2 не выполняет вручную шаг по получению этих изменений.

$ party rewind 2min

На этом этапе friend2 завершает пару вещей, а затем просматривает нашу работу. Большая часть того, что мы сделали, просто отлично, но оказалось, что мы удалили то, что они планировали использовать. Итак, friend2 решает rewind на вечеринку через пару минут, чтобы найти тот код, который мы удалили.

$ party bring app.js:112–114

Они определяют, что им нужны строки со 112 по 114, и они bring возвращают эти строки к текущему моменту в партии.

$ party punchline "Full logic implemented"

После этого мы отмечаем еще одну кульминационную черту, указывающую на достигнутый статус.

$ party replay start

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

$ party end

Все выглядит хорошо, поэтому мы end сеанс редактирования и называем его ночным.

Постскриптум

Преемник Git может появиться в ближайшее время, а может и не появиться. Это может или не может быть похоже на то, что я описал здесь. И он может в конечном итоге взять мир штурмом, а может и не взять его так же, как Git. Но зачем ждать, чтобы узнать это? Кто-то должен сделать это - это будете вы? Если да, то обязательно пригласите меня на вечеринку.