architecture hashtags instagram
Al diseñar una plataforma de software, ¿cuáles son los elementos clave que conforman una arquitectura conectable exitosa? (4)
No se olvide de Eclipse (con > 1000 "complementos" de terceros registrados (de hecho, están hechos de complementos aún más pequeños en la terminología de Eclipse)). Parte de su éxito puede provenir de que hay buenas reglas prácticas sobre cómo diseñar un complemento que también pueda ser ampliado por otros. También hay una estricta política de versiones API (que, por supuesto, también tiene sus inconvenientes).
Me ha impresionado mucho la creciente cantidad de plataformas de software que permiten a los desarrolladores externos contribuir con código a través de una arquitectura conectable (complementos / extensiones).
He estado estudiando qué plataformas tienen las mejores comunidades de complementos ...
Excelentes arquitecturas de complementos con comunidades de plugins prósperas:
- WordPress (y WordPress MultiUser) para bloguear: complementos 4245
- bbPress para tableros de mensajes: 165 complementos
- Firefox para navegadores: 1265 extensiones
- Magento para el comercio electrónico: 732 complementos
Luego hay plataformas con comunidades de plugins menos activas:
- MediaWiki para wikis: ¿ 22-38 extensiones?
(En aras de enfocarnos, dejemos de lado o ignoremos las plataformas que permiten aplicaciones de software completas, como Microsoft Windows, iPhone y Facebook).
¿Qué dirías que da a una plataforma de software una arquitectura de complementos exitosa con muchos complementos, frente a otra plataforma con una comunidad de desarrolladores más pequeña o inactiva?
Para comenzar, aquí hay una lista parcial:
- La plataforma hace algo ampliamente útil: permite a las personas navegar por la web, comprar y vender cosas, publicar blogs y tableros de mensajes, etc.
- La plataforma es de código abierto (o como mínimo, el código fuente está disponible gratuitamente).
- Todas las funciones importantes en la plataforma son completamente conectables mediante ganchos y filtros.
- Todas o la mayoría de las funciones conectables están bien documentadas (o hay una wiki para que los desarrolladores puedan documentarla por usted).
- Hay un foro o una lista de correo electrónico donde los desarrolladores pueden compartir complementos y compartir consejos y trucos.
- Existe un foro o una lista de correo electrónico donde los usuarios menos sofisticados pueden obtener ayuda para instalar y configurar los complementos.
¿Qué tipo de cosas puede hacer un desarrollador de plataforma para crear una arquitectura conectable que aliente a muchos desarrolladores externos a crear complementos?
Personalmente hay 3 contribuyentes principales para saber si aprendo (y escribo) aplicaciones para cualquier sistema dado:
¿El sistema es muy útil para que yo quiera usarlo lo suficiente como para motivarlo lo suficiente?
¿El sistema está usando un lenguaje con el que estoy familiarizado, o es fácil de aprender en comparación con alguna solución oscura o patentada o de otra manera demasiado complicada (ver elisp)?
¿Está el sistema de complementos extremadamente bien documentado en un lenguaje claro para que pueda dedicarme a escribir mi plugin y no pasar horas (o días) descifrando el sistema?
Si todo esto es cierto, la única razón por la que no te gustaría desarrollar para una plataforma es porque alguien más ya ha escrito complementos para todas tus ideas. :)
Creo que también es extremadamente útil / importante contar con un repositorio central y conocido para albergar los plugins aportados por los usuarios (según los proyectos de ejemplo). Odio tener que buscar en la web para encontrar complementos individuales, posiblemente de baja calidad o incluso posiblemente maliciosos, para algo que estoy tratando de hacer. Esto debería ser un sitio web o wiki, ya que incluso los foros o los archivos de la lista de correo pueden ser molestos y lentos para excavar.
Te estás perdiendo el punto.
La JVM es una arquitectura conectable. Cada archivo de clase se conecta y lo extiende.
Apache es una arquitectura conectable en varios niveles. Hay los "mods". Algunos mods ejecutan otros intérpretes, que a su vez son arquitecturas conectables. PHP, mod_wsgi / Python, etc. están todos conectados a Apache.
Python es una arquitectura conectable con archivos .pyc de Python y archivos de objetos (.DLL, .SO''s) que se conectan a ella.
Cada marco de lenguaje es, en efecto, una arquitectura conectable.
La plataforma es una fundación
Una vista de una plataforma de software es la base sobre la cual se basa otro software para realizar otra tarea. Esto puede ser una declaración simple y bastante obvia, pero es importante.
Lo básico debe ser fácil
Una plataforma debe tener un propósito y los desarrolladores de la plataforma deben tener esto en cuenta al diseñar las API para que sea obvio cuáles son los casos de uso primarios y las API a su alrededor deben ser lo más simples posible para usar con respecto a la forma en que están diseñados. pero también con respecto a la documentación que los rodea.
Los puntos de extensión deberían ser obvios
La extensibilidad en una platoform se trata de proporcionar a los desarrolladores la oportunidad de ampliar o cambiar la plataforma. Si esto es algo que desea alentar, debe dejar muy en claro la naturaleza y las limitaciones de esta extensibilidad y proporcionar un conjunto bien definido de interfaces para permitir esto.
Esto puede sonar obvio, pero si desea que una comunidad se desarrolle en torno a una plataforma, esa plataforma debe tener un uso y extenderla debería ser una experiencia directa.
Lo siento si esto crea una pequeña "astronave cultural", creo que hice algunos puntos válidos, es posible que los haya hecho mal, siéntete libre de señalarlos o agregarlos