Я не забочусь ли вы построить программное обеспечение с нуля или просто создать кучу модификаций для некоторого уже существующего программного обеспечения. Есть преимущества и недостатки обоих методов, которые будут рассмотрены в связи с остальной частью вашей ставки.
Предложения должны включать, по крайней мере, эту информацию:
- Описание общей архитектуры вы планируете
- Список любой из дополнительных функций, которые я упомянул, что ваше программное обеспечение будет иметь
- Дополнительные функции ваше программное обеспечение будет иметь, что я не упомянул
- Образцы вашего прошлого кода
- Цена. Если вы хотите, ссылки или другие "надбавки", Включают их как часть цены.
Форуме о
Я буду рассматривать предложения, которые имеют только ~ 95% "необходимые функции" перечисленные ниже, до тех пор, пока вы доставка полезного продукта. Например, вы не необходимость использовать свои предпочтительные языки программирования. Это также хорошо для вас, чтобы поставить неполную (но рабочий и стабильный) продукт быстро, а затем добавить на программное обеспечение после того, как она используется.
Вы не можете ставку только на один аспект, таких как дизайн или программирование. Вы должны доставить полный продукт.
Эта нить только ставки, вопросы участников о технических характеристиках, а также вопросы, которые у меня есть для участников торгов. Другое обсуждение этого процесса должны идти в отдельной теме.
Требования:
Обзор проблем с SMF
SMF очень хорошо, если смотреть со стороны. Мне нравится внешний вид кода графического интерфейса, он имеет множество полезных функций, и это быстро. Тем не менее, код абсолютно ужасно. Это было ясно написано людьми, которые не имеют хорошее представление о безопасности или кодирования стиля. Примеры:
- Многие из функций высокого уровня, как RemoveTopic могут быть использованы только в одном месте из-за предположения, что они делают, но функция более низкого уровня (removeTopics для RemoveTopic) опускает важные вещи, как проверка безопасности. При выполнении ничего сложного с SMF, я часто копировать функции / склеивание на высоком уровне в течение нескольких измененных строк, за исключением.
- Даже низкоуровневые функции иногда шалить при использовании вне их предполагаемой области, например, опечатка. Там не часто никакого способа обработки ошибок самостоятельно без хаков.
- Стиль кодирования в основном отстой. Условный оператор используется слишком много. Там в заблуждение такие вещи, как если (! пусто ($ включен)).
- Много данных в кэше, но это трудно понять, когда кэшированные данные доступны и где эти данные находятся, когда она доступна. Данные профиля пользователя могут быть в $ контексте [ «пользователя»], $ user_info, в другом месте, или это может быть не доступно.
- SMF делает сумасшедшие вещи, как сканирование бинарных вложений для "подозрительные строки" (как PHP) в честь "безопасность",
- Многие ограничения и ограничения безопасности можно легко обойти путем использования причуды в коде. Есть много простых отказ в обслуживании нападения.
- Логика очень тесно связана с презентацией.
- Практически каждая модификация SMF глючит в некотором роде или другой, так как авторы модификации, как правило, любители и потому, что код SMF настолько трудно иметь дело с.
- несоответствие базы данных может произойти случайно.
В идеале, я хотел бы получить от этого проекта является программным обеспечением очень похоже на SMF на внешней стороне (аналогичные функции, быстро и т.д.), но с кодом, который является ясным и безопасным, плюс несколько дополнительных функций, которые SMF не есть (в основном умеренности, связанные с), перечисленными ниже.
возможности SMF
Все популярные функции SMF должны поддерживаться программным обеспечением. Например:
- Игнорировать пользователя
- Игнорирование доска
- Уведомления по электронной почте
- Печать страницы
- Профиль страницы
- BB-коды
- Опросы
- подразделы Многоуровневые
- премьеры
- Контекстный поиск, простой поиск и расширенный поиск
- "Непрочитанные сообщения с вашего последнего посещения" а также "новые ответы на ваш пост"
- Форум и пользователей Статистика
- Аватары
- Различные пользовательские настройки
- Хорошая поддержка Unicode
- JavaScript быстрое редактирование
Обширный интерфейс администратора является не требуется, однако.
Код
Я предпочитаю, чтобы программное обеспечение было написано в PHP, C ++ или Java, поскольку у меня есть наибольший опыт работы с этими тремя языками. Код должен быть чистым и легко изменить. Я хочу быть в состоянии сделать даже сложные изменения в поведении без особых проблем.
Лицензия
Программное обеспечение может быть под любой лицензией, пока у меня есть полный доступ к коду навсегда, я могу изменить код, и я не буду обязан публиковать частные изменения, внесенные в код (без AGPL). Она может быть основана на платное программное обеспечение, если стоимость лицензии отражена в вашей цене.
Это было бы хорошо для вас, чтобы продать свое программное обеспечение после того, как вы сделаете это для этого форума.
База данных
PostgreSQL является значительно предпочтительным. Запросы должны быть хорошо оптимизированы. Я не поклонник абстракции базы данных слоев.
Запросы к базе данных следует везде, где это возможно сделать, используя подготовленные заявления, что-то вроде pg_query_params, или какой-либо другой метод, который не требует от программиста вручную избежать вещи рядный.
Безопасность
Безопасность очень важна. Ваш код должен иметь "как правило, безопасная архитектура": Это должно быть очень трудно для программиста ошибочно ввести недостатки безопасности.
Используйте схему хеширования Описанная здесь. Пароли должны быть обновлены автоматически, когда CRYPT_PARAMS изменяется. Устаревший SHA-1 пароли (sha1 (пароль сцепляется с строчным именем)) также должны быть обновлены.
Ни одна группа пользователей не должны быть в состоянии выполнить произвольный код. SMF и другое программное обеспечение, форум позволяют администраторам выполнить произвольный PHP код с помощью модификации или темы. Это не в порядке; если вы используете такой форум программное обеспечение в качестве основы для вашего программного обеспечения, вам необходимо отключить эту функцию и заменить его каким-либо другим способом обновления модификации / тема / и т.д..
Все действия должны быть сделано путем размещения сервера. GET запросы не должны иметь побочные эффекты.
UI
Тема по умолчанию должна быть минималистичной как текущая тема. Ничего такого, что выглядит "веб-2,0": Нет речи пузыри, никакого существенного пространства между столбами, без существенных эффектов при наведении курсора, а несколько скругленных углов.
Тема по умолчанию должна хорошо работать со всеми функциональными возможностями и разумной компоновкой страницы на текстовых браузерах без JavaScript. Он должен также работать отлично на браузерах с необычно малыми размерами браузера. Она должна быть по крайней мере, до некоторой степени использовать (хотя, возможно, не очень) на древних и сломанные браузеры, такие как IE6.
То же цветовая схема, как мы сейчас имеем: зажигать с некоторыми синим.
Там должна быть функциональность для позволяя пользователям выбрать один из нескольких интерфейсов. Вам нужно только предоставить по умолчанию один, хотя.
Настройки администратора, которые не изменяются очень часто может быть изменчива из файлов, а не через веб-интерфейс, хотя изменения настроек из файлов должно быть легко. Веб-интерфейс не должен позволять администраторам добавлять / редактировать UIs, выполнить произвольный код / SQL или подделывать регистрации.
классы пользователей
Так что вы знаете какую-либо систему membergroup, которая необходима, вот в настоящее время спланированные membergroups. Все это должно быть возможно с вашим программным обеспечением. Люди могут принадлежать к более чем одной membergroup. Это, безусловно, будет переделано много в будущем, так что не прописывать в особенности membergroup / разрешении.
- Админы, со всеми полномочиями. Только группа, способная видеть IP-адрес. Должна быть обеспечена возможность для администраторов, чтобы сделать определенные группы, определенные должности, а также некоторые темы невосприимчивыми к определенным типам умеренности.
- Глобальные моды, способные делать все с постами и плакатами.
- Местные модники, способные делать все с должностью и плакатами в их разделах. Плакаты запретили местный мод только запрещены в секциях, что локальная мода имеет юрисдикцию.
- Младшие моды, которые могут только умеренные плакаты, которые не установлены.
- Штатные плакаты: все плакаты, которые встречались несколько легко конфигурируемых критериев. Начнут с того, что критерии будут 8 нагруженных часов онлайн (см ниже информации о взвешенной статистике).
- Categorizers: Можно переместить все темы
- Белый список: иммунитет от прокси запретов, и, возможно, других ограничений позже
- VIP жертвователь: с возможностью доступа к разделу дарителя, способный изменить свое имя, и может присвоить себе пользовательский заголовок
- Donator +: с возможностью доступа к разделу дарителя и в состоянии изменить свое имя
- Донатор: с возможностью доступа к разделу Donator
- Доносчик: Невозможно удалить или изменить свой профиль или сообщения. Имеет свои посты и PMs отмечены особо.
Там также должны быть "плакат рейтинга" группы, основанные на взвешенных статистике.
Эти группы пользователей будут скрыты и не указаны в профиле пользователя или рядом с его постов:
- Местные модники (когда за пределами их участков)
- младший Mods
- Штатные плакаты
- Categorizers
- белый список
- жертвователь
В дополнение к пипсов ("звезды"), Что большинство форумов есть, небольшое изображение и текст "бейджи" связано с некоторыми membergroups должно быть возможным.
Некоторые группы (в том числе некоторых стендовых рядов) следует "белый список",
Весовые статистики
Там должно быть "Взвешенный время онлайн" а также "Взвешенные полезные сообщения" в дополнение к значениям сырья. Оно не должно быть возможным для пользователя, чтобы увеличить один из весовых значений слишком сильно, не увеличивая другое значение. Если вы размещаете 200 сообщений в течение 1 часа, ваша взвешенная счетчик сообщений должна быть равна 1. Если вы размещаете 1 пост в 200 часов, ваше взвешенное время онлайн 6 часов которые должны. Эти цифры должны быть настраиваемыми и должны применяться ретроспективно при изменении (где это возможно).
Время онлайн не должно увеличиваться, если вы просто освежает страницу, и она должна расти медленнее, если вы, кажется, бот.
рамки
Все действия, которые пишут в базу данных должны иметь по крайней мере один связанный настраиваемый предел. подобно "могут размещать темы х за у секунд", Там также должен быть предел, который препятствует пользователям слишком рано после остановки другого предела. Оно также должно быть легко возможно админы запретить определенные выражения регулярных выражений в должности, названия и имена пользователей (отдельные списки запрета) из веб-интерфейса.
Пределы могут быть модифицированы на основе membergroup. Фактические пределы могут быть ослаблены, и результат превышения предела также может измениться. Превышение пределов не может сделать ничего, отклонить действие ("Вы не можете создавать эту тему, потому что вы только что отправили один 5 минут назад!"), Или автоматически запретить пользователю.
Постановка на учет
Когда гость пытается отправить ответ, он будет запрошен необходимой информации создания учетной записи (имя пользователя и пароль) на той же странице, где он может ввести свой ответ.
Адреса электронной почты не требуется при регистрации. Тем не менее, плата не будет отправлять электронную почту пользователю, пока адрес электронной почты не предоставляется и проверяется.
очень первый пост пользователь не должен быть новой темой.
OpenID
Должна быть возможность использовать OpenID аутентификации вместо пароля. Основной метод Логин не должен быть OpenID, хотя. Может быть, введя URL OpenID в имя пользователя или пароль поле будет вызывать OpenID аутентификации.
OpenID URL-адрес не должен использоваться в качестве реальных имен пользователей.
Mod вид профиля
Модификации будут видеть этот материал на первой странице профиля каждого пользователя:
- Бревно всего пользователь сделал в последние несколько недель. Записи, как "Сообщается, после й", "Сообщение ответ х", "Сообщение Тема х", "Получили сообщение X удален мод у", "Got запрещены моды у", и т.д.
- последние удаленные сообщения пользователя.
- Их последние несколько тем и сообщений (в разных списках)
- Ссылки, которые немедленно осуществляют ультрасовременные действия после запроса JavaScript: запрет, IP запрет, белый список, поднять
Mod действия
Сообщение действия:
- Удалить темы / ответы
- Сплит темы
- Объединить темы (администратор только)
- Клон ответ / тема (админ только - возможно, другие группы позже)
- Создать перенаправлять тему
- Переместить тему
- Редактировать сообщение
- Блокировка темы
- Важная тема
- Объявить тему - поместить его в верхней части каждой темы индексной страницы (Admin)
Автоматические действия плаката:
- Ban - автоматически Permaban плакат
- IP запрет - Permaban плакат и запрет для администратора настраивается количество дней все IPs использовал плакат. Статистика должна быть доступна для администраторов о том, сколько раз определенный IP-адреса и диапазоны IP запрещены таким образом.
- Whitelist / unwhitelist - поставить плакат в белый список группы
- Поднимаю / unelevate - Поместите плакат в верхней части очереди отчетов и сделать все модникам сделать дополнительный шаг для подтверждения каких-либо действий против этого плаката. Предназначено для вещей, которые нуждаются в обзоре администратора. Эта функция не является обязательной.
- Комментарий - частные моды комментариев о плакатах. Эта функция не является обязательной.
- Nuke - Удаляет все сообщения.
- Удалить отчеты о плакате
Администраторы должны также иметь возможность создавать пользовательские / IP баны, которые истекают после различного количества времени.
Нет запреты не будут препятствовать людям от чтения сообщения.
Там должно быть что-то вроде SMF-х "быстрая модерация" интерфейс на тему страниц и пользователей почтовых историй.
Все удаленные посты плакатом должны быть доступны для них, по крайней мере месяц.
Это должно быть очень легко для админов, чтобы отменить любые повреждения, вызванные модами. В частности, это должно быть очень легко восстановить темы / сообщения и восстановить их исходные состояния.
Дополнительно: позволяет полностью отменить все действия конкретного мода, так как в указанный момент времени.
Отчеты
Люди могут отправлять отчеты, нажав "доклад" ссылки рядом с постов и, возможно заполнение причины отчета. Это увеличивает счет отчета по почте и плакат репортера "оценка надежности", Оценка надежности начинается с 1. Для каждого правильного отчета, он увеличивается на 0,1. Для каждого неправильного отчета, уменьшается на 0,02. Оценка надежности на 5 исчерпан, и он не может опускаться ниже 0.
Модификации, которые рассматривают очередь отчета будут видеть только пользователи, они могут иметь дело. Она должна быть организована следующим образом:
Плакат 1 - оценка: 5 - детали / обрабатываемые / некорректные ссылки
опубликовать - балл: 3 - Детали / обрабатываемые / неправильные ссылки
после б - оценка: 2 - подробности / обрабатываемые / некорректные ссылки
Плакат 2 - оценка: 1 - сведения / обрабатываемые / некорректные ссылки
сообщение с - оценка: 1 - сведения / обрабатываемые / некорректные ссылки
Ссылки работают так:
- Подробности: списки фактических отчетов с указанием причин и отправителя докладов
- Обрабатывается: Удаляет отчеты и повышает надежность оценки всех тех, кто прислал отчеты
- Неправильно: Удаляет отчеты и уменьшает надежность оценки всех тех, кто прислал отчеты
Удалены отчеты остаются доступными для админов по ссылке на отправителя и получателя профиля страниц навсегда.
Фото PMs
Всякий раз, когда мода действия предпринимаются против пользователя, они должны получить акции ПМ, информирующие их об этом. Это должно быть легко для меня, чтобы настроить текст для каждого вечера.
Павлодарская
Люди, которые их учетная запись пользователя запрещена (но не их IP) можно использовать специальную функцию запрета обжалования. Каждый пользователь может обратиться один раз, а затем они должны ждать ответа.
Очередь обращения будет доступна для Администраторов. Он будет показывать привлекательность и ссылку на страницу профиля пользователя. Это будет иметь эти ссылки на действия: UnBan, ответ, мягкий отрицать (разрешить апелляцию запрета в течение 14 дней), трудно отрицать (не допускать в будущем обращения для этого пользователя).
После каких-либо мер, обращение удаляется из очереди.
Запрещенная пользователь может отвечать один раз на каждый ответ, что администратор отправляет.
Proxy запрещая
Там будет существовать большой список прокси-серверов, которые запрещены разместить за исключением белого списка плакатов. Список должен поддерживать IP / имя хоста с подстановочных знаков и диапазонов. Проверка пользователей от этого списка должны быть эффективными. Я буду писать код для автоматического добавления узлов выхода Tor в этот список, так что это должно быть особенно легко добавить в этот список.
Когда кто-то помешало разместить что-то из-за прокси запрета, что они пытались опубликовать должны быть добавлены в список видимого для модов. Модификации могут затем просмотреть список и белый список людей, которые пытались опубликовать что-то хорошее.
Прокси-запрещенные люди должны также быть в состоянии вручную запросить белый список. Whitelist очередь запроса должна быть видна глобальными модами, мл. модов и админов.
Список
Функция наблюдения должна быть доступна.
Нет встроенные изображения
Из-за проблемы с "печенье начинка" и другие атаки, давайте просто запретить встроенные изображения все вместе. Превратите старые встроенные изображения в ссылки. Аватары еще будет разрешено, но они всегда будут размещаться на сервере.
Держите позволяет IMG теги (превращая их в ссылки), так как они могут быть использованы в дальнейшем.
Другие необходимые функции
- Метки, как и Описанная здесь. "Tag коллажи" необходимы. Отдельная особенность отчета по тегам и "игнорировать тему" не являются обязательными.
- Всякий раз, когда вы нажимаете "предварительный просмотр" при составлении поста или ПМ, проект вашего поста должен быть сохранен. Эти проекты должны быть доступны в течение 7 дней.
- Хороший SEO
- Комбинированный журнал мод действия
- Возможность админ отправить PM / Email рассылку различного membergroups.
- Страница перечисляя все сообщения от не-установлены плакаты
- Сообщение редактировать изменения видны всем пользователям, которые могут редактировать пост
- Путь, чтобы просмотреть все темы пользователя
- Претендент должен предоставить код или подробные инструкции о том, как перемещать текущие данные базы данных в новую базу данных.
- Программное обеспечение должно быть по крайней мере так же быстро и ресурсосбережение свет в SMF.
- Мне нравится, как страница после композиции SMF позволяет выделить текст, а затем нажмите кнопку, чтобы применить определенный BBCode. Это должно быть воспроизведено.
- Сообщение отсчеты не должны отображаться на тематических страницах, но они должны быть показаны на страницах профиля.
Другие дополнительные функции
- Доверительная система так же, как у FMS Freenet был бы отлично. Инфо включая это будет гораздо предпочтительнее.
- Дополнительные каптча защищенных адреса электронной почты, указанные в профилях
- Nofollow на ссылки в постах и профилей без установленных пользователей в то время как они не являются установлены
- В дополнение к обычному BBCode, позволяют Wiki-синтаксис полужирный / курсив: «» = курсив, «» '= полужирный
- В "Ответы на ваши сообщения"Выделите сообщения, где вы процитированные и включают в себя сообщения, где вы процитированные даже если вы еще не писал в эти темы.
- Возможность полностью игнорировать поток.
- "благодаря" функция на столбах. Все люди, которые поблагодарили пост (до предела), перечислены в небольшом тексте вблизи поста. Читатели могут скрыть этот список в их вариантах.
- Вариант, который расширяет [IMG] тегов в встроенные изображения. Это не должно быть по умолчанию.
- В дополнение к пути по умолчанию темы обзора, позволяют пользователям просматривать темы: чисто хронологической упорядоченности, незатронутой ударах; по числу последних ответов; и некоторые "жаркость" Критерии затрагиваемых мнений и ответы.
- Позвольте людям сохранить список пользователей, которые "друзья", Выделите темы / сообщения от друзей, тем отвечал в друзья, и темы / посты друзей.
- API