О проекте
На протяжении последних пяти лет я в свободное время работаю над проектом своей мечты. Вот основная идея:
Приложение, которое способно заменить всех конкурентов в своей области применения, должно подстраиваться под каждого пользователя.
Вроде не самая сложная мысль, но реализация этой идеи встречается не так часто – в большинстве приложений пользователю доступен только заранее определённый набор функций.
Однако, есть и приложения, которые позволяют изменять набор своих функций:
- Различные редакторы (кода, графики, моделей, уровней) – в них есть плагины, которые добавляют новые инструменты и возможности
- Моды для компьютерных игр – моды для Skyrim, которые могут кардинально изменить геймплей, и вообще сообщество NexusMods, где выкладывается очень много модов для различных игр
- Расширения браузера – Google Chrome, Firefox, Safari
- Плагины в конструкторах сайтов – Wordpress, Wix
Такой богатый ассортимент расширений обычно появляется тогда, когда разработчики основного приложения позволяют сторонним разработчикам добавлять расширения.
Сторонние разработчики – разработчики, которые не находятся внутри основного штата сотрудников.
В этом случае выигрывают все:
- Разработчики основного приложения могут сократить ресурсы на разработку и поддерживать только основные функци приложения
- Сторонние разработчики могут не создавать новый продукт и получить доступ к большой аудитории основного приложения
- Пользователи могут не тратить время на поиск “идеального” приложения и изменять под себя основное приложение
В этой ситуации сторонние разработчики ограничены областью применения основного приложения – например, бессмысленно в редактор кода встраивать музыкальный плеер. Поэтому пользователь не сможет найти одно приложение, которое удовлетворит все его информационные потребности, а будет искать много разных.
Однако, что если я скажу тебе, что на самом деле пользователь пользуется всего ОДНИМ приложением, которое он расширяет?
Это приложение – операционная система.
И теперь я подвёл к ключевой идее моего приложения:
Я разрабатываю приложение, которое подходит к установке расширений так же, как операционная система подходит к установке сторонних приложений. То есть в моём приложении нет ограничения области применения – пользователь сам установит расширения, которые определят область применения приложения.
Техническая реализация
Я разрабатываю приложение на C++/Qt. Этот фреймворк выбран из-за отличной кроссплатформенности (все ОС, десктоп, смартфоны, встраиваемые устройства).
Подключаемые расширения являются динамическими библиотеками, в которых содержится описание расширения, ссылка на репозиторий с исходным кодом и список необходимых расширений.
Можно почитать мою статью про это приложение на Хабре, там я привожу больше конкретики: habr.com/ru/post/340018