Прежде всего - патчить != хакать.
Накладываете ли вы патчи? Есть ли у вас какой-то список патчей Must have?
Откуда появился данный вопрос вообще.
Я сейчас работаю с довольно большим проектом, апдейты накатывать бездумно никак нельзя.
Есть определённый список патчей, который появился на основе изучения родственных сборок (Drupal commons), есть выстраданные патчи, когда вот оно должно работать, но не работает.
Для затравки, делаюсь списком патчей, патчи из этого списка будут переодически устаревать, и может быть обновляться
user_badges
Нет проверки на права доступа в пункте меню
'title' => 'Badges',
'page callback' => 'user_badges_userweight_page',
'page arguments' => array(1),
'access callback' => TRUE,
'type' => MENU_LOCAL_TASK,
'weight' => 4,
);
invite
http://drupal.org/node/1043280
user_delete
http://drupal.org/node/1425182#comment-5565988
Патч исправляет WSOD на Drupal >= 6.24
Realname
наложен патч http://drupal.org/node/1070102#comment-4128184
Activity Log
http://drupal.org/files/1306252-activity_log_node_og_dupes-b.patch
Diff
14.03.2012
http://drupal.org/files/372957-diff-strip-html-73.patch
User Relationships
14.03.2012
http://drupal.org/files/ur_alter_remove_links.patch
http://drupal.org/files/issues/user_relationships_disable_notifications_...
-URNA
14.03.2012
http://drupal.org/files/issues/urna-relationships-747798.patch (http://drupal.org/node/747798)
Views attach
Наложен патч http://drupal.org/files/1409556-attach-empty-b.patch
Комментарии
Без патчей тяжко, да и кода без ошибок не бывает! Хорошо бы еще научить людей писать ревью на эти патчи, дабы они быстрее были приняты в основной код модулей
От себя добавлю - у Phpmailer'a проблемы в заголовках писем в некоторых почтовиках. Патч брать отсюда.
Field Collection при использовании с dev версией Entity API вообще ломается - патч отсюда брать.
Спасибо, Жень.
От меня тоже неплохая пачка сегодня-завтра прилетит.
Но я ещё думаю о формате подачи и ведения "бухгалтерии".
Энди как вариант предложил способ Габра http://hojtsy.hu/d8mi
Если функционал модуля под мои задачи работает корректно - не устанавлию понятное дело, хотя может кому-то они и понядобятся. Если что-то не так шарюсь по решениям и если есть конечно устанавливаю патч.
Обычно нет. Может, просто как-то везло до сих пор.
Но. Не патчить, а именно хакать, к сожалению, пару раз пришлось один файл - mail.inc (из-за мультибайтной кодировки русскоязычные строки в теле email-сообщения получаются в два раза короче). Проблема, впрочем старая и известная. В D7 она тоже осталась.
Лечил добавлением вызова собственной функции переноса строк в drupal_wrap_mail_line() (аналогичное решение http://www.drupal.ru/node/25184).
Только если время поджимает... А так проще внешним модулем костыли наваять
p.s Последний и единственный патч брал с drupal.org под Webform позволяюший ставить условия для отправки сообщений на емаил
Очень интересно как вы будете ваять костыли в случае, например, такого косяка
http://drupal.org/node/1425182#comment-5565988
http://drupal.org/node/1070102#comment-4128184
А можно мне список таких модулей поимённо?
Хотите сказать, что у всех модулей есть такие косяки, которые необходимо патчить? У всех модулей есть косяки, это да, но! не все модули из-за этого нужно патчить. Ибо косяки есть мелкие, есть такие, которые можно исправить в своем модуле, что-то переопределив, есть такие от которых проще отказаться и взять или альтернитиву или наваять свое.
Косяки исправляются патчами. В своих модулях допиливается или отпиливается функционал.
В дополнение - патч полезен для сообщества, а костыли - индивидуальны.
У вас на сайте стоит 20 модулей(допустим). 5 из них вы пропатчили. 15, которые вы не патчили, разве не имеют косяков? Имеют, но вы, или просто на них не наткнулись, или нашли другое решение, или решили, что эти косяки несущественны(например некий Notice).
Да, но заказчик платит, за то, что вы ему предоставите готовое решение, и его мало волнует как вы это сделаете. Индивидуальное решение - это просто индивидуальное решение, и если его проще и быстрее реализовать это не значит, что это костыль.
Я веду, к тому, что патчить или не патчить зависит от конкретного случая. Патчи я применяю аналогично, как и Shok211 только в крайних случаях.
Ядро Друпала тоже имеет огромное количество багов. Мне теперь и его не патчить, даже если это решит мою проблему? Я не утверждаю, что патчи надо ставить на каждый модуль, но во многих это просто необходимо для корректной работы.
Ага, а потом после таких разработчиков этот самый заказчик ищет других разработчиков, ибо предыдущие наговнокодили так, что никто уже не разберётся. В первую очередь результат зависит от правильного подхода к решению задач.
Все по потребностям. Если есть возможность решить проблему другим способом(а они есть и были указаны мной выше), тогда не патчить. Если нет других возможностей тогда патчить.
Я не вижу взаимосвязи между качеством кода и индивидуальными решениями. Вы делаете тему для заказчика - это индивидуальное решение. Вы пишите свой модуль, под конкретный сайт - это индивидуальное решение. Это ведь не означает, что вы непременно пишите говнокод? Универсальные решения требуют совсем другого подхода чем индивидуальные. Их необходимо более тщательно тестить, делать проверку на то, как они сказываются на производительности, все ли возможные случаи покрывают, проверять совместимость с другими модулями и т.д. Безусловно, такие действия нужно делать и с индивидуальными решениями, но в этом случае проверка ограничиваются только конкретным проектом.
Ну вот вам простой пример... После того как я установил на webform патч который делает n энных вещей , кстати , написанный для сообщества. Я закончил заказ и отдал заказчику, тут заказчик решил обновить модули потому что:
a) Нашли уязвимость в модуле webform
b) Нашли уязвимость в патче.
v) Разработчик который решил добавить функционал на ваш сайт вряд ли будет копаться во все модулях для того что бы узнать где вы там что патчили.
Исход ? Сайт лежит...и вы снова идете и патчите сайт который вы уже сделали, объясняете что модули обновлять нельзя и вы это сделали чтобы заказ был быстрее выполнен. И не важно что именно из за моей лени я не написал форму на FORM API, не полез в ядро модуля и не написал form_alter для формы, не дождался стабильной версии... Или вы готовы поддерживать каждое обновление модуля и ставить патч заново ? В чем экономия времени ?
Я всё понять не могу - с каких пор баги одного модуля решаются путём создания другого?
С таким же успехом Дрис в 2000 году мог бы сделать индивидуальный проект для себя, и сидели бы мы сейчас на джумле.
Тождественно это не равно конечно, но незнание правильных подходов к решению задач обычно обусловлено отсутствием понимания архитектуры системы. И в этом случае простые вещи делаются очень сложно, что приводит к захламлению проекта.
Когда находят уязвимость - сразу выходит новый релиз. И многие патчи также входят в этот релиз. А поставить новую версию модуля, я надеюсь, не проблема.
Я ведь говорил про то что если ваш патч отличается от патча вышедшего для модуля логикой работы то модуль работать не будет. Уже второй раз спотыкаюсь об эти грабли. Первый раз я писал патч который позволяет в views файлы оборачивать ссылками на их thumbnails. Дак с обновлением на 3 views. Перестала работать галерея, и я 2 дня искал куда что опять надо патчить. Хотя самым удобным решение было написать эту галерею без views. 2 Брал сайт готовый и обновлял все модули
Читайте выше пример от Shok211. Еще примеры:
Вспомните историю, как Дрис создавал свой Drupal. http://ru.wikipedia.org/wiki/Drupal Он не хотел создать универсальное решение, он создавал индивидуальное решение для себя.
Если вы понимаете архитектуру Drupal, вы одинаково качественно сделаете, как индивидуально, так и универсальное решение. Но, как было указано мной выше, универсальное решение требует напорядок больше времени и усилий.
Это не баг. Это функционал. По-хорошему это должно быть в модуле, но разработчик имеет право не реализовывать эту фичу.
Я пытаюсь донести одно - если бы каждый делал только для себя, то сообщества не было бы. Каждый мой проект обязательно сопровождается статьями в блог, модулями на д.орг, и кучей патчей. Поэтому я принципиально против решений "для себя" - без активной работы "для людей" комьюнити потухнет. Если вы сделали свою выборку в taxonomy menu - запостите ишью на д.орг со своим решением. Это займёт 5-10, зато поможет сотням людей.
Стараюсь всегда ревьюировать патчи - правда, чаще всего приходится отрицательно.
Другое дело, когда разработчики не спешат включать их в ядро новых версий - яркие тому примеры views, flag и global redirect - хотя, вероятно, есть на то причины.
Мы вроде обсуждали не про сообщество и как ему помочь, а про решения конкретных проблем за короткие сроки без фатального исхода через неделю. Хотя я абсолютно согласен что сделал модуль поделись со всеми.
p.s Раз уж можно пофлудить. Уже 3 неделю хочу выложить модуль для удобного управления alias. Написал введение xD. У кого есть желание может подхватить. Модуль позволяет добавлять новые пути на уже существующие.
Создавай отдельную ветку и покажи наработки.
subscribe
Уже неверно. Покажите мне этот патч на drupal.org
1 патч должен в себе нести 1 фикс.
Исход простой.
Накатываешь патчи - проинформируй другого, а то даже и себя. Вас никто не побьёт если вы завелёте файлик patches.txt и положите его, например, в sites.
Может вы не доросли, но делать сайты качественно и брать их на дальнейшую поддержку гораздо выгоднее и менее геморно, чем делать сайты тяп-ляп, лишь бы перед каникулами заработать.
А наложить патч много времени не занимает
curl http://drupal.org/files/og_views-add-leave-group-field-1128492-06.patch | git apply -v
И патч наложен.
То что вы написали, увы, говорит о вашем низком уровне как разработчика.
Вы действительно немного отклонились от темы. Релиализовать свое решение, для конкретного клиента - это совершенно не значит, что я положу его в шкаф и не буду ни с кем делиться. То, что нужно делиться я не опровергаю ни в коем случае, а наоборот стараюсь помогать и представлять свое виденье и свои решения, хотя и делаю это недавно.
Лично мне больше нравятся решения, которые можно реализовать без вмешательство в чужой код, а посредством своих реализаций, кажется более элегантным решением проблем. Повторюсь, что патчить считаю возможным, только если других вариантов уже нет. Но это мое личное мнение.
Ниже прикреплен патч ну или фикс, как вам виднее... Темы я так и не нашел.
Опыт работы с 16 до 18 лет (Вроде у меня 1 тема в блоге была о просьбе платных консультаций полтора года назад) действительно не большой.
Да да... я не сделал ещё не одного сайта который бы сам не поддерживал. И как говорит мой небольшой опыт. Перепатчивать каждое обновление модуля дело утомительное, даже если ты имеешь файлик со всеми патчами и уверен, что поставишь их все. Я знаю, что используя внешний модуль, даже как костыли после очередного обновления, мне не требуется заново ставить, вряд ли уже подходящие патчи.
Вот issue http://drupal.org/node/687606
Я сегодня перебрал полностью сборку Commons 2.6, ознакомился с изменениями в коде, какие патчи и куда накладывались, что фиксят/вносят и нужно ли мне это, не утомился, а вполне ещё после отработал рабочий день.
Начните с себя, развивайтесь, читайте best practice, потом делайте выводы.
Ну и да, наложение патчей автоматизируется на ура.