Bullshit on rails

Post on 18-Nov-2014

2.007 views 1 download

description

С 2008 года в экосистеме рельса так и не произошло существенных изменений в плане построения контент и медиа проектов - время идет, а как и прежде все приходится делать с нуля и самому. Обещания о том, что на рельсах можно пачками делать простые проекты - несостоятельны. В скринкастах Блог за 15 минут - нам обещали другое ))

Transcript of Bullshit on rails

bullshit on railsили Блог не за 15 минут

Илья Зыкинgithub.com/the-teacher

Мой персональный взгляд на проблемы экосистемы Ruby on Rails по отношению к Тематическим, Медиа и Блого проектамРасскажу о тех проблемах и трудностях с которыми сталкиваются разработчики при построении контент-ориентированных проектов, какие задачи не решены и что можно сделать с сфере open source тем, кто хочет внести свой вклад, но не знает с чего начать

D2

Миссия%!

1. Обозначить проблемы экосистемы 2. Дать информацию о нерешенных задачах 3. Привлечь junior и middle разработчиков к решению проблем

D3

Много лет Rails продвигал идею "Блог за 15 мин" (2006 — 2010)

Как они это сделали?

1. Простые модели и AR 2. Скаффолдинг (контроллеры, вьюхи) 3. Веб-сервер из коробки 4. Гемы. Собери все что хочешь! 5. No deploy! :)

D4

Результат

1. Wow-эффект! 2. Много поклонников 3. Активность в создании гемов 4. Enterprise принял rails

D5

Блог за 15 мин на Rails%

Bullshit!

D6

Я могу собрать себе CMS на rails за 3 дня

Bullshit!

D7

Я могу быстро сделать на Railsсложный (production ready) сайт

Bullshit!

D8

Но почему? (rails scope) !1. Практически нет production-ready гемов 2. "Отцы-основатели" rails open source уходят 3. Нет эффективных принципов для делигирования управления гемами

4. Новые гемы практически не разрабатываются 5. Задачи бизнеса ушли вперед. Экосистема Rails стоит на месте

6. Хорошие решения скрыты NDA 7. Деплой по-прежнему проблема (Рельсу вот вот 10 лет)

D9

Тот, кто хочет сделать блог на Rails,%еще не делал блог на Rails

D10

К черту сопли, дайте примеры!

D11

Сделаем блог для пары пользователей?!

Это ведь должно быть просто!

D12

1. Design/Bootstrap

2. Пользователи. Devise. Ок

3. Роли. (Тема 1)

4. Страницы. Ок

5. Состояния [draft | published | restricted | banned]+ callbacks для счетчиков или уведомлений=> StateMachine (Тема 2)

D13

6. Категории статей. Дерево? ActsAsNestedSet? (тема 3)

7. Комментарии

Многоуровневые? Санитайз? Препроцессинг? (тема 4)

8. Главная картинка поста. Кроп? (тема 5)

9. Загрузка файлов для использования в контенте. (тема 6)

10. Метаданные для социальных сетей (тема 7)

11. Теги (тема 8)

12. Deploy (тема 9)

D14

Тема 1. Роли

!

1. Де-факто стандартом является CanCan

2. Ryan Bates - “мертв”... или уехал в Тибет

3. CanCan сделан программистом для программистов

4. Многие хотят управлять ролями из админки

!

ACL9? pundit? declarative_authorization?

(same shit)

D15

Проблемы Экосистемы

1. Ключевой участник сообщества пропал

2. Нет эффективных механизмов поддержания гемов, если

автор не активен

3. Практически нет популярных альтернатив

4. Стагнация идей, подходов и решений

D16

Тема 2. Управление состояниями и колбэками

1. Де-факто стандартом является StateMachine

2. Aaron Pfeifer (PluginAWeek) - “мертв”... или уехал в Тибет

3. Качественную альтернативу придумать весьма сложно.

Вероятно и не надо

D17

Проблемы Экосистемы

1. Ключевой участник сообщества пропал

2. Нет эффективных механизмов поддержания гемов, если

автор не активен

