Обновление с Drupal 6 до Drupal 7: лучшие практики программиста?

Хотя я использую drupal со времен серии D4, я только начал профессионально разрабатывать его с помощью D6, поэтому, несмотря на то, что я делал различные обновления сайта, мне никогда не приходилось сталкиваться с задачей переноса собственного кода. к новой версии.

Я знаю, что сообщество Drupal предоставит много технической поддержки по поводу измененных API и архитектурных изменений (см. модуль deadwood для D5-D6 или даже эти отрывки из инструкций по D6-D7. для модулей и тем < / а>).

Однако то, что я ищу в своем вопросе, больше связано с стратегическим мышлением, или, другими словами, Я ищу информацию и советы о том, как планировать / реализовывать / анализировать процесс. о переносе моего собственного кода в свете того, что коллеги-разработчики узнали из предыдущего опыта. Пример:

  1. Не могли бы вы посоветовать начать портировать мои модули, как только у меня будет время для этого, и какое-то время поддерживать параллельный D7 (так что я «подготовлен» к дню «Д»), или вы посоветуете подождать день, когда порт будет фактически неизбежным, а затем обновить модули до D7 и отказаться от версии D6?
  2. Только некоторые из моих модулей имеют полное тестовое покрытие. Не могли бы вы посоветовать завершить тестовое покрытие для версии D6, чтобы все тесты работали для проверки порта D7, или вы бы посоветовали написать мою тестовую директиву во время переноса, чтобы протестировать версию D7?
  3. Вы обнаружили, что ранний последователь дает вам преимущество с точки зрения новых функций и улучшенных API-интерфейсов, или вы обнаружили, что удобнее отложить преобразование, чтобы использовать большее количество легко доступных модулей contrib?
  4. Вы установили для себя стандарты качества / критерии оценки или просто установили планку «если это сработает, я счастлив»? Почему? Если вы устанавливаете определенные стандарты или цели, что они сделали, где / какими они будут? Как они вам помогли?
  5. Существуют ли распространенные ошибки, с которыми вы сталкивались в прошлом и которые, по вашему мнению, применимы к процессу переноса D6-D7?
  6. Перенос - хороший момент для рефакторинга или он просто усложнит все, чтобы собрать его вместе?
  7. ...

Эти вопросы не являются исчерпывающим списком, но я надеюсь, что они дают представление о том, какую информацию я ищу. Скорее скажу: все, что вы считаете актуальным и не перечисленное мной выше, получает «плюс»! :)

Если мне не удалось выразиться достаточно ясно, отправьте комментарий с информацией, которую, по вашему мнению, я должен добавить в вопрос. Заранее благодарим за уделенное время!

PS: Да, я знаю ... D7 еще не вышел, и потребуются месяцы, прежде чем важные модули contrib будут обновлены ... но никогда не рано думать! :)


person Community    schedule 17.11.2009    source источник
comment
Мне нравится этот вопрос, потому что с ним мне придется столкнуться самому. Тем не менее, я бы не стал слишком спешить с обновлением. Мало того, что Drupal 7 все еще находится в разработке, но может пройти много времени, прежде чем многие из модулей, которые вы или я используем, будут перенесены на Drupal 7. Кроме того, могут появиться новые (и в настоящее время неизвестные нам) функции или модули, которые мы можем использовать. Воспользуйтесь преимуществами нашего собственного кода и фактически уменьшите его. Мой личный план - установить тестовую версию D7, когда она будет выпущена, но подождать, пока ситуация с Drupal не стабилизируется, прежде чем переносить мои существующие сайты.   -  person Greg    schedule 17.11.2009
comment
Хм - я пока этого не делал, но, учитывая, что это несколько открытых вопросов без возможного «правильного» ответа, мне нужно это сделать: Должен быть вики сообщества! (Вот, я сказал это - быстро, проголосуйте за меня, пока этот бит не перевернулся;)   -  person Henrik Opel    schedule 17.11.2009
comment
Я прочитал немного больше о сообществе wki, так что я понял логику и рассуждения и превратил этот вопрос в wiki.   -  person mac    schedule 28.11.2009
comment
См. Также stackoverflow.com/questions/2353545/.   -  person apaderno    schedule 28.01.2011


Ответы (1)


