소프트웨어 플랫폼을 설계 할 때 성공적인 플러그 가능한 아키텍처를 구성하는 주요 요소는 무엇입니까?

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

문제

외부 개발자가 플러그 가능한 아키텍처 (플러그인/확장)를 통해 코드를 기여할 수 있도록 점점 더 많은 소프트웨어 플랫폼에 깊은 인상을 받았습니다.

나는 어떤 플랫폼이 최고의 플러그인 커뮤니티를 가지고 있는지 연구하고 있습니다 ...

번성하는 플러그인 커뮤니티를 갖춘 우수한 플러그인 아키텍처 :

그런 다음 플러그인 커뮤니티가 적은 플랫폼이 있습니다.

(초점을 위해 Microsoft Windows, iPhone 및 Facebook과 같은 본격적인 소프트웨어 앱을 가능하게하는 플랫폼을 제쳐두거나 무시합시다.)

소프트웨어 플랫폼에 많은 플러그인이있는 성공적인 플러그인 아키텍처, 소규모 또는 비활성 개발자 커뮤니티가있는 다른 플랫폼을 제공하는 것은 무엇입니까?

일을 시작하려면 여기에 부분 목록이 있습니다.

  • 플랫폼은 광범위하게 유용한 일을합니다. 사람들이 웹을 탐색하고, 물건을 사고 팔고, 블로그와 게시판을 게시하십시오.
  • 플랫폼은 오픈 소스입니다 (또는 최소한 소스 코드를 자유롭게 사용할 수 있음).
  • 플랫폼의 모든 중요한 기능은 후크 및 필터를 통해 완전히 플러그 탭입니다.
  • 전부 또는 대부분의 플러그 가능한 기능은 잘 문서화되어 있습니다 (또는 위키가 있으므로 개발자가 문서화 할 수 있습니다).
  • 개발자가 플러그인을 공유하고 팁과 트릭을 공유 할 수있는 포럼이나 이메일 목록이 있습니다.
  • 덜 정교한 사용자가 플러그인을 설치하고 구성하는 데 도움을 줄 수있는 포럼이나 이메일 목록이 있습니다.

플랫폼 개발자가 많은 외부 개발자가 플러그인을 만들도록 장려하는 플러그 가능한 아키텍처를 만들기 위해 어떤 종류의 일을 할 수 있습니까?

도움이 되었습니까?

해결책

개인적으로 주어진 시스템에 대한 앱을 배우고 수행하는지 여부에 대한 3 가지 주요 기여자가 있습니다.

시스템이 매우 유용하여 확장 할만 큼 충분히 동기를 부여하기에 충분히 사용하고 싶습니까?

시스템이 내가 익숙한 언어를 사용하거나 모호하거나 독점적이거나 지나치게 복잡한 솔루션과 달리 배우기 쉽습니까 (ELISP 참조)?

플러그인 시스템이 명확한 언어로 매우 잘 문서화되어 시스템을 해독하는 시간 (또는 며칠)을 소비하지 않고 플러그인을 작성하는 작업을 수행 할 수 있습니까?

이러한 것들이 모두 사실이라면, 플랫폼을 위해 개발하고 싶지 않은 유일한 이유는 다른 사람이 이미 모든 아이디어를 위해 플러그인을 작성했기 때문입니다. :)

나는 또한 사용자에게 기여한 플러그인 (예제 프로젝트에 따라)을 수용 할 수있는 중심적이고 잘 알려진 저장소를 갖는 것이 매우 도움이되고 중요하다고 생각합니다. 나는 웹을 수색하여 개인, 아마도 품질이 낮거나 심지어 악의적 인 애드온을 찾기 위해 내가하려는 일을 찾는 것을 싫어합니다. 포럼이나 메일 링리스트 아카이브조차도 성가시고 시간이 많이 걸릴 수 있으므로 웹 사이트 또는 위키이어야합니다.

다른 팁

당신은 요점을 놓치고 있습니다.

JVM은 플러그 가능한 아키텍처입니다. 모든 클래스 파일은 플러그에 연결되어 확장합니다.

Apache는 여러 수준의 플러그 가능한 아키텍처입니다. "모드"가 있습니다. 일부 개조는 다른 통역사를 실행하며, 그 자체는 플러그 가능한 아키텍처입니다. PHP, mod_wsgi/python 등은 모두 Apache에 연결되어 있습니다.

Python은 Python .pyc 파일 및 객체 파일 (.dll 's, .so's)을 갖춘 플러그 가능한 아키텍처입니다.

모든 언어 프레임 워크는 사실상 플러그 가능한 아키텍처입니다.

플랫폼은 기초입니다

소프트웨어 플랫폼의 한 가지 견해는 다른 작업을 수행하기 위해 다른 소프트웨어가 의존하는 기초입니다. 이것은 단순하고 다소 명백한 진술을 할 수 있지만 중요한 진술입니다.

기본 사항은 쉬워야합니다

플랫폼에는 목적이 있어야하며 플랫폼 개발자는 API를 설계 할 때이를 알고 있어야하며, 원시적 사용 사례가 무엇인지 명백해지고 주변의 API는 설계된 방식과 관련하여 가능한 한 Straightford를 만들어야합니다. 그러나 그들 주변의 의사와 관련하여.

확장 지점은 분명해야합니다

Platoform의 확장 성은 개발자에게 플랫폼을 확장하거나 변경할 수있는 반대성을 제공하는 것입니다. 이것이 당신이 격려하고 싶은 것이라면, 당신은이 확장 성의 본질과 한계를 매우 명확하게하고이를 허용하기 위해 잘 정의 된 인터페이스 세트를 제공해야합니다.

이것은 모두 명백 할 수 있지만, 커뮤니티가 플랫폼을 중심으로 개발되기를 원한다면 해당 플랫폼은 사용하고 확장하는 것이 간단한 경험이어야합니다.

미안 해요이 이음새가 약간의 "성취 론적 우주 사업"이라면, 나는 몇 가지 유효한 포인트를 만들었다 고 생각합니다. 나는 그것들을 제대로 만들지 못했거나, 이것을 자유롭게 지적하거나, 그들에게 추가했을 수도 있습니다.

잊지 마세요 (와 함께 > 1000 등록 된 제 3 자 "플러그인" (실제로이 클립스 용어에서 더 작은 플러그인으로 만들어졌습니다)))). 성공의 일부는 다른 사람들이 확장 할 수있는 플러그인을 디자인하는 방법에 대한 좋은 규칙이 있다는 점에서 비롯 될 수 있습니다. 엄격한 API 버전 관리 정책도 있습니다 (물론 단점도 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top