D18

Тема 3. Категории статей. ActsAsNestedSet

!

На ActsAsNestedSet базируются: каталогизация, комментарии и

многое другое, что требует структуры в несколько уровней “Тупые” реализации видаCategory + SubCategory + SubSubCategory в расчет не берем

D19

Техническая проблема

1. Никто не умеет быстро “рисовать” большие деревья*

2. Для управления деревьями нет GUI

!

Проблемы Экосистемы

1. Имея отличную базу для создания прикладных решений,

таких решений никто не делает

2. Отсутствуют необходимые для построения приложений

компоненты (гемы)

D20

* от 200 элементов и 3-х уровней

Тема 4. Комментарии 1. Многоуровневые *

2. Санитайз (<script>alert(“Egor Homakov”)</script>)

3. Препроцессинг (ссылки, nofollow, разметка, смайлики, фотки)

4. Антиспам (Yandex Antispam, Akismet)

5. Админка

!

Нет и не предвидится гемов реализующих эти требования* Никто не умеет рисовать деревья (Тема 3)

D21

Проблемы Экосистемы

!

1. Никто не создает гемы для решения популярных задач

2. Нет причин создавать комплексные решения для

Экосистемы

D22

Тема 5. Кроп

!

Обрезка картинки - одна из самых популярных задач:

Аватарки, Тизеры

!

Нет решения этой задачи из гема%

PS: решение задачи обычно требует не менее 1 рабочей недели, т.к. это фулл-стек задача JS+Rails+ImageMagick

D23

Проблемы Экосистемы

!

1. Никто не создает гемы для решения популярных задач

2. Нет участников сообщества которые любят решать

full stack задачи

3. Нет причин создавать комплексные решения для

Экосистемы

D24

Тема 6. Файловое хранилище

!

1. Централизованное и каталогизированное хранилище

разнотипных файлов

2. Обработка файлов в зависимости от типа

3. Интерфейс управления и получения URL файла для

использования в контенте

D25

Проблемы Экосистемы

!

1. Нет решения этой задачи из гема

2. Нет причин создавать комплексные решения для

Экосистемы

3. Попытки создать подобные решения сводятся к

подгонке задачи под WYSIWYG

4. Стагнация идей, подходов, решений

5. Нет участников сообщества решающих full stack задачи

D26

Тема 8. Теги

Де-факто стандартом является ActsAsTaggableOn

Однако, простая задача которую успешно решал гем

несколько лет назад успела измениться. Решение стоит на

месте.

Нет никакой надежды, что в ближайшее время появится

альтернатива, соответствующая современным требованиям

D27

Проблемы Экосистемы

!

1. Реализация задачи не соответствует текущим реалиям

2. Нет явных причин создавать комплексные решения для

Экосистемы

3. Стагнация идей, подходов, решений

4. Нет участников сообщества решающих full stack задачи

D28

Тема 9. Deploy

Де-факто стандартом является Capistrano. (И это хорошо)

1. За 10 лет сообщество так и не договорилось о единой

деплоилке подходящей для большинства проектов

2. Деплой-скрипт каждый раз начинается с нуля или

вычленении рецептов из старого проекта

3. Разработчики и теперь делают capify . прямо в проект

4. Создание DeployTool для нового проекта - отдельная

многодневная задача

D29

Проблемы Экосистемы

!

1. Нет простой общепринятой схемы решения задачи

деплоя

2. Пути организации деплоя, описанные в блогах выглядят

не оптимальными с точки зрения поддержки и должны

быть пересмотрены (ИМХО)

D30

Человеческий фактор

!

1. Страх. Они увидят мой код и будут смеяться надо мной

2. “Исключительность”. Только я умею это делать. Это моё

превосходство и конкурентное преимущество

3. Подверженность информационному шуму

D31

Тот, кто хочет сделать блог на Rails,%еще не делал блог на Rails

Будьте готовы решить не только задачи по

созданию самого блога, но и ряд базовых проблем Rails экосистемы, которая не готова предложить практически ничего для создания качественной

блого-системы

D32