Яндекс.Метрика

    Реклама

    Новый облачный форумный движок с мгновенной скоростью работы

    Я хочу рассказать о новом созданнoм мной форумном движке NeoBB. Согласно Википедии, на данный момент существует около 50 форумных движков. Так зачем же было создавать ещё один? По сравнению с конкурентами, у NeoBB есть ряд преимуществ:
    • Он невероятно быстр и масштабируем
    • Прост и интуитивен
    • Позволяет неплохо сэкономить
    • Легко интегрируется

    Идея


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

    Постепенно движок развивался. По просьбам пользователей добавлялся новый функционал. Мне нравилось заниматься им в свободное время. Наконец, когда многие стали спрашивать, что это за движок, и могут ли они установить его себе на сайт, я начал задумываться о более серьёзных перспективах. Было придумано имя NeoBB (neo — новый, bb — bulletin board) и зарегистрирован домен neobb.com. На будущее.

    Реализация


    Осенью 2011 года я решил взяться за проект серьёзно. Я понимал, что самое сложное — сделать конкурентоспособное решение. Поэтому я решил уделить больше всего внимания на имплементацию функционала, которому уделено меньше всего внимания у конкурентов, а именно на те 4 преимущества, перечисленные выше. Рассмотрим все эти преимущества по порядку.


    Быстрота

    Да, большинство движков работают быстро в плане загрузки страниц. Поэтому я решил вынести NeoBB на новый уровень. После прочтения этой статьи на Хабре, я твёрдо решил, что отображение сообщений надо делать в стиле RIA 2.0. Сообщения в теме передаются браузеру в .json, в результате перелистывание страниц мгновенное. Вы можете посмотреть, как это работает в тестовой теме, которyю я создал 31 октября специально для показа данного функционала:

    community.neobb.com/Topic/Instant-Page-Navigation-Demo/4eaf12ae87967f0f24b69306

    Для смены страниц используется небольшая панель, и, как видите, переходить на следующую/предыдущую страницу можно с помощью комбинации клавиш Ctrl + влево и Ctrl + вправо (спасибо Хабру за эту идею).

    image

    Другой пример реализации RIA 2.0 — отслеживание новых сообщений в теме. Если в теме находится несколько человек, то вам больше не надо обновлять страницу для того, чтобы проверить, нет ли чего-нибудь нового. Все новые сообщения отображаются мгновенно, как в чате. Это же касается и личных сообщений (conversations), в которых, кстати, могут участвовать несколько человек.



    Производительность и масштабирование

    Думаю, время рассказать о технической составляющей движка, и что именно позволяет ему выдерживать тысячи пользователей online и масштабироваться.

    Как и большинство моих творений, NeoBB написан на C#/ASP.NET MVC 3 с использованием NoSQL б/д mongoDB. Данная связка даёт невероятную производительность. C# — статический компилируемый язык, ASP.NET MVC — легковесный framework, a mongoDB — невероятно производительная и нетребовательная к ресурсам база данных. Когда я впервые попробовал mongoDB пару лет назад, я понял, что назад к Sql Server/Postgresql я не вернусь. По всем моим тестам, применимым к NeoBB, mongoDB в разы быстрее, поедая при этом в десятки раз меньше CPU.

    В результате сайт, написанный с помощью данных технологий, выдерживает тысячи пользователей online на одном сервере, что позволяет сэкономить на железе и предоставить более выгодные условия для пользователей (об этом — ниже).

    На данный момент NeoBB хостится на дешёвом американском сервере за $70 в месяц (1GB RAM, Celeron). После того, как NeoBB наберёт популярность, и доcтигнет отметки в несколько тысяч пользователей online, я перейду на более мощный сервер с 8 GB RAM и Intel Core i3.

    Простота и интуитивность использования

    Я сторонник простоты, интуитивности и минимализма без ущерба функционалу. На мой взгляд, хорошим примером, подходящим под данные парадигмы, является ВКонтакте. Каждый имеет своё мнениe по поводу данной соц. cети да и соц. сетей вообще, но я думаю, многие согласятся со мной, что в техническом плане ВКонтакте прост, интуитивен и функционален. Чего не скажешь, например, о том монстре, каким стал facebook.

    Так получилось, что большинство движков разрабатываются очень давно и тянут за собой наследие старины (глотком свежего воздуха определённо стал XenForo, написанный Киром и командой в 2010 году с нуля). Очень часто при пользовании форумами я теряюсь в обилии ссылок, кнопок и надписей. В чём разница между страницами User Panel и Member? Где можно посмотреть список моих сообщений? И так далее. Конечно, со временем, люди разбираются, так же как разбираются, как получить список всех своих друзей в facebook.

    NeoBB прост, интуитивен и функционален. Сначала кажется, что у NeoBB функционал значительно меньше, чем у конкурентов, так как в админке всего 9 ссылок, а в профиле пользователя и того меньше: 4. Но потом приходит понимание, что вот он, функционал, совсем рядом. Драгоценное место отделяется непосредственно контенту, а не морю ссылок и кнопок.

    В качестве примера ещё хочу привести то, как реализована сортировка форумов и их категорий. Во всех без исключения форумах приходится выставлять параметр order number. При добавлении новой категории/форума order number может совпаcть, и тогда надо проходить по каждому форуму и исправлять его.

    В NeoBB сортировка реализована с помощью drag&drop:



    image
    Облако

    Другой аспект простоты и функциональности NeoBB заключается в его «облачности». Я понимаю, что данный аргумент спорен для многих, более того, в конце статьи я подведу итог: для кого подходит NeoBB, а для кого нет, и это будет играть ключевую роль. Так почему же облако?

    При проектировании NeoBB, как я уже говорил, я хотел заполнить недостающую нишу на рынке. Так вот, на рынке полно форумных движков, работающих по классической схеме. Вот какие действия должен сделать человек, который хочет создать форум по классической схеме:

    1. Выбрать движок
    2. Заплатить за него (не требуется в случае использования бесплатного ПО)
    3. Скачать архив с исходным кодом
    4. Выбрать хостинг
    5. Заплатить за хостинг
    6. Загрузить скрипт с помощью FTP
    7. Настроить форум

    В случае NeoBB, список такой:
    1. Выбрать план (бесплатный, стандартный, премиум, custom)
    2. Настроить форум

    Да, существуют сайты, предоставляющие похожие услуги на других движках. Более того, IPB официально продаёт Hosted Communities.

    Почему же не предоставлять выбор: кто хочет — пусть пользуется облаком, а кто хочет — пусть загружает движок на свой сервер. Согласен, выбор — это хорошо. Однако в данном случае есть ещё несколько причин в пользу только облачного варианта.

    NeoBB написан на C#/ASP.NET MVC 3 и использует mongoDB. 99.9% shared хостингов сразу отметается. На Linux/Mono он не взлетит, так как Xamarin так до конца и не допилили поддержку MVC 3. Остаются только пользователи Windows VPS/VDS. А таких очень мало.

    И, наконец, при такой централизованной системе у каждого пользователя NeoBB всегда будет последняя версия. Никаких больше обновлений, и плат за эти обновления. А главное — никакой дефрагментации. Исправлен баг/уязвимость? Можно быть уверенным, что ни на одном NeoBB форуме её не будет.

    Последнее время облачые сервисы всё больше входят в нашу жизнь: Dropbox, Google Docs, Evernote, iCloud. На мой взгляд, самый близкий к NeoBB облачный сервис — Disqus. Он добился невероятной популярности и доказал, что комментарии не обязательно хранить у себя на сервере. Правда, Disqus не без изъянов, и у ребят ещё много работы над стабильностью сервиса.

    Доступность

    Одно из главных преимуществ NeoBB — доступность. Вот сравнение с двумя популярными облачными форумными хостингами:



    Как видите, NeoBB в разы дешевле, в то же время предоставляется некоторый функционал, отсутствующий у конкурентов. За счёт чего получаются такие низкие цены? Во-первых, как я уже говорил, высокая производительность и оптимизация движка позволяет сэкономить на серверах. Во-вторых, я (пока) единственный разработчик. Да и вообще, я считаю, что более доступные цены в данной отрасли выгоднее как для покупателя, так и для продавца.

    Чтобы не было ощущения, что NeoBB дешевле, потому что хуже, существует бесплатный план без рекламы и без истекающего срока. Он отлично подходит для тестирования и миграции текущего форума. Ознакомиться с этим и другими планами можно на главной странице проекта.



    Теперь давайте сравним стоимость NeoBB со стоимостью хостингa на своём сервере. Будем исходить из ~75 пользователей online. Для того, чтобы выдержать 75 пользователей online на форуме vBulletin, SMF, phpBB, IPB и т.д., придётся платить минимум $150 в год за хостинг. Добавим к этой сумме стоимость лицензии, если форум платный: $195 для vBulletin. Цены на другие проприетарные форумы находятся примерно в той же категории. Получается от $150 до $350 в год. С NeoBB это обойдётся ровно в $100 в год.

    Интеграция

    Не смотря на то, что ваш NeoBB форум находится на другом сервере и использует совершенно другие технологии, легко создаётся ощущение полной интеграции с вашим сайтом.

    NeoBB легко «ставится» на ваш собственный домен/поддомен, так что можно воспользоваться устоявшейся системой «главный сайт на site.com, форум на forum.site.com». Как это делать, описано в документации. Более того, вы можете интегрировать NeoBB с вашей текущей базой пользователей, чтобы пользователям сайта не надо было регистрироваться и даже авторизовываться на форуме.

    Например, если ваш сайт написан на C#/ASP.NET, вы должны загрузить библиотеку NeobbIntegration.dll и подключить её к проекту. Библиотека очень простая:

    // Инициализация
    var neobb = new NeobbIntegration("forumdomain.com");

    // Регистрация нового пользователя на форуме
    if (neobb.RegisterNewUser(email, password, username)) Log("NeoBB user registered successfully");

    // Авторизация пользователя (работает, если NeoBB форум находится на поддомене)
    neobb.AuthenticateUser(Response);


    Кастомизация

    Это один из самых интересных аспектов, с которым мне пришлось столкнуться. Кастомизация форума очень важна. Если пользователь не сможет настроить внешний вид форума под себя, то с большой вероятностью пользоваться таким форумом он не захочет.

    Сначала я создал страничку с текстбоксами «Цвет текста», «Цвет ссылок» и т.д. Но потом я понял, что это ужасно ограничивает дизайнера и решил ввести поддержку полной настройки CSS. Вот что получилось:



    Функциональнее и понятнее. В ближайшем будущем будут добавлены стандартные темы.

    Теперь о самом интересном: шаблоны. По понятным причинам простое редактирование кода а-ля SMF или phpBB не сработает. Поэтому я решил пойти по пути шаблонов, как в XenForo. На данный момент они всё ещё в разработке. Но будет выглядеть это примерно так:

    <neobb:if IsLoggedIn="true">
    <neobb:SayThankYouButton />
    </neobb:if>


    Да, на данный момент шаблоны пока не реализованы. Но это не означает, что нельзя сделать что-то уникальное. Например, вот мой сайт medvednikov.com, недавно переведённый с блоггера на NeoBB:



    Mini CMS

    В определённый момент жизни я решил, что пора создать сайт-визитку. Сначала я быстренько написал сайт на голом html и загрузил его на бесплатный хостинг. После того, как этот бесплатный хостинг упал на несколько дней, я начал искать альтернативу. Выбор пал на Blogger. Надёжный и бесплатный сервис от Google с привязкой к домену первого уровня. После нескольких часов редактирования громоздкого шаблона я получил то, что хотел. Функционал блога мне был не нужен. Только странички-визитки.

    И тогда мне пришла в голову идея: почему бы не добавить в NeoBB функционал по созданию небольших сайтов-визиток? Результат вы видите на скриншоте выше.

    Это определённо не замена полноценным CMS вроде WordPress, но наверняка многим пригодится. Конечно, развитие функционала форума имеет наивысший приоритет. Mini CMS, а возможно и Mini Blog, будут развиваться менее резкими темпами.

    Функционал


    В NeoBB имеется практически всё, что требуется от форума. Перечислять это было бы слишком долго. Лучше напишу о том, что пока не готово:

    • Шаблоны
    • File attachements
    • Подфорумы, подподфорумы и т.д.
    • Голосования
    • Закрытые форумы
    • Отдельные разрешения для модераторов
    • Вход через facebook


    С файлами я пока не решил. Но я почти уверен, что будет интеграция с каким-нибудь облачным сервисом, типа SkyDrive. Зачем тратить bandwidth и занимать место на диске, когда есть специализированные для этого сервисы? Сейчас вообще идёт тенденция к отказу от attachment'ов и замена их на cloud storage (мне очень понравилось видео на эту тему от создателей почтового клиента Sparrow: sparrowmailapp.com)

    Подфорумы конечно будут реализованы asap, это очень нужный и простой в плане программирования функционал. То же самое и с голосованиями, разрешениями и закрытыми форумами. Замечу, что форумы, закрытые только для модераторов и администраторов, уже реализованы. Закрытые форумы — форумы, где нужна регистрация для просмотра контента.

    Я большой поклонник OpenID, поэтому, конечно, реализовал авторизацию через OpenID. Пока это Google (как самый популярный провайдер) и Yahoo. Скоро будут добавлены и другие. К моему большому разочарованию, невероятно популярный facebook вместо использования OpenID продвигает свой facebook Connect. Руки до него пока не дошли, но ввести его нужно будет обязательно.

    Хочется написать о функционале, которого нет и, скорее всего, не будет. По крайней мере, в ближайшие 6 месяцев точно. Аддоны. Реализовать их в NeoBB чрезвычайно сложно, поскольку нет доступа к исходному коду и базе данных. На данный момент есть более важные вещи, которые надо сделать (те же шаблоны). Однако не всё так плохо. Во-первых, большинство функций топовых аддонов уже есть в NeoBB из коробки (например, «спасибо» за сообщения, день рождения, чат, интеграция с Google AdSense, SEO заголовки, флаг страны пользователя, редактированиe заголовка темы и т.д.). Во-вторых, если пользователю будет очень не хватать какого-то функционала, он/она всегда может написать об этом в раздел Suggestions, и, скорее всего, данный функционал будет доступен по дефолту.

    Планы на будущее


    Я подавал заявки в два бизнес-инкубатора: Spanish Village и SeedCamp. В первом мне отказали, видимо, из-за возраста, во втором сказали, что нет клиентской базы, и невозможно понять, будет ли проект приносить доход. Поэтому я решил продвигать NeoBB самостоятельно.

    Мне кажется, что у NeoBB есть все шансы взять определённый процент рынка, не смотря на уже устоявшихся больших игроков. После реализации перечисленного выше функционала я планирую начать агрессивную рекламную кампанию. Существует также партнёрская программа, так что пользователи, которым понравился движок, могут привлекать своих знакомых и зарабатывать на этом 25% от дохода.

    NeoBB расчитан как на новых пользователей форумов, так на и тех, кто уже имеет форум и готов мигрировать. На данный момент поддерживается миграция с phpBB и SMF, скоро будет готова миграция с vBulletin и IPB. Кстати, буду благодарен тем, кто попробует перенести свой phpBB/SMF форум на NeoBB, так как у меня своих крупных форумов нет. Как я уже говорил, для тестирования можно использовать бесплатный план.

    Заключение


    Один продукт не может удовлетворить каждого пользователя. Поэтому хорошо, когда рынок насыщен, есть выбор, и есть конкуренция.

    NeoBB скорее всего не подходит вам, если вы:
    • Любите копаться в исходниках и настраивать продукт под себя
    • Из принципа предпочитаете хранить все данные у себя на сервере
    • Уже используете форумное решение с большим количеством аддонов (возможно, самописанными), альтернатив которым нет у NeoBB

    NeoBB подходит вам, если вы:
    • Хотите быстро и выгодно создать новый форум
    • Хотите получить быстрый и удобный форум, который just works
    • Хотите получить плотную интеграцию с вашей текущей пользовательской базой
    • Не боитесь пробовать что-то новое