Битрикс 2.0

Рейтинг: 9.8245  
На голосовании
Предложил Бугай Максим 11.12.2015 04:36:07

Битрикс 2.0

Одна из самых лучших фич битрикса - это обратная совместимость. Но всё должно иметь меру. Кроме того, технологии тоже не стоят на месте. Поэтому выдвигаю предложение, о котором думали многие разработчики.

Один раз забить на совместимость и сделать новую ветку системы.
Раз в 10 лет можно.

Претензий много, и их без потери совместимости не устранить (список под катом):


Компоненты:
- Одновременно все версии от самых первых до самых последних.
- Половина компонентов в процедурном формате, половина в объектно-ориентированном.
- Избыточные и устаревшие параметры.
- Дублирование функциональности. Например в каталоге куча компонентов вида "отфильтровать и вывести список товаров", но это всё РАЗНЫЕ компоненты с 80% копипащенным кодом разных версий.
- Компоненты с логикой в шаблоне (поддержка товарных предложений в каталоге).
- Стиль кодирования везде разный.
- Ajax сделан по разному и нельзя использовать 2 ajax-компонента на одной странице.
- Иногда компоненты названы и сгруппированы "по историческим причинам", а не по назначению.

Api и исходники:
- Разброд и шатание во всём: кодстайле, архитектуре, паттернах для однотипных задач, административных скриптах и т.д.
- В классах для работы с данными  разный порядок, набор и формат однотипных аргументов, разная поддержка фильтрации (массивы значений, сложная логика, маски, подзапросы), разный формат выдачи.
- Половина методов статические, половина динамические, без справочника всё время путаешься, где какие. При этом в новых частях используются неймспейсы, а в старых классы-обёртки.
- Устаревшие функции.
- Несколько не пересекающихся систем расширенных свойств.
- Расширение API делается пачкой разных способов, где-то события, где-то магические функции, где-то файлы-обработчики.
- При этом некоторые модули не расширяются вообще (точки расширения есть, но мало/бесполезны).
- Часть функций работает через глобальные переменные, которые нельзя передать в явном виде.
- Дублирование скриптов и функций.
- Некоторые модули (например интернет-магазин) стоило бы переписать с нуля т.к. "расширений" вокруг них уже больше, чем исходной функциональности.
- Часто отсутствует декомпозиция кода. Выборки, переработка и формирования вывода идут вперемешку в одном обработчике.
- Не все функции оформлены собственно как функции, часто это просто портянка кода в файле-обработчике и использовать её из другого места нельзя.
- Многие полезные предложения на этом ресурсе были отвергнуты именно из-за проблем с совместимостью.


Продукт в целом:
- Заброшенные модули, не обновляющиеся годами.
- Функции, и модули, которыми никто не пользуется, но остаются "для галочки".
- Функциональность наиболее популярных модулей из маркетплейса, которые ставятся на каждую 2-ю установку, стоит включить в сам продукт.
- Разделение некотрых функций по модулям по "историческим причинам", а не по назначению и востребованности.


Платформа :
- Centos 6 рано или поздно вытеснят с VPS - хостингов, стоит перейти или на что-то поновее (Centos 7) или на что-то постабильнее (FreeBSD).
- PHP 7 уже в релизе, если делать новую систему, нет смысла писать её под УЖЕ устаревшую версию языка.
- Стоит подумать над использованием других технологий, например PostgreSQL с его фишками вроде наследования таблиц и JSONB (в MySQL вроде тоже обещали, но фиг знает когда), NodeJS для реалтайм-взаимодействия или ещё чего-нибудь полезного. Не PHP единым...



В общем, как вы видите, даже навскидку за 30 минут портянка получилась приличная, да и ваши программисты наверное и сами прекрасно знают, что бы следовало серьёзно переделать, но нельзя.

Я не требую немедленно всё бросить и начинать переделывать, но хочу видеть насколько сообщество поддерживает такие порывы.

Может мы лучше подождём годик-другой без новых "очень нужных" примочек, но зато получим новую молодую систему, без старческих болячек, не сгибающуюся под собственным весом, и будем развивать и улучшать уже её?

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

Рейтинг: -0.3297  
Кирсанов Анатолий 11.12.2015 07:44:00
Не нужно новую ветку. Пусть лучше то, что есть потихоньку замещается на d7.
ОС и версии PHP - аналогично. На CentOS 7 можно и сейчас работать, на FreeBSD я бы не пошел (были трудности). По свежайшей версии PHP ... Да пока прекрасно уживаемся с 5.3. Большинство библиотек и CMS понятия не имею что такое пространство имен, а Битрикс в курсе. Остальное - мутное все, не так и нужно.
Рейтинг: 0.3417  
Бугай Максим 11.12.2015 09:06:43
"Потихоньку замещается" он уже года 3. Глубоко внутри в ядре возможно. Но проблем API и компонентов это никак не решит, т.к. они уже написаны, а переделывать их нельзя, совместимость не позволит. И наращивать API постепенно тоже не выход, т.к. это только ДОБАВИТ дублирующих функций, а старые всё равно никуда деть нельзя.
Рейтинг: 0.0836  
Бугай Максим 11.12.2015 09:13:24
Да и любой переход рано или поздно должен окончиться выкидыванием старого кода и потерей совместимости. А раз рано или поздно это случиться, лучше выкинуть за один раз как можно больше мусора, чтобы до следующей уборки времени было побольше.
Рейтинг: 0  
BX Solutions 11.12.2015 10:29:03
про БД. надо тарантула дождаться) они всех убить хотят))
Рейтинг: 0  
Кирсанов Анатолий 17.12.2015 18:48:17
"Потихоньку замещается" он уже года 3.
Будет лет 10-15 замещаться. У меня иллюзий нет. Более того, я с этим согласен.

