При разработке программной платформы, какие ключевые элементы составляют успешную подключаемую архитектуру? - PullRequest
7 голосов
/ 19 мая 2009

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

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

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

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

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

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

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

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

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

Ответы [ 4 ]

1 голос
/ 19 мая 2009

Вы упускаете суть.

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

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

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

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

1 голос
/ 19 мая 2009

Платформа является фундаментом

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

Основы должны быть простыми

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

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

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

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

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

1 голос
/ 19 мая 2009

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

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

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

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

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

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

0 голосов
/ 07 декабря 2009

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

...