Хорошие вопросы, так что давайте посмотрим:

  1. (когда начинать перенос)
    Это, безусловно, зависит от сложности переносимых модулей. Если есть действительно сложные / большие, может быть полезно начать пораньше, чтобы найти сложные места, не находясь под давлением. Для меньших / стандартных я бы попытался позже найти больший временной интервал, где я мог бы перенести многие из них подряд, чтобы быстро запомнить рутинные вещи (и извлечь выгоду из, вероятно, улучшенной документации).

  2. (покрытие тестами)
    Обычно я бы сказал, что перед началом рефакторинга / портирования было бы желательно иметь хорошее покрытие тестами. Но, учитывая, что Drupal-7 вносит серьезные изменения в структуру тестирования, перемещая ее в ядро, я бы ожидал, что в любом случае потребуется переписать значительное количество тестов. Так что, если нет необходимости поддерживать версии Drupal-6 после миграции, я бы сэкономил время / проблемы и нацелился бы на увеличение охвата после переноса.

  3. (ранний последователь против выжидания)
    Используя Drupal, начиная с версии 4.7, мы всегда ждали, по крайней мере, первого официального выпуска новой основной версии, прежде чем даже думать о портировании. В Drupal 6 мы ждали модуля представлений перед портированием нашего первого сайта, и у нас все еще есть несколько небольших проектов на Drupal-5, поскольку они работают нормально, и было бы трудно оправдать дополнительный счет для наших клиентов, пока для него все еще есть исправления, связанные с обслуживанием / безопасностью. В сутках так много времени, и всегда есть накопившиеся ошибки, которые нужно исправить, функции, которые нужно добавить, и т. Д., Поэтому нет смысла играть с незавершенными технологиями, пока есть более неотложные дела, которые сразу же принесут пользу нашим клиентам. Теперь, конечно, все было бы иначе, если бы нам пришлось поддерживать один или несколько «официальных» предоставленных модулей, поскольку предложение раннего порта было бы хорошим делом.
    Я здесь немного в затруднении - я ранний последователь безусловно, приносит пользу сообществу, так как кто-то должен найти эти ошибки, прежде чем их можно будет исправить, но, с другой стороны, бессмысленно бороться час за часом с ошибками, которые другие могли бы найти / исправить, если бы вы просто немного подождали дольше. Пока я должен этим зарабатывать на жизнь, мне нужно следить за своими ресурсами, пытаясь найти приемлемый баланс между служением сообществу и получением от него выгод: - /

  4. (стандарты качества)
    «Если это сработает, я буду счастлив» просто не подходит, потому что я хочу быть счастливым не только на мгновение, но и завтра. Так что один из моих стандартов качества заключается в том, что я должен быть (в некоторой степени) уверен, что я достаточно хорошо «нащупал» новые концепции, чтобы не просто заставить вещи работать, но заставить их работать так, как они должны. Сейчас это трудно определить более точно, поскольку очевидно, что невозможно узнать, `` понял ли кто-то это '' до того, как `` получить это '', поэтому все сводится к внутреннему чувству / различению `` да, это вроде как работает '' по сравнению с `` ага ''. , это выглядит правильным », и нужно признать, что он довольно часто ошибается в этом.
    Тем не менее, я обращаю внимание на один конкретный момент:« вмешивайтесь как можно раньше ». Как новичок, я часто настраивал материал «постфактум» на этапе создания тем, в то время как было бы гораздо проще применить «исправление» на более раннем этапе цепочки обработки с помощью того или иного крючка. Итак, прямо сейчас, когда я собираюсь «настроить» что-то в слое темы, я намеренно беру небольшой тайм-аут, чтобы проверить, нельзя ли это сделать более чисто / совместимо с ранее использованным хуком. Поскольку я ожидаю, что Drupal-7 добавит еще больше опций перехвата, я уделю этому дополнительное внимание, так как он обычно уменьшает конфликты и внезапное «нарушение работы» при добавлении новых модулей.

  5. (распространенные ошибки)
    Ну - в основном перенос на ранний этап, обнаружение впоследствии / в промежутке между тем, что один или несколько необходимых модулей были недоступны для новой версии вообще или только в dev / alpha / ранняя бета-версия. Поэтому я бы сначала скомпилировал полный список используемых / необходимых модулей, указав их состояние переноса, а также быструю проверку их очередей проблем.
    Кроме того, у меня пока всегда был очень доволен новыми версиями и их улучшениями, и я снова с нетерпением жду Drupal-7.

  6. (рефакторинг при переносе)
    Можно сказать, что перенос - это довольно большой рефакторинг сам по себе, поэтому нет необходимости усложнять его, реструктурируя не связанные с переносом вещи. С другой стороны, если вам все равно нужно разрубить модули на куски, почему бы не использовать возможность провести капитальный ремонт? Я бы попытался провести черту в зависимости от сложности - для больших / сложных модулей я бы сделал порт как можно более прямым, а потом, если потребуется, реорганизовал бы его позже. Для модулей меньшего размера это не имеет особого значения, поскольку вероятность появления мелких ошибок должна быть довольно низкой.

  7. (другое)
    ... нужно подумать об этом ...


Хорошо, другое:

  • Потребности в ресурсах - учитывая некоторые потоки Drupal-7, похоже, что они, вероятно, вырастут, поэтому это следует оценить перед переносом небольших сайтов, которые находятся на общей / ограниченной учетной записи хостинга.

  • Сначала последние версии - это довольно очевидно и всегда подчеркивается в руководствах по обновлению, но, тем не менее, стоит упомянуть: сначала обновите ядро ​​и все модули до последней текущей версии, прежде чем делать серьезное обновление, поскольку код обновления, скорее всего, будет зависеть от последние структуры таблиц / данных для правильной работы. Учитывая «частичную» стратегию обновления Drupals, шаг за шагом, было бы очень сложно реализовать код обновления, который бы обнаруживал различные состояния перед обновлением и действовал соответствующим образом.

person Community    schedule 17.11.2009
comment
Интересно - я не знал, что могу перенести свой вопрос в вики сообщества с помощью частого редактирования - ну, мне так и надо для моего первого комментария типа «должно быть вики»;) - person Henrik Opel; 18.11.2009
comment
Спасибо за развернутый ответ, Хенрик. Мне это понравилось, и я поддержал его. Я оставляю вопрос открытым только потому, что надеюсь собрать еще несколько мыслей и советов. Я посмотрю на вики сообщества. Я еще не знаю эту функцию ... А пока: спасибо! - person mac; 21.11.2009