Мне тоже интересна эта тема! Но я считаю, что чёткое определение того, что подразумевается под «социальными сетями», — это критически важный первый шаг, чтобы превратить это обсуждение в нечто практичное, за что можно будет побороться и, надеюсь, реализовать. Как вы и другие отмечаете, в Discourse уже есть множество аспектов «социальных сетей» в его встроенном наборе функций (или в плагинах):
- Профили пользователей
- Активность пользователей
- Подписка на пользователей
- Обсуждения между пользователями
- Продвинутое форматирование и обработка контента (на самом деле лучше, чем у большинства социальных сетей)
- Списки контента по дате/активности и т. д.
Я мог бы продолжать, но суть вы уловили. Так в чём же разница между Discourse и социальными сетями? Похоже, что выявление того, чего в Discourse не хватает, окажется более плодотворным для решения этой задачи. Первое, что сразу приходит на ум (и, как мне кажется, вы коснулись этого в своём первоначальном посте), — это отсутствие представления в виде «ленты».
Главное отличие того, что есть в Discourse сейчас (например, раздел «Последние»), от представления в виде «ленты», — это возможность напрямую просматривать всё содержимое темы и затем взаимодействовать с ним из основной ленты. Это имеет множество последствий: некоторые положительные, некоторые, возможно, отрицательные. Но с точки зрения пользовательского опыта это хорошо тем, что создаёт среду с меньшим трением для потребления и взаимодействия с контентом. Одно из главных преимуществ, на мой взгляд, — это помощь пользователю в поддержании последовательного «контекста», например, сохранение его позиции в ленте. Twitter особенно хорошо справляется с этим при навигации в браузере (вперёд/назад), тогда как Facebook — нет, хотя он позволяет лучше взаимодействовать с элементами внутри ленты (например, разворачивать комментарии, писать комментарии и т. д., не покидая ленту).
Discourse тоже хорошо справляется с навигацией вперёд/назад, возвращением к последней позиции прокрутки и кратким выделением последней нажатой темы. Но высокая плотность списков тем в Discourse всё ещё может затруднять удержание своей позиции, а что ещё важнее, просмотр только тем часто не даёт достаточно информации, чтобы понять, хотите ли вы дальше взаимодействовать с чем-то.
Теперь, я думаю, что «чистое» представление в виде ленты, полностью воспроизводящее работу существующих социальных сетей, не обязательно желательно. Оно, возможно, противоречит некоторым идеалам Discourse, например, избеганию поверхностных, импульсивных взаимодействий и т. д. Но я не считаю, что концепция ленты сама по себе неизбежно противоречит этим идеалам. Скорее, я думаю, стоит поразмыслить над тем, как можно получить некоторые преимущества такой модели, сохраняя при этом преимущества текущего подхода Discourse.
В голову приходит несколько идей. Во-первых, предположим, что у нас есть привычное представление в виде ленты, как у Facebook или Twitter, ранжированное по некоторому алгоритму или модели — возможно, так же просто, как по новизне или популярности. Она показывает «посты», которые в Discourse были бы темами. Полностью ли отображаются темы или только их краткие содержания, и показываются ли комментарии/ответы по умолчанию — это важные детали реализации, заслуживающие внимания.
Отображение полных тем по умолчанию проблематично, так как это может привести к чрезвычайно длинной прокрутке и несколько нивелирует смысл представления в виде ленты, поскольку вам приходится полностью прокручивать хотя бы начало каждой темы, чтобы увидеть следующую. Поэтому краткие содержания кажутся более разумными. Мне неизвестен простой способ генерации качественных кратких содержаний постов (это отличается от способности Discourse резюмировать обсуждение), поэтому, вероятно, наиболее распространён наивный подход «сворачивать содержимое тела после X символов/слов», и он, скорее всего, широко используется именно по этой причине. Может быть, это не идеально, но пока я не знаю лучшей альтернативы. Как и в большинстве других реализаций, это могло бы быть простое разворачивание по клику (например, «показать больше»), хотя было бы идеально иметь возможность либо перейти к концу с любой точки (то есть «следующая тема в ленте»), либо свернуть обратно и вернуться туда, где вы остановились в «ленте»/потоке. У Facebook это не всегда реализовано (а для Twitter это неактуально, поскольку у него крайне ограниченная длина «поста»
).
Комментарии/ответы тоже могли бы разворачиваться по клику, хотя я считаю, что идеальным поведением было бы появление полноценного редактора снизу в виде оверлея (как сейчас при просмотре темы), а не написание ответов непосредственно в строке, как в Facebook. Это, на мой взгляд, помогло бы поощрять более длинные и глубокие ответы. Вы также могли бы использовать цитирование из обычного просмотра темы. Единственное реальное отличие состоит в том, что если вы прокрутите вверх или вниз за пределы содержимого темы, вы сразу увидите другие темы (хотя бы в свёрнутом виде).
Альтернативой сворачиванию/разворачиванию, которая могла бы лучше удовлетворить желание показывать комментарии и взаимодействовать с темами, обеспечивая при этом более просторную и изысканную область для написания (и тем самым избегая некоторых негативных стимулов маленьких полей для комментариев, например, поверхностных взаимодействий), могли бы быть всплывающие представления тем, то есть модальные окна с затемнением фона, которые закрываются кликом вне окна. Это похоже на модель Reddit. Мне не всё в этом подходе нравится, но я думаю, что большинство моих возражений связаны с пользовательским опытом и могут быть устранены, например, за счёт лучшего распознавания намерений пользователя при кликах (я слишком часто случайно кликаю вне веток Reddit). Преимущество в том, что у вас есть много места для представления контента, это поощряет чтение темы и более глубокое взаимодействие.
Я считаю, что общий подход к ленте, и особенно «модель Reddit», особенно интересны для сравнения с существующим подходом Discourse. Можно утверждать, что существующие списки тем более поверхностны и поддаются беглому просмотру, чем, например, лента Facebook, где вы хотя бы видите часть контента за пределами заголовка. Конечно, Topic List Excerpts частично решает эту проблему, но всё же это не то же самое, что настоящее представление в виде «ленты». Тем не менее, возможно, это хорошая отправная точка, и тогда единственное, что вам, возможно, захочется реализовать, — это идея «модального» просмотра тем (или разворачивание по клику в строке, но это, кажется, более сложная задача для реализации с точки зрения моего наивного, не программистского мозга). @anon73664359, как вы думаете, такая настройка удовлетворила бы большую часть вашего желания получить «социальную сеть» на базе Discourse? То есть Discourse с краткими содержаниями тем, видом «Последние темы» и всплывающим модальным просмотром тем? Если нет, то чего ещё не хватает?