Я уже около 3х лет занимаюсь созданием CMS системы, за это время несколько раз переписывалось ядро, несколько раз менялась концепция, административный интерфейс и структура. Система написана на языке PHP, а главная особенность всех версий системы - это, то что она основана на базе данных MongoDB, и использует её возможности по хранению объектов любой вложенности. В настоящий момент существует стабильная версия, которая в течении последнего года доказала своё право на существование, на ней было написано успешно с десяток сайтов различной сложности, от ленднингов и визиток до порталов и CRM-системы. Данная система является не только CMS, но и удобным framework'ом для быстрого написания нового функционала, пакетов расширений и модулей. Приведу краткий список основных функциональных возможностей:
- Автоформирование редакторов объектов в панели управления, на основе описания класса объекта в php файле
- Формирование структуры сайта любой сложности на основе удобного редактора. Система позволяет вкладывать любые типы объектов друг в друга на любой уровень глубины
- Удобный API для работы с объектами, который позволяет делать произвольные выборки для любой задачи
- ActiveRecord
- Редактирование контента прямо на странице сайта
- Автогенерация форм на основе описания класса формы, любые типы полей (возможность добавлять пользовательские типы), предустановленные типы валидации + пользовательские функции валидации любого поля. Отправка всех форм производится чрез AJAX
- Autoload как php файлов, так и javascript и css. Автоматическое объединение на продакшен версии javascript и css кода в один файл с сохранением всех путей до изображений, шрифтов.
- Класс для работы с изображениями, автоматическая обрезка нужным способом, наложение фильтров, кэширование.
Это только малая часть из всего, что имеется под капотом.
Давно в голове сидит идея поделится данной разработкой с другими людьми, сделать из системы OpenSource продукт, который сможет использовать любой желающий. Но для этого я вижу ряд проблем, которых одному сложно реализовать в скором времени:
1. Написание полноценной документации для разработчиков и для пользователей
2. Внедрение функционала языковых пакетов, а так же зачистка существующего кода от русского текста, вынос всех фраз в отдельные языковые файлы (из php и js кода)
3. Качественный перевод на английский язык всех русских комментариев кода.
4. Создание сайта CMS системы (дизайн уже есть)
5. Доработка функциональных возможностей, так как идей ещё очень много (создание репозитория расширений, оптимизация существующего кода, создание удобного установщика системы с пошаговым созданием типовых по структуре сайтов и т.п.)
Всё это дело в скором времени будет выложено на gitHub. Так же хочется прояснить вопрос с лицензированием, хочется сделать что бы был OpenSorce продукт, который будет поддерживаться народным комюнити на благо общества, какую лицензию лучше выбрать и как защититься от кражи и комерциализации кем-либо, на первом этапе пока никто не знает о данной CMF? Это первый вопрос. Второй где найти единомышленников, которым будет интересно принять участие в данном проекте?
UPD1: Ничего себе я тут настрочил, увидел объём только после того как отправил вопрос... Надеюсь кто-то дочитает до конца :)
Выкладывайте на гитхаб, запостите ссылку, вы в опенсурсе. А там дальше нужно просто пиарить ваш продукт для привлечения внимания общественности.
Скажем я вот на 90% уверен что даже не смотря на "mongodb" у вас там "еще одна CMS" в которой ничего особо интересного нет. Выложите посмотреть или хотя бы какие-то особенности раскройте. Пока это все так...
Честно говоря я бы тоже так думал, если кто-то написал подобный вопрос. Но рад, что хотя бы 10% сомнений осталось :)
В ближайшее время подготовлю все, что бы выложить на гитхаб, нужно как минимум быструю первоначальную установку сделать и Get Started инструкцию написать, что бы хоть у кого-то возникло желание попробовать установить, никто не любит верить на слово и возится с установкой если она занимает порядком времени, а тем более там mongodb, что не у каждого уже установлен, в отличии от LAMP
rework: добавьте Dockerfile или Vagrantfile и там все окружение поднимите. Тогда чуваку нужно будет сделать только vagrant up или Docker контейнеры запустить.
Я даже имею ввиду не коммерческое использование, а что кто-то может выдать это за свой коммерческий продукт, так-то я не против, если кто-то будет использовать систему для создания сайта за деньги.
Тогда MIT, а в коде, в шапках, хозяина кода. А выдать за коммерческий... мне кажется много коммерческих продуктов используют свободный код, даже широко известные, т. к. слишком уж часто появляется новый функционал из свободного ПО.
Сергей Протько: Я адекватно понимаю это, не считаю что его на части будут рвать, просто не хочется что бы в случае чего кто-то мне притенении потом предъявлял.
1. Выкладывайте и сразу же регистрируйте на https://packagist.org/
2. Обязательно напишите внятное README, отвечающее на 2 вопроса: ЗАЧЕМ? КАК?
3. Лицензию выберите из MIT, WTFPL, BSD
4. Было бы не плохо какое-то demo + vagrant/doker окружение
По фишкам, которые вы указали:
- Autoload как php файлов, так и javascript и css.
Это умеет практически любой фреймворк и CMS. Конкретно по php: PSR-4 ?
- Удобный API для работы с объектами, который позволяет делать произвольные выборки для любой задачи
Что на счет транзакционности? Если мне память не изменяет, mongo этого делать не умеет.
- ActiveRecord
и
- Формирование структуры сайта любой сложности на основе удобного редактора.
Что на счет сервис-ориентированных архитектур? AR как показывает практика не совсем удачное решение для такого подхода, хотя мне самому нравится это паттерн.
- Автогенерация форм на основе описания класса формы...
Чем это лучше, в сравнении с yii-шным генератором форм?
- Класс для работы с изображениями...
Imagemagick?
--
Я не спорю, возможно ваш проект - это новый щаг в индустрии построения сайтов, но то, как вы описали фишки - это скорее для маркетологов. Не используйте слова "либые", "все" и их производные так как грамотный синьйор может вам с легкостью доказать, что НЕ любые и НЕ все.
Все верно, монга не умеет классические транзакции. Но запись в один единственный документ всегда автомарна. Если вы хотите что бы у вас запись в несколько документов была атомарной - там так же есть для этого средства. То есть грубо говоря транзакции есть, но сам подход чуть отличается. В прочем как и вообще все что относится к монге и документноориентированным базам в целом.
Спасибо за ваши ответы 1, 2, 3, 4. По лицензиям ещё вопрос, нужно ли что-то делать кроме того как разместить файл с лицензией внутри проекта и в шапке кода. Где-то регистрироваться или ещё что? https://packagist.org/ - это типа хранилища проектов?
"Это умеет практически любой фреймворк и CMS. Конкретно по php: PSR-4 ?"
нет не PSR-4, своя реализация по загрузке пакетов.
"Что на счет транзакционности? Если мне память не изменяет, mongo этого делать не умеет."
mongo умеет это делать с помощью атомарных операций только
"Чем это лучше, в сравнении с yii-шным генератором форм?"
на мой взгляд более удобная реализация шаблонов для сложных форм чем в Yii, а так я не спорю что он лучше, может и нет.
"Imagemagick?"
да Imagemagick необходим. Плюс из зависимостей ещё yaml, т.к. файлы yaml использую для разных инструкций (например для указания порядка загрузки js файлов)
"Я не спорю, возможно ваш проект - это новый щаг в индустрии построения сайтов, но то, как вы описали фишки - это скорее для маркетологов. Не используйте слова "либые", "все" и их производные так как грамотный синьйор может вам с легкостью доказать, что НЕ любые и НЕ все. "
Может это и не новый шаг в индустрии построения сайтов, я на это не претендую, но думаю он должен найти свою аудиторию среди программистов.
Сергей Протько: как раз можно сказать, что этот движок для тех людей, кому нравится вот эти отличия о которых вы говорите. Не так много движков исключительно на монге завязано.
> где-то регистрироваться или ещё что?
Читаете текст лицензии и выполняете его)). Добавляете файл лицении в код и публикуете. Для BSD если мне не изменяет память авторство в файлах необходимо указывать.
> https://packagist.org/ - это типа хранилища проектов?
Это хранилище пакетов, composer - это менеджер пакетов, который работает с packagist
> нет не PSR-4, своя реализация по загрузке пакетов.
Похвастайте, в чем преимущества вашей реализации?
> Может это и не новый шаг в индустрии построения сайтов, я на это не претендую, но думаю он должен найти свою аудиторию среди программистов.
Удачи вам в этом, если не затруднит, после публикации - допишите линк на проект в этот вопрос.
> Похвастайте, в чем преимущества вашей реализации?
она проще. Там и само ядро довольно компактное, код чистый, нормальное ООП. Не люблю сторонние большие библиотеки. Плюс я о PSR-4 не в курсе был, когда это реализовывалось)
> Удачи вам в этом, если не затруднит, после публикации - допишите линк на проект в этот вопрос.
Спасибо. Напишу
ни капли не пожалел, что занимался и занимаюсь этим, к тому что это единственный источник моего заработка, в своей веб-студии мы все сайты заказчиков на нём делаем, что получается гораздо быстрее, чем использование чужих монструозных движков. Может конечно свой велосипед ближе к телу, но иногда он и ездит быстрее конвейерных.
Сначала все вылизать, довести до ума, отшлифовать, а только потом выкладывать в паблик - это путь в никуда. Если проект более-менее серьезный, то написание только документации займет весьма приличное время, за которое либо Вы успеете кучу изменений внести в движок (а значит устареет документация), либо технологии и методологии уйдут вперед (а значит устареет сам движок).
Если решили выкладывать, то выкладывать надо, как есть, сколачивать вокруг этого коммьюнити (пусть маленькое, но хоть какое-то). И после этого уже пилить, писать, улучшать. От кражи не защититься никак, потому что само понятие "кража" к оупенсорсным продуктам как-то не применимо в принципе.