Ответ 1
Мой опыт: несколько лет назад я работал над кросс-платформенным, кросс-браузерным плагином NPAPI, который использовал OpenGL для рендеринга изображений. С тех пор я уделял некоторое внимание пространству, но это не то, что я сейчас делаю. Я написал расширения для плагинов для Firefox, но не Safari или Chrome.
Многое зависит от того, что вы хотите от своего расширения, и от какого пользовательского интерфейса вы хотите представить. Различные браузеры имеют разные представления о том, какие расширения могут и не могут делать.
Если вы просто хотите отображать изображения или видео в пользовательском формате, NPAPI, вероятно, лучший выбор. NPAPI является в основном тонкой оболочкой вокруг API-интерфейсов на собственной платформе. Таким образом, кросс-платформенный код NPAPI должен иметь дело с индивидуальными причудами платформы, а также с различными уровнями поддержки NPAPI от браузеров. У Google есть проект под названием Pepper для исправления некоторых проблем NPAPI, но у Pepper еще нет поддержки от любого браузера, кроме Chrome.
Проект Google Native Client предоставляет альтернативу NPAPI для запуска собственного кода, но он налагает ограничения на собственный код. Например, pthreads разрешены, но доступ к сети - нет. Существует подпроект NaCL под названием c_salt, который, как представляется, относится к типу встроенной интеграции кода HTML/JS UI+. К сожалению, он все еще находится на этапе проектирования и, следовательно, не очень полезен для написания расширений сегодня.
Я понимаю, что пока расширение кросс-браузера, которое интегрируется с пользовательским интерфейсом браузера, а также интегрируется с собственным кодом, невозможно. Safari и Chrome ограничивают расширения гораздо больше, чем Firefox, и позволяют только расширения, написанные на JavaScript. Я не знаю, возможно ли расширение в Safari или Chrome взаимодействовать с плагином браузера, написанным в NPAPI. Я предполагаю, что это невозможно или невероятно болезненно.
В целом вы найдете жизнь намного проще, если вы тщательно ограничите, какие браузеры и платформы нацелены. Точно, какие браузеры и платформы выбрать - это то, что только вы можете решить.