Но проблем API и компонентов это никак не решит, т.к. они уже написаны, а переделывать их нельзя, совместимость не позволит.
Не согласен с этим мнением. Я видел код переработанных компонент и знаю как коллеги из Битрикс это делают - вводят два формата $arResult. Для старых шаблонов, написанных очень давно, и для новых.

И наращивать API постепенно тоже не выход, т.к. это только ДОБАВИТ дублирующих функций, а старые всё равно никуда деть нельзя.
Что значит наращивать? Реализация старого API постепенно пишется на новом. Расширение же API, уже на d7, пишется в связи с развитием функционала. Как пример - новый магазин (он пока в бете).

Да и любой переход рано или поздно должен окончиться выкидыванием старого кода и потерей совместимости.
Боже упаси. Недавно в руки попался сайт, который работает (и успешно) на компонентах 1.0. И я не вижу серьезных оснований переводить их на Компоненты 2.0. Для этого нужны какие-то более существенные причины, понятные владельцу сайта. Понимаю, что со временем в дистрибутиве будет очень много явно устаревших и давно неиспользуемых на новых сайтах файлов. Как компромисс, можно было бы изобрести "конструктор" дистрибутивов Битрикс, который включает или нет явно устаревшее. Пока же такие вопросы можно пытаться решать на уровне партнерских решений (кое-что для зачистки есть на Маркетплейс).

А раз рано или поздно это случиться, лучше выкинуть за один раз как можно больше мусора, чтобы до следующей уборки времени было побольше.
Уборка, как и ремонт, не заканчиваются никогда.
Рейтинг: 0  
Клёпов Роман 20.12.2015 15:11:21
Поддержал идею.

Периодически приходиться перекапывать исходники Битрикса. Периодически встречаю разный стиль кодирования, избыточность кода, логические и пр. ошибки. Больше всего убивает некоторые стандартные шаблоны компонентов (например, sale.order.ajax). Настолько сложный и запутанный код, что не понятно для кого его писали (даже разработчику).  Почему-то за основу берется не стандартные формы, HTML5, CSS3, а jquery-код и чистый js. Лучше продуктивней и компактнее все писать. Разбираться в коде и дорабатывать проще.

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

Ребята с Битрикс, давайте создавать современный и качественный продукт. Ну а партнеры и разработчики не останутся в стороне. Со своей стороны готов предложить посильную помощь.
Рейтинг: 0  
Police King 20.12.2015 22:35:30
Ребята с Битрикс, давайте создавать современный и качественный продукт
Битрикс комон, комон... комооон! :D
Рейтинг: 0  
Кирсанов Анатолий 21.12.2015 16:49:04
Периодически встречаю разный стиль кодирования
Вот откуда такие мысли, что если вдруг отбросить все старое, то и стиль одинаковый будет ...
Он как бы задекларирован. Так и раньше был. Но это не мешает разработчикам думать по-разному.

Больше всего убивает некоторые стандартные шаблоны компонентов (например, sale.order.ajax). Настолько сложный и запутанный код, что не понятно для кого его писали (даже разработчику).
А это как раз иллюстрация выше сказанному. Были тому причины, раз так написано. Думаю, будет что-то новое, т.к. магазин развивается намного быстрее остальных модулей. Может в бете уже есть. Если повторить весь функционал, который там есть, проще не будет. Раскидано будет по массе событий, а еще вероятнее - по страшной иерархии классов. Непременно с абстрактными классами и методами. Вот в этом будет разобраться не проще.

Почему-то за основу берется не стандартные формы, HTML5, CSS3 ...
Всему свое время. Посмотрим что наделают с bootstrap. Эти новшества, конечно, разработаны не вчера. Но поддерживаются неодинаково. Все равно будет JS для этого.

Я не хочу сказать, что текущий Битрикс технически совершенен. Но он работает. Позволяет владельцам сайтов зарабатывать деньги, а разработчикам накапливать опыт не выбрасывая его на помойку каждые два года, вместе с разработанными ранее решениями для Маркетплейс. Это вопрос сохранности инвестиций как для владельца сайта, так и разработчика.

Кстати, по этой причине было решено сделать двухядерную систему, а не переключатель "перейти на d7". И эта идея (Битрикс 2.0) как раз об этом переключателе, только другими словами.