open-source - software - sistemas open source
¿Contribuir con herramientas internas al código abierto vale la pena? (7)
Sé que esta es una pregunta general, pero me gustaría escuchar la opinión de otras personas sobre nuestro caso:
Yo trabajo en una pequeña empresa. Nuestra principal herramienta de desarrollo es PowerBuilder, que es un IDE muy limitado con una comunidad reducida. Hemos creado algunas herramientas, que utilizamos internamente para resolver ciertas necesidades. No se han diseñado ni probado adecuadamente, y no están en calidad de producción. OTOH, nos ahorran bastante tiempo y pueden ayudar a otros también. Estoy seguro de que otras compañías tienen el mismo tipo de herramientas y me preguntaba qué tan común es compartirlas con otras personas. Como yo lo veo -
Los profesionales:
- Buen karma
- Más atención a nuestro sitio web.
- Quizás obteniendo arreglos y mejoras de otros.
Los contras:
- Sin invertir más desarrollo, las herramientas podrían hacernos quedar mal.
- La publicación del código requiere un poco de esfuerzo.
- Algunas de las herramientas pueden ser demasiado especializadas para nuestras necesidades.
- Todo el esfuerzo puede pasar desapercibido dada la disminución de la comunidad.
¿Alguna vez usted o su empresa han contribuido con estas herramientas, o han utilizado tales herramientas desarrolladas por otros? ¿Vale la pena el esfuerzo?
EDITAR:
Para aquellos que se preguntaban, las herramientas que tenía en mente incluyen:
- Una herramienta que facilita el uso de SourceSafe, enumerando los objetos que se prestan al usuario actual u otros, realizando copias de seguridad de los objetos extraídos y reconstruyendo los PBG.
- Una herramienta que reconoce los controles de PB en tiempo de ejecución, como lo hace Spy ++ (requiere algo de infraestructura en la aplicación de destino).
- Contenedor PBNI para SQLite (acceso en proceso, sin ODBC).
- Un cliente SQL, herramienta de medición de texto, etc.
"Fuente abierta" originalmente significaba que usted publicó una herramienta, e hizo que la fuente estuviera disponible . Debido a que algunos proyectos esperaban, y en algunos casos a través de licencias exigían que los cambios en el código fuente se reenvíen para compartir, el "código abierto" ahora suele agregar el concepto de desarrollo colaborativo a la combinación. Hice (o intento hacer) lo último; dejame compartir
Hay magnitudes de diferencia entre el esfuerzo asociado con la fuente disponible y el código abierto de desarrollo colaborativo .
Liderazgo: necesita decirle a la gente el quién, qué, dónde, cuándo, por qué y cómo de los cambios. Y muy posiblemente, tendrá que empujar y empujar diplomáticamente a sus voluntarios. Es posible que deba definir la visión y priorizar los objetivos del proyecto, y luego aplicarlos cuando alguien intente tomar las cosas de otra manera. Y, a menos que solo quiera que la gente encuentre su herramienta a través de la casualidad, tendrá que hacer publicidad, correr esa línea muy delgada (incluso más delgada en Internet) entre llamativo y llamativo. Si el proyecto va a implementar el concepto de meritocracy , como muchos proponentes de código abierto dicen que debería suceder, entonces alguien tendrá que juzgar los logros de las personas y distribuir los derechos y responsabilidades de manera apropiada.
Flujo de trabajo: no he realizado una búsqueda exhaustiva por ningún tramo de la imaginación, pero aún tengo que ver una plataforma de desarrollo colaborativo que hizo todo lo que necesitaba. Parte del punto del desarrollo colaborativo de código abierto es que la cantidad involucrada en la revisión del código cubrirá cualquier problema potencial en la calidad de los envíos de código; No he visto una herramienta gratuita integrada en una plataforma de desarrollo colaborativo que ayudara a gestionarla de manera limpia (p. Ej., Contando las revisiones de códigos; promocionándome automáticamente después de x revisiones). Tuvimos que manejar eso, pirateando métodos manuales en las herramientas existentes. Probablemente en algún momento tendrás que definir una versión y crear una compilación. Luego están las tareas roncas como la documentación. (¿Alguna vez intentaste lanzar una nueva versión de algo gratis sin notas de lanzamiento? ¡La furor!
Problemas específicos de PB: PowerBuilder es una herramienta comercial, y si bien hay versiones baratas available , no hay versiones gratuitas . El DRM agregado a PB11 probablemente redujo o eliminó la piratería que los desarrolladores probablemente estaban haciendo para llevar copias de su oficina a casa, y mientras PB11 y más tarde tienen una política de doble licencia que les permitiría llevar a casa una copia legalmente (con permiso y cooperación de los propietarios de la licencia original para crear una segunda licencia), no veo mucho hacerlo. (No hay estudios científicos, eso es lo que veo). Eso reduce una gran cantidad de colaboración potencial, incluso de entusiastas. Los problemas de compatibilidad de código entre las versiones de PowerBuilder, y el hecho de que muy pocas personas serán propietarias de cada versión, volverán a limitar su lista de posibles contribuyentes.
No me malinterpretes Me encantaría ver más código abierto de desarrollo colaborativo en la comunidad de PowerBuilder. Me encantaría saber cómo resolver los problemas yo mismo, y me esfuerzo en los trabajos para ver si puedo hacer que un nuevo modelo funcione. (Mi primer esfuerzo para seguir el modelo popular fracasó estrepitosamente, en mi humilde opinión).
¿Hay alguna razón para sentirse mal por disparar un archivo ZIP a la web y olvidarlo? No lo sé. ¿Hay más orgullo o vergüenza en un archivo ZIP de 4 años en lugar de un proyecto de SourceForge cuya última contribución hace 3 años y medio fue una publicación "¿Dónde diablos están todos?" Hay una razón por la que Sybase CodeXchange se transfirió de una plataforma de desarrollo colaborativo a una plataforma disponible de origen : casi nadie estaba usando las características de desarrollo colaborativo . Si obtiene el código fuente abierto de su código, tendrá mucha compañía.
Por cierto, CodeXchange puede ser una respuesta a su preocupación sobre la visibilidad de la comunidad de PowerBuilder, aunque perderá el tráfico del sitio web. PowerBuilder Web Ring es otro método, significativamente menos efectivo, para ayudar a su visibilidad que mantiene el tráfico en su sitio web, pero exige una barra de navegación en la página de destino de su sitio. CodeXchange también puede ser una forma de superar sus inquietudes sobre la calidad del código y la estrechez de objetivos de lo que tiene que compartir. mueca
¿Qué debes hacer? No subestime el esfuerzo con un desarrollo colaborativo compartido, pero no permita que lo detenga de una fuente disponible para compartir.
Buena suerte,
Terry
Acabo de ver tu respuesta a mi pregunta , es increíble que ya hayas desarrollado algo similar. :-)
Con respecto a su pregunta: la empresa para la que trabajo tiene una sección específica en el sitio web donde se publican las herramientas que utilizamos internamente y / o las soluciones simples (o fragmentos de código) que los clientes solicitan con frecuencia. La licencia de estas ofertas también es muy liberal, creo que califica como fuente abierta.
En su caso particular, estoy bastante interesado en la aplicación similar a Spy ++ de la que habló ya que estaba buscando (y / o tratando de desarrollar) algo así.
Busco algo que no requiera ninguna infraestructura en la aplicación de destino, pero hasta ahora me encantaría jugar con cualquier cosa que funcione, incluso si requiere modificaciones en las aplicaciones. Simplemente no estoy lo suficientemente familiarizado con la API de PowerBuilder para evaluar si esto es posible sin modificar la aplicación de destino.
Como mencioné, ya desarrollé aplicaciones similares a espías para aplicaciones comunes de Windows, así como aplicaciones de código administrado (que requieren interacción con la VM para consultar el estado del árbol de objetos), por lo que espero poder poder Encuentre una solución que no requiera ninguna infraestructura de destino.
¿Ya tienes el código fuente en algún lugar? No es necesario que sea compilable, simplemente me complacería ver cómo lo hizo en principio para que pueda (con suerte) derivar algo de él que resuelva mi problema particular. En caso de que todavía no haya cargado el código fuente, ¿quizás pueda proporcionar alguna dirección de correo electrónico que pueda usar para contactarlo de forma privada? Intenté buscar algo en tu perfil, pero hasta ahora, sin suerte. :-)
Creo que has hecho un buen trabajo identificando los pros y los contras. Y es probable que los pros superen a los contras. Si a nadie le gustan las utilidades y no hace nada con ellas, entonces realmente no has perdido nada; el código incorrecto no debería asustar a los desarrolladores experimentados (los desarrolladores más experimentados, especialmente los PB, han visto su parte de código heredado). Si incluso una persona se beneficia, entonces obtienes el karma, ¿eh?
Si procede a enviar sus herramientas a la comunidad de código abierto, haga lo que tiene aquí y admita por adelantado que las herramientas no están pulidas. Esto puede disuadir a algunos incluso de mirarlos, sin embargo, si son al menos funcionales y se pueden modificar fácilmente, entonces aún representan una ventaja para cualquier posible beneficiario. Como usuario de PB, me gustaría saber más acerca de las herramientas gratuitas que nos pueden dar una ventaja en productividad.
¿Has mirado en CodeExchange de Sybase? Tienen algunas cosas de PB de código abierto, incluido el marco de la clase de la Fundación PowerBuilder.
En resumen: adelante. Dudo que haya poco que perder, pero mucho que ganar.
Los profesionales:
**Buen karma*
Nunca es algo malo tener.
** Más atención a nuestro sitio web *
posiblemente una estafa si tu código es realmente malo :)
** Quizás obteniendo arreglos y mejoras de otros *
Esta es posiblemente la mejor cosa que obtiene de su código de código abierto. Se trata de compartir y ayudarse mutuamente, puedes usar el código de otros, ellos pueden usar el tuyo y todo lo que se ha ganado con el intercambio.
Los contras:
** Sin invertir más desarrollo, las herramientas podrían hacernos quedar mal *
Buscaría para eliminar los comentarios dudosos / groseros / estúpidos, ordenar el formato, etc.
** La publicación del código requiere algún esfuerzo *
apenas requiere esfuerzo: configure una cuenta en Sourceforge, cree un repositorio SVN allí e importe su código. Luego cree un paquete binario (un archivo zip servirá) y libérelo usando el sitio web. Podría tomarte una hora, si te detienes a leer toda la documentación.
** Algunas de las herramientas pueden ser demasiado especializadas para nuestras necesidades *
Puede configurar todo el grupo como un grupo, por ejemplo, PowerBuilder Tools, luego las personas que ven las herramientas realmente especializadas no habrán perdido el tiempo en obtenerlas, seguirán teniendo las herramientas "más útiles".
** Todo el esfuerzo puede pasar desapercibido dada la disminución de la comunidad *
Posiblemente, pero entonces realmente no hay razón para no liberar el código. Si no lo hace, puede perderse por completo cuando cambie las herramientas de desarrollo.
Probablemente pueda descartar una de sus desventajas: es poco probable que cualquier persona interesada en este tipo de herramienta para evaluar su oferta esté escribiendo Company X en el formulario de comentarios; más bien, si encuentran alguna deficiencia en lo que usted ha publicado, es probable que obtenga informes de errores útiles o incluso parches.
Publicar su fuente es una excelente manera de obtener comentarios. Si te ves mal por eso, está bien. Sólo estar dispuesto a solucionar el problema. Si necesita ayuda con sus mejoras, no puedo pensar en una mejor manera que en pedir ayuda.
Por cierto, muchos proyectos de código abierto pueden ser acreditados con el crecimiento de comunidades que anteriormente se estaban reduciendo.
Si puede hacer que su compañía compre por contribuir a la comunidad, entonces yo lo haría. siempre vale la pena el esfuerzo de devolver un poco, y esta sería definitivamente una buena manera de hacer llegar algunas de sus herramientas al público y mejorarlas la comunidad.
En cuanto a las desventajas, no me preocuparía demasiado la crítica, solo puede ayudarles a mejorar el próximo producto que entregan y la gente lo respetará al aprender de sus errores, nadie es perfecto.
Incluso si su pequeña comunidad no se da cuenta de su esfuerzo, los futuros empleados y clientes verán que está contribuyendo fuera de la empresa y puede ayudarlo a mejorar su reputación con ellos.
Creo que los pros superan con creces los contras en este caso.