С 2008 года в экосистеме рельса так и не произошло существенных изменений в плане построения контент и медиа проектов - время идет, а как и прежде все приходится делать с нуля и самому. Обещания о том, что на рельсах можно пачками делать простые проекты - несостоятельны. В скринкастах Блог за 15 минут - нам обещали другое ))
2. Мой персональный взгляд на проблемы экосистемы
Ruby on Rails по отношению к Тематическим, Медиа
и Блого проектам
Расскажу о тех проблемах и трудностях с которыми
сталкиваются разработчики при построении контент-
ориентированных проектов, какие задачи не решены
и что можно сделать с сфере open source тем, кто
хочет внести свой вклад, но не знает с чего начать
D2
3. Миссия%
!
1. Обозначить проблемы экосистемы
2. Дать информацию о нерешенных задачах
3. Привлечь junior и middle разработчиков к
решению проблем
D3
4. Много лет Rails продвигал идею "Блог за 15 мин"
(2006 — 2010)
Как они это сделали?
1. Простые модели и AR
2. Скаффолдинг (контроллеры, вьюхи)
3. Веб-сервер из коробки
4. Гемы. Собери все что хочешь!
5. No deploy! :)
D4
8. Я могу быстро сделать на Rails
сложный (production ready) сайт
Bullshit!
D8
9. Но почему? (rails scope)
!
1. Практически нет production-ready гемов
2. "Отцы-основатели" rails open source уходят
3. Нет эффективных принципов для делигирования
управления гемами
4. Новые гемы практически не разрабатываются
5. Задачи бизнеса ушли вперед. Экосистема Rails стоит
на месте
6. Хорошие решения скрыты NDA
7. Деплой по-прежнему проблема (Рельсу вот вот 10 лет)
D9
10. Тот, кто хочет сделать блог на Rails,%
еще не делал блог на Rails
D10
12. Сделаем блог для пары пользователей?!
Это ведь должно быть просто!
D12
13. 1. Design/Bootstrap
2. Пользователи. Devise. Ок
3. Роли. (Тема 1)
4. Страницы. Ок
5. Состояния [draft | published | restricted | banned]
+ callbacks для счетчиков или уведомлений
=> StateMachine (Тема 2)
D13
14. 6. Категории статей. Дерево? ActsAsNestedSet? (тема 3)
7. Комментарии
Многоуровневые? Санитайз? Препроцессинг? (тема 4)
8. Главная картинка поста. Кроп? (тема 5)
9. Загрузка файлов для использования в контенте. (тема 6)
10. Метаданные для социальных сетей (тема 7)
11. Теги (тема 8)
12. Deploy (тема 9)
D14
15. Тема 1. Роли
!
1. Де-факто стандартом является CanCan
2. Ryan Bates - “мертв”... или уехал в Тибет
3. CanCan сделан программистом для программистов
4. Многие хотят управлять ролями из админки
!
ACL9? pundit? declarative_authorization?
(same shit)
D15
16. Проблемы Экосистемы
1. Ключевой участник сообщества пропал
2. Нет эффективных механизмов поддержания гемов, если
автор не активен
3. Практически нет популярных альтернатив
4. Стагнация идей, подходов и решений
D16
17. Тема 2. Управление состояниями и колбэками
1. Де-факто стандартом является StateMachine
2. Aaron Pfeifer (PluginAWeek) - “мертв”... или уехал в Тибет
3. Качественную альтернативу придумать весьма сложно.
Вероятно и не надо
D17
18. Проблемы Экосистемы
1. Ключевой участник сообщества пропал
2. Нет эффективных механизмов поддержания гемов, если
автор не активен
D18
19. Тема 3. Категории статей. ActsAsNestedSet
!
На ActsAsNestedSet базируются: каталогизация, комментарии и
многое другое, что требует структуры в несколько уровней
“Тупые” реализации вида
Category + SubCategory + SubSubCategory
в расчет не берем
D19
20. Техническая проблема
1. Никто не умеет быстро “рисовать” большие деревья*
2. Для управления деревьями нет GUI
!
Проблемы Экосистемы
1. Имея отличную базу для создания прикладных решений,
таких решений никто не делает
2. Отсутствуют необходимые для построения приложений
компоненты (гемы)
D20
* от 200 элементов и 3-х уровней
21. Тема 4. Комментарии
1. Многоуровневые *
2. Санитайз (<script>alert(“Egor Homakov”)</script>)
3. Препроцессинг (ссылки, nofollow, разметка, смайлики, фотки)
4. Антиспам (Yandex Antispam, Akismet)
5. Админка
!
Нет и не предвидится гемов реализующих эти требования
* Никто не умеет рисовать деревья (Тема 3)
D21
22. Проблемы Экосистемы
!
1. Никто не создает гемы для решения популярных задач
2. Нет причин создавать комплексные решения для
Экосистемы
D22
23. Тема 5. Кроп
!
Обрезка картинки - одна из самых популярных задач:
Аватарки, Тизеры
!
Нет решения этой задачи из гема%
PS: решение задачи обычно требует не менее 1 рабочей недели, т.к. это фулл-стек задача JS+Rails+ImageMagick
D23
24. Проблемы Экосистемы
!
1. Никто не создает гемы для решения популярных задач
2. Нет участников сообщества которые любят решать
full stack задачи
3. Нет причин создавать комплексные решения для
Экосистемы
D24
25. Тема 6. Файловое хранилище
!
1. Централизованное и каталогизированное хранилище
разнотипных файлов
2. Обработка файлов в зависимости от типа
3. Интерфейс управления и получения URL файла для
использования в контенте
D25
26. Проблемы Экосистемы
!
1. Нет решения этой задачи из гема
2. Нет причин создавать комплексные решения для
Экосистемы
3. Попытки создать подобные решения сводятся к
подгонке задачи под WYSIWYG
4. Стагнация идей, подходов, решений
5. Нет участников сообщества решающих full stack задачи
D26
27. Тема 8. Теги
Де-факто стандартом является ActsAsTaggableOn
Однако, простая задача которую успешно решал гем
несколько лет назад успела измениться. Решение стоит на
месте.
Нет никакой надежды, что в ближайшее время появится
альтернатива, соответствующая современным требованиям
D27
28. Проблемы Экосистемы
!
1. Реализация задачи не соответствует текущим реалиям
2. Нет явных причин создавать комплексные решения для
Экосистемы
3. Стагнация идей, подходов, решений
4. Нет участников сообщества решающих full stack задачи
D28
29. Тема 9. Deploy
Де-факто стандартом является Capistrano. (И это хорошо)
1. За 10 лет сообщество так и не договорилось о единой
деплоилке подходящей для большинства проектов
2. Деплой-скрипт каждый раз начинается с нуля или
вычленении рецептов из старого проекта
3. Разработчики и теперь делают capify . прямо в проект
4. Создание DeployTool для нового проекта - отдельная
многодневная задача
D29
30. Проблемы Экосистемы
!
1. Нет простой общепринятой схемы решения задачи
деплоя
2. Пути организации деплоя, описанные в блогах выглядят
не оптимальными с точки зрения поддержки и должны
быть пересмотрены (ИМХО)
D30
31. Человеческий фактор
!
1. Страх. Они увидят мой код и будут смеяться надо мной
2. “Исключительность”. Только я умею это делать. Это моё
превосходство и конкурентное преимущество
3. Подверженность информационному шуму
D31
32. Тот, кто хочет сделать блог на Rails,%
еще не делал блог на Rails
Будьте готовы решить не только задачи по
созданию самого блога, но и ряд базовых проблем
Rails экосистемы, которая не готова предложить
практически ничего для создания качественной
блого-системы
D32