Каковы ключевые элементы, составляющие успешную подключаемую архитектуру, при разработке программной платформы?

StackOverflow https://stackoverflow.com/questions/880602

Вопрос

Я был действительно впечатлен растущим числом программных платформ, которые позволяют сторонним разработчикам вносить свой вклад в код с помощью подключаемой архитектуры (плагины / расширения).

Я изучал, на каких платформах есть лучшие сообщества плагинов...

Отличные архитектуры плагинов с процветающими сообществами плагинов:

Кроме того, есть платформы с менее активными сообществами плагинов:

(Для большей наглядности давайте отложим в сторону или проигнорируем платформы, которые поддерживают полноценные программные приложения, такие как Microsoft Windows, iPhone и Facebook.)

Что, по вашему мнению, дает программной платформе успешную архитектуру плагинов с большим количеством плагинов по сравнению с другой платформой с меньшим или неактивным сообществом разработчиков?

Просто для начала, вот неполный список:

  • Платформа делает что-то широко полезное:давайте людям просматривать веб-страницы, покупать и продавать товары, публиковать блоги и доски объявлений и т.д.
  • Платформа имеет открытый исходный код (или, как минимум, исходный код находится в свободном доступе).
  • Все важные функции платформы полностью подключаются с помощью хуков и фильтров.
  • Все или большинство подключаемых функций хорошо документированы (или есть wiki, чтобы разработчики могли задокументировать это для вас).
  • Есть форум или список адресов электронной почты, где разработчики могут делиться плагинами и советами и хитростями
  • Есть форум или список адресов электронной почты, где менее искушенные пользователи могут получить помощь в установке и настройке плагинов.

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

Это было полезно?

Решение

Лично есть 3 основных фактора, влияющих на то, научусь ли я (и делаю ли) писать приложения для любой данной системы:

Очень ли полезна система, чтобы я хотел использовать ее настолько, чтобы у меня была достаточная мотивация для ее расширения?

Использует ли система язык, с которым я знаком, или его легко освоить в отличие от какого-либо малоизвестного, проприетарного или иным образом чрезмерно сложного решения (см. elisp)?

Является ли система плагинов чрезвычайно хорошо документированной на понятном языке, чтобы я мог приступить к работе по написанию моего плагина и не тратить часы (или дни) на расшифровку системы?

Если все это правда, то единственная причина, по которой вы не хотели бы разрабатывать для платформы, заключается в том, что кто-то другой уже написал плагины для всех ваших идей.:)

Я думаю, что также чрезвычайно полезно / важно иметь центральное и хорошо известное хранилище для размещения пользовательских плагинов (согласно вашим примерам проектов).Я ненавижу рыскать по Интернету в поисках отдельных, возможно, низкокачественных или даже, возможно, вредоносных дополнений к тому, что я пытаюсь сделать.Это должен быть веб-сайт или wiki, поскольку даже архивирование форумов или списков рассылки может раздражать и отнимать много времени.

Другие советы

Ты упускаешь главное.

JVM - это подключаемая архитектура.Каждый файл класса подключается к нему и расширяет его.

Apache - это подключаемая архитектура на нескольких уровнях.Есть такие "моды".Некоторые моды запускают другие интерпретаторы, которые сами по себе являются подключаемыми архитектурами.PHP, mod_wsgi / Python и т.д.все они подключены к Apache.

Python - это подключаемая архитектура с подключаемыми к ней файлами Python .pyc и объектными файлами (.DLL, .SO).

Каждый языковой фреймворк - это, по сути, подключаемая архитектура.

Платформа - это Фундамент

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

Основы Должны Быть Простыми

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

Точки расширения Должны Быть Очевидны

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

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

Извините, если это немного "ахитектурная астрономия", я действительно думаю, что высказал несколько обоснованных замечаний, вполне возможно, я высказал их неудачно, не стесняйтесь указать на это или добавить к ним

Не забывай Затмение>1000 зарегистрированных сторонних "плагинов" (на самом деле они состоят из еще более мелких плагинов в терминологии Eclipse)).Отчасти его успех может быть обусловлен тем, что существуют хорошие эмпирические правила о том, как разработать плагин, который также может быть расширен другими пользователями.Существует также строгая политика управления версиями API (которая, конечно, тоже имеет свои недостатки).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top