+---------------------------+
|.-------------------------.|
|| kee_reel@blog:~/ru $ cd ||
|| ссылки контакты         ||
|| c c++ linux opengl sql  ||
|| python сети             ||
||                         ||
|.-------------------------.|
+-::---------------------::-+
.---------------------------.
 // /oooooooooooooooooooooo\\ \\ 
 // /oooooooooooooooooooooooo\\ \\ 
//-------------------------------\\
\\-------------------------------//


О проекте

На протяжении последних пяти лет я в свободное время работаю над проектом своей мечты. Вот основная идея:

Приложение, которое способно заменить всех конкурентов в своей области применения, должно подстраиваться под каждого пользователя.

Вроде не самая сложная мысль, но реализация этой идеи встречается не так часто – в большинстве приложений пользователю доступен только заранее определённый набор функций.

Нерасширяемое приложение

Однако, есть и приложения, которые позволяют изменять набор своих функций:

  • Различные редакторы (кода, графики, моделей, уровней) – в них есть плагины, которые добавляют новые инструменты и возможности
  • Моды для компьютерных игр – моды для Skyrim, которые могут кардинально изменить геймплей, и вообще сообщество NexusMods, где выкладывается очень много модов для различных игр
  • Расширения браузера – Google Chrome, Firefox, Safari
  • Плагины в конструкторах сайтов – Wordpress, Wix

Такой богатый ассортимент расширений обычно появляется тогда, когда разработчики основного приложения позволяют сторонним разработчикам добавлять расширения.

Сторонние разработчики – разработчики, которые не находятся внутри основного штата сотрудников.

Расширяемое приложение

В этом случае выигрывают все:

  • Разработчики основного приложения могут сократить ресурсы на разработку и поддерживать только основные функци приложения
  • Сторонние разработчики могут не создавать новый продукт и получить доступ к большой аудитории основного приложения
  • Пользователи могут не тратить время на поиск “идеального” приложения и изменять под себя основное приложение

В этой ситуации сторонние разработчики ограничены областью применения основного приложения – например, бессмысленно в редактор кода встраивать музыкальный плеер. Поэтому пользователь не сможет найти одно приложение, которое удовлетворит все его информационные потребности, а будет искать много разных.

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

Однако, что если я скажу тебе, что на самом деле пользователь пользуется всего ОДНИМ приложением, которое он расширяет?

Это приложение – операционная система.

Пользователь использует разные приложения внутри операционной системы

И теперь я подвёл к ключевой идее моего приложения:

Я разрабатываю приложение, которое подходит к установке расширений так же, как операционная система подходит к установке сторонних приложений. То есть в моём приложении нет ограничения области применения – пользователь сам установит расширения, которые определят область применения приложения.

Техническая реализация

Я разрабатываю приложение на C++/Qt. Этот фреймворк выбран из-за отличной кроссплатформенности (все ОС, десктоп, смартфоны, встраиваемые устройства).

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

Можно почитать мою статью про это приложение на Хабре, там я привожу больше конкретики: habr.com/ru/post/340018


▲ В начало ▲