Bullshit on rails

32
bullshit on rails или Блог не за 15 минут Илья Зыкин github.com/the-teacher

description

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

Transcript of Bullshit on rails

Page 1: Bullshit on rails

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

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

Page 2: Bullshit on rails

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

D2

Page 3: Bullshit on rails

Миссия%!

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

D3

Page 4: Bullshit on rails

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

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

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

D4

Page 5: Bullshit on rails

Результат

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

D5

Page 6: Bullshit on rails

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

Bullshit!

D6

Page 7: Bullshit on rails

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

Bullshit!

D7

Page 8: Bullshit on rails

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

Bullshit!

D8

Page 9: Bullshit on rails

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

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

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

D9

Page 10: Bullshit on rails

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

D10

Page 11: Bullshit on rails

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

D11

Page 12: Bullshit on rails

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

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

D12

Page 13: Bullshit on rails

1. Design/Bootstrap

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

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

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

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

D13

Page 14: Bullshit on rails

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

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

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

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

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

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

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

12. Deploy (тема 9)

D14

Page 15: Bullshit on rails

Тема 1. Роли

!

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

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

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

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

!

ACL9? pundit? declarative_authorization?

(same shit)

D15

Page 16: Bullshit on rails

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

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

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

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

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

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

D16

Page 17: Bullshit on rails

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

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

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

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

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

D17

Page 18: Bullshit on rails

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

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

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

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

D18

Page 19: Bullshit on rails

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

!

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

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

D19

Page 20: Bullshit on rails

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

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

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

!

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

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

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

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

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

D20

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

Page 21: Bullshit on rails

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

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

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

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

5. Админка

!

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

D21

Page 22: Bullshit on rails

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

!

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

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

Экосистемы

D22

Page 23: Bullshit on rails

Тема 5. Кроп

!

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

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

!

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

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

D23

Page 24: Bullshit on rails

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

!

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

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

full stack задачи

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

Экосистемы

D24

Page 25: Bullshit on rails

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

!

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

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

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

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

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

D25

Page 26: Bullshit on rails

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

!

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

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

Экосистемы

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

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

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

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

D26

Page 27: Bullshit on rails

Тема 8. Теги

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

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

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

месте.

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

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

D27

Page 28: Bullshit on rails

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

!

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

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

Экосистемы

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

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

D28

Page 29: Bullshit on rails

Тема 9. Deploy

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

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

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

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

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

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

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

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

D29

Page 30: Bullshit on rails

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

!

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

деплоя

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

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

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

D30

Page 31: Bullshit on rails

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

!

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

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

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

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

D31

Page 32: Bullshit on rails

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

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

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

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

D32