El peligro de sugerir alguna característica de un producto, especialmente de código abierto, es que obtendrá la respuesta, "¿por qué no lo hace?".
Eso es válido, y es genial que puedas hacer el cambio tú mismo. Pero sabemos prácticamente que los productos a menudo mejoran a medida que los programadores escuchan la voz de los usuarios, incluso si esos usuarios son otros programadores. Y, la forma eficiente de hacer esos cambios puede incluir a alguien que ya está trabajando en el proyecto, tomando la idea e implementándola.
Hay algunos términos comunes utilizados para referirse a problemas de desarrollo de software. Por ejemplo, Bikeshedding . ¿Se utiliza un término común que esencialmente responda: "Sí, sé que puedo cambiar casi cualquier cosa en el mundo, incluso de código cerrado. Podría ser contratado e ir a escribir ese código. Pero en este caso solo estoy haciendo una observación que de hecho puede ser útil para otro codificador que ya está bien preparado para hacer ese cambio fácilmente, o simplemente para discutir las posibilidades ".
[ps (unos días antes) - Debería haber señalado que "enviar un parche" a menudo se dice con humor irónico, y estoy buscando una respuesta ingeniosa apropiada.]
fuente
Respuestas:
Es un punto difícil: dado que el usuario no paga directa o indirectamente un producto, no puede pedir que se implemente una característica. No es como si fuera una parte interesada o un cliente directo que ordenó el producto, y ni siquiera un usuario final de un producto comercial.
Dicho esto, "enviar un parche" no es una respuesta válida. No es cortés. No es correcto. Incluso para un producto de código abierto. "Enviar un parche" es la versión corta de:
¿Qué pasa con el envío de un parche?
Bueno, no es tan fácil. Para hacerlo:
Debe conocer los idiomas utilizados en el proyecto de código abierto.
Debe poder cargar el código fuente desde el control de versión para poder modificarlo.
Debe tener instaladas todas las versiones correctas de las dependencias de compilación (incluidas las bibliotecas de tiempo de ejecución y las herramientas de compilación).
Debe poder compilar este código fuente , que no es tan obvio en algunos casos. Especialmente, cuando un gran proyecto tarda unas horas en compilarse y muestra 482 errores y miles de advertencias, puede ser valiente para buscar la fuente de esos errores.
Debe comprender muy bien cómo se realiza el proyecto , cuáles son los estilos de codificación que se utilizarán, si los hay, cómo ejecutar pruebas unitarias, etc. Si el proyecto no tiene una documentación decente (que suele ser el caso para proyectos de código abierto ), puede ser realmente difícil.
Debe adaptarse al proyecto y a los hábitos de los desarrolladores que participan activamente en el proyecto. Por ejemplo, si usa .NET Framework 4 diariamente, pero el proyecto usa .NET Framework 2.0, no puede usar LINQ, ni Code Contracts, ni otras miles de nuevas características de las últimas versiones del framework.
Su parche debe ser aceptado (a menos que haga el cambio solo para usted, sin la intención de compartirlo con la comunidad).
Si su intención es participar activamente en el proyecto, puede hacer todas esas cosas e invertir su tiempo para ello. Si, por otro lado, solo hay un pequeño error molesto o una característica simple que falta, pasar días, semanas o meses estudiando el proyecto, entonces hacer el trabajo en sí en unos minutos no es razonable, a menos que te guste.
Entonces, ¿hay una respuesta canónica a "es de código abierto, envíe un parche"? No lo creo. O le explicas a la persona que es descortés, o simplemente dejas de hablar con ella.
fuente
La réplica canónica es enviar un parche.
fuente
Esta es la respuesta estándar cuando los desarrolladores no piensan que van a hacer algo en un plazo razonable, pero ha sido mencionado repetidamente.
Es muy injusto cuando se ha mencionado repetidamente, pero la persona que lo mencionó más recientemente no lo sabe, y se da cuenta de que "estamos tomando parches para eso" de inmediato. En este caso, el mantenedor está harto de la discusión, pero el usuario cree que es un tema nuevo. De todos modos, lo más probable es que si "toma parches" de inmediato, no debería tomarlo personalmente, pero es posible que desee leer los archivos y el rastreador de errores para obtener más detalles sobre el tema.
Si usted mismo presenta una solicitud en repetidas ocasiones, "tomar parches" está potencialmente destinado a ser un rechazo relativamente amable, en comparación con algunas alternativas menos educadas ...
Y luego, por supuesto, hay groseros mantenedores que dirán "tomar parches" sin ninguna explicación para nadie, pero yo diría que es una minoría.
Si alguna vez ha mantenido un proyecto de código abierto con muchos usuarios, sabrá que hay 100 veces más solicitudes de las que podrían obtener los encargados del mantenimiento, y muchas de esas solicitudes son importantes para el solicitante pero serían exageradamente difíciles, o interrumpiría a muchos otros usuarios, o tendría algún otro defecto que solo sea visible con una comprensión global del proyecto y la base de código. O a veces solo hay juicios, y lleva demasiado tiempo discutir cada uno una y otra vez.
La mayoría de las compañías que no son de código abierto no le darán acceso a los desarrolladores en absoluto, y solo recibirá el tratamiento silencioso o una historia cortés pero falsa de la atención al cliente. Entonces, en código abierto, al menos tiene algunas opciones (pagarle a alguien para que codifique la función, etc.) y aunque los desarrolladores pueden ser groseros, al menos dan respuestas directas. Prefiero tener "no" que lo habitual "está en nuestra hoja de ruta ... [2 años después] ... todavía está en nuestra hoja de ruta" tipo de cosas que he recibido de varios proveedores ...
Entonces no creo que haya una réplica. Tal vez el mantenedor de código abierto esté realmente ocupado, tal vez sea un imbécil, pero de cualquier manera, es probable que tengan un trabajo difícil y entrar en un debate sobre quién tiene la última palabra no va a ninguna parte. Lo mejor que puede hacer es contribuir de alguna manera e intentar ser constructivo.
Tal vez no sea código, pero posiblemente haya muchos análisis y documentación de escenarios de usuario que podría hacer. Cuando mantenía el administrador de ventanas de GNOME, muchas veces hubiera sido útil para las personas analizar un problema globalmente considerando a todos los usuarios, y realmente escribir los problemas y las ventajas y desventajas y lo que debería suceder desde una perspectiva global.
(En cambio, lo habitual era comenzar a flamear como si fueran el único usuario que importara y no hubiera compensaciones. Y si bien eso es genial, y fue un punto de datos, y a menudo me las arreglé para ser educado o incluso resolver su problema eventualmente ... . flamear no hace que nada suceda más rápidamente. Simplemente confunde las emociones con el tema y desperdicia el tiempo de todos).
fuente
La razón por la que obtiene esta respuesta no es que los encargados del mantenimiento sean imbéciles, es que no los ha convencido adecuadamente de la propuesta de valor de que trabajen en su función para usted .
La mejor respuesta es iniciar un diálogo sobre el valor de su función para toda su comunidad , para ver si puede convencerlos de que cambien de opinión. Tal vez tengan razón y sepan más sobre las necesidades de su propia comunidad que usted, pero, una vez más, tal vez no.
Si la función solo es valiosa para usted y tiene poco o ningún valor para la comunidad, creo que el dinero es un excelente motivador, mientras que las quejas sobre su actitud no lo son.
fuente
No hay una réplica razonable que pueda hacer alguna diferencia. Intentar persuadir a los voluntarios para que hagan algo que no tienen intención de hacer es una pérdida de tiempo ... o algo peor.
Sus opciones son:
Haz lo que sugiere la respuesta; es decir, implemente la función y envíela como un parche. Se llama "devolver algo".
Encuentre a alguien que esté dispuesto a implementar la función por dinero real. Podría ser el proyecto en sí (por ejemplo, a cambio de patrocinio), alguien asociado con el proyecto o algún "codificador de alquiler" aleatorio.
Encuentra un producto alternativo.
Si recibió esta respuesta cuando hizo una sugerencia "útil", considere cómo podría haber respondido si estuviera en su lugar. Por ejemplo, ¿cómo respondería USTED si pensara que la sugerencia no valió la pena / bien pensada / inteligible / etc., pero no tuvo el tiempo o la paciencia para entablar un debate prolongado?
He estado involucrado en un proyecto de sistema operativo de código abierto de larga duración, y una de las cosas más molestas son las personas que se sientan en la "galería de maní" y lo llenan de sugerencias sobre cómo hacer las cosas "mejor" que:
A menudo, la mejor respuesta es desafiar deliberadamente a la persona para que se involucre en el proyecto ... y esperar que tomen la indirecta ... de "aguantar o callar". Desafortunadamente, los más molestos ni siquiera se dan cuenta.
Por supuesto, la otra respuesta a esas personas es no responder en absoluto o ignorarlas por completo.
fuente
La respuesta sería razonable si usted y el programador en cuestión fueran iguales y supieran casi lo mismo sobre la base del código y el lenguaje y todas las demás cosas relevantes para esta cosa en particular que está señalando.
No eres igual (o probablemente lo hubieras hecho), por lo que sugeriría una réplica adecuada:
"No hay forma de que pueda hacerlo tan rápido y bien como puedas, por eso te pedí que me ayudaras en primer lugar. ¡Por favor!"
Creo que va en contra de la naturaleza humana fundamental decir "oh, sí, esto en lo que he pasado mucho tiempo y es realmente bueno, es tan simple que cualquiera puede venir de la calle y hacer un trabajo tan bueno como Yo puedo ".
fuente
La réplica canónica es bifurcar el proyecto.
fuente
La respuesta canónica para "enviar un parche" es:
fuente
Presentar un caso de prueba completo .
fuente
"Si lo haces, lo incluiré" es mucho mejor que "no".
Si no puede hacer el trabajo por una razón u otra, explique la circunstancia al responsable del proyecto en privado.
Si no está dispuesto a contribuir de alguna manera a un proyecto de código abierto que le gustaría utilizar, entonces debería buscar soporte comercial u otro producto comercial.
fuente
"Gracias por la respuesta."
Porque:
fuente
No tienes que decir nada. El hecho mismo de que los desarrolladores hayan respondido es una indicación suficiente de que ya saben que el problema existe y que eso causa dolor a (al menos algunos) usuarios.
Al final del día, nada de lo que diga convencerá al desarrollador de que trabaje para usted si no lo desea.
fuente
Un buen proyecto de código abierto tendrá un sistema de solicitud de errores / características donde los usuarios pueden enviar errores / características y otros pueden votar sobre ellos para que los encargados del mantenimiento puedan identificar lo que es importante para la comunidad en su conjunto. Sin embargo, la forma más rápida de implementar su función es enviar un parche. Punto ... no hay forma de evitar eso.
fuente
Personalmente, preferiría recibir una respuesta de "Este es un problema conocido, pero desafortunadamente no es un problema que se aborde en el corto plazo. Los desarrolladores están trabajando en otros problemas. No hay ETA en este momento".
La respuesta "enviar un parche" es muy grosera, ya que supone una serie de cosas:
Incluso si asumimos que el creador de la respuesta "enviar un parche" sabe todo lo anterior, eso simplemente hace que la afirmación suene como "X horas de mi tiempo valen más que las órdenes de magnitud de más horas de su tiempo para levantarse acelerar y solucionar el problema ".
En general, cuando recibo una respuesta grosera de un desarrollador cuando pregunto sobre un problema que tengo o envío un error, dejo de usar ese programa. Ya no uso uTorrent (no de código abierto, pero el punto sigue siendo), por ejemplo, porque las respuestas que recibí en su foro de "soporte" fueron muy groseras. Envié un problema que tuve en el foro de Bug Reports. El subproceso se bloqueó inmediatamente con un enlace a otro subproceso sobre un problema similar pero diferente en un subproceso (que también estaba bloqueado, por supuesto). Mientras tanto, abrí un hilo en el foro de discusión general preguntando si alguien había encontrado una solución al problema. En el tiempo que tardó en guardar ese hilo y regresar y ver que mi primer hilo había sido bloqueado, mi hilo en General estaba bloqueado y mi cuenta del foro fue bloqueada por comportamiento disruptivo. Desinstalé uTorrent y no he vuelto desde entonces.
fuente
Simplemente responder "enviar un parche" es grosero de la OMI, pero aún así ... si usa software de código abierto para algo serio, debe estar preparado para encargarse de él si surge la necesidad.
Lo siguiente se basa en una publicación de Jeremias Maerki (de la fama de Apache FOP):
Creo que es una versión completa muy válida de la respuesta "enviar un parche".
fuente
Cada vez que veo esto, inmediatamente empiezo a buscar un producto alternativo. Para mí, esta es una señal peligrosa de que los mantenedores no se preocupan por sus usuarios (malo si su proyecto se usa en todas partes) o han perdido interés en el proyecto. Por lo general, ambos significan que el proyecto morirá pronto o estará plagado de estancamiento a medida que los desarrolladores se nieguen a avanzar el proyecto
(Tenga en cuenta que no estoy diciendo que el primer informe de error que vea con este tipo de respuesta se ejecute. Debe observar una tendencia general. Si la mayoría de los informes de error terminan con este tipo de respuesta, siga este consejo. Si son solo unos pocos, entonces esas son las solicitudes de características que probablemente no se ajustan a los objetivos del proyecto o son extremadamente específicas de uso)
Como dijo @MainMa, comenzar a contribuir a un nuevo proyecto es muy difícil. La mayoría de los desarrolladores no entienden esto, ya que han estado trabajando en el proyecto durante meses / años y tiene sentido para ellos. Esto a veces puede ser un error honesto.
fuente
De vez en cuando bromeo diciendo que el software libre puede ser gratis como en cerveza, gratis como en voz o gratis cuando obtienes lo que pagas.
Si bien lo digo en broma (trabajo para una empresa que usa mucho OSS) pero creo que hay una verdad allí: si quieres soporte a nivel comercial, entonces necesitas usar software comercial con un acuerdo de soporte adecuado o encontrar un Solución de software de código abierto que le permite ese nivel de soporte (generalmente a través de alguien a quien se le paga por proporcionarlo, pero potencialmente a través de su organización que emplea o asigna recursos de desarrollo para trabajar en él).
"Enviar un parche" es exasperante, pero resalta algo sobre OSS y quizás debería ser un recordatorio de que OSS no es adecuado para todos en cada situación, al menos no sin asegurarse de tener un marco de soporte sólido para ello ( internamente, pagado por oa través de la comunidad).
A menudo pensamos en el software que es gratuito como en la cerveza pero no como en el discurso (es decir, freeware no abierto). Quizás este sea un caso en el que deberíamos pensar que el software es tan libre como en voz pero no como en cerveza.
fuente
Cambie a una alternativa bien mantenida.
Según mi experiencia con proyectos de código abierto bien mantenidos, si crea un informe de error bien definido o una solicitud de función, tiene muchas posibilidades de ser implementado.
fuente
"Puedo trabajar en una sola cosa a la vez, pero puedo quejarme de muchas cosas a la vez. Creo que ambas funciones son útiles". - Akkartik en ycombinator .
fuente
Considero que cuando uno está trabajando en un proyecto, brindando lanzamientos y soporte, surge un contrato de soporte implícito y tácito entre el desarrollador y el usuario. El desarrollador ha asumido la responsabilidad implícita de admitir la base de código para sus usuarios, incluida la adición de funciones a pedido.
"Enviar un parche" es básicamente dar el dedo a los usuarios, en mi opinión. Esto es contextual: a veces es demasiado esfuerzo implementarlo, a veces arruinaría el proyecto existente o incurriría en una creaturitis débil, o cualquiera de una serie de otras razones. Pero, en última instancia, está diciendo, "jódete, no lo hagas". Lo que, en mi opinión, es, en cierto nivel, una violación de ese contrato tácito.
fuente
Hay varias formas de hacerlo.
Característica propuesta y votación. Pero esto lleva tiempo.
Ser contratado por una empresa que lo necesita para hacer el parche. Obviamente esta es la mejor solución, pero prepárate para colaborar con el tipo que hace el software de código abierto que deseas actualizar.
Descubrir por qué la función no se implementa en primer lugar también es importante. A menudo, la función está fuera de la línea del proyecto de software: el equipo no quiere esta función, no se siente necesaria o simplemente piensa que no es la mejor manera de hacer algo. En este caso, solo debe bifurcar el proyecto y hacerlo usted mismo.
Use software propietario que haga lo que quiera.
Recuerde que el software OOP a menudo facilita el proceso de integración de una función.
Quejarse en una lista de correo, en irc o en un foro simplemente enojará a los programadores y dará munición a los proponentes de OSS.
fuente
No hay nada que puedas decir que lo obligue a hacerlo. Después de todo, ¿por qué debería hacerlo? ¿Por los deseos de un usuario? No es razón suficiente.
Pero , si puede reunir una cantidad razonable de usuarios y dar razones racionales ("Lo quiero" no es una razón racional), por qué esa característica podría ser útil, en general, para usted y para una cantidad de otros, podría cambiar de opinión. .
Aunque, también hay un caso especial que debe ser considerado. Que un dev. está cansado de desarrollar la aplicación, lentamente desea abandonarla (tiene otras cosas que hacer), por lo que lentamente está abandonando las solicitudes de funciones. Aparte de tratar de convencerlo de que publique el código, en este caso no hay prácticamente nada que pueda hacer, incluso con respecto a lo anterior.
fuente
Los proyectos de código abierto en particular son amigables con las recompensas o la financiación del desarrollo de una característica en particular, incluso si la nueva característica no llega a los lanzamientos oficiales.
Además, sí, una de las ideas detrás de la publicación de código abierto es que todos tengan el derecho y la responsabilidad de hacer sus propias contribuciones.
Con el código cerrado, su mejor recurso es reunir un grupo estadísticamente importante de la base de usuarios que desee soluciones como las que desea.
fuente
En mi experiencia, esta respuesta generalmente se da si la solicitud del usuario no se ajusta al objetivo del proyecto. Ocurre cuando la gente piensa que vas a implementar todo lo que te proponen, y un poco más, de forma gratuita, de código abierto y un futuro excelente y feliz.
'Enviar un parche' es una respuesta relativamente grosera (y debe evitarse, por supuesto. Especialmente en esta forma concisa y aguda. Hay muchas formas de expresar aproximadamente el mismo mensaje, por ejemplo, 'invitar' a los usuarios a ayudar porque usted no tengo tiempo para implementarlo por tu cuenta). Pero como es, es un claro indicador de "deja de perder el tiempo". Como tal, no hay mucho que puedas hacer al respecto, ni hay una respuesta 'canónica'.
La mejor respuesta que se me ocurre es presentar un parche . Suponiendo que su parche funciona, al menos ha demostrado que la idea no es totalmente poco realista. Por lo general, esto significa que las personas a cargo del proyecto volverán a considerar la propuesta.
fuente
"enviar un parche" es un rechazo legítimo de ideas que no se ajustan a los objetivos del proyecto. Probablemente sea mejor a largo plazo simplemente decirle que la idea apesta o que está tratando de usar el proyecto para algo que está muy lejos del alcance previsto, pero "oye, si crees que lo que estás preguntando es tan trivial, ¿por qué no?" Intentar ajustarlo en nuestra base de código existente "es apropiado en algún momento.
Si es menor y realmente útil para los usuarios previstos del proyecto, simplemente envíe el informe de error, describa claramente el problema, dé pasos para reproducir, indique que está utilizando la compilación nocturna actual y déjelo así.
Lo que puede parecer un cambio simple menor que ayudaría a toneladas de usuarios en realidad puede ser un gran dolor en el culo que nadie usaría además de usted. Ese es el mejor caso para "enviar un parche".
También es posible que te hayas encontrado con un caso como el notorio mantenedor de glibc que parece tener una mente unidireccional de que su sistema es el universo, su interpretación de las especificaciones es la palabra de Dios, y eso es todo, independientemente de de cuántas personas preferirían lo contrario.
fuente
Sugeriría crear un proyecto para implementar la función en sitios como RentACoder / ELance / etc, y publicarlo en el foro original del proyecto de código abierto. Cualquiera de los programadores de los proyectos de código abierto, incluido el autor, ahora tiene un incentivo financiero para considerar su solicitud.
fuente
De hecho, me inscribí solo para responder esta pregunta.
¿Hay necesidad de una réplica? esta respuesta generalmente se usa cuando el desarrollador conoce el problema pero no lo considera tan importante.
Te daré un ejemplo en vivo. ubuntu abandonó el soporte de systray (pero puede solucionarse haciendo una lista blanca de una aplicación) y agregó nuevos indicadores de aplicación. algunas aplicaciones como jupiter confiaban en el soporte de systray, por lo que el desarrollador habló sobre el workaournd en lugar de agregar soporte de indicador de aplicación, así que le pedí al desarrollador que agregara el indicador de indicador de aplicación, la respuesta fue "Envíenos parches". al preguntar la razón por la que eligieron no implementar esto. hubo esto
Lo suficientemente justo. el desarrollador tiene razones para no implementar una función, pero está dispuesto a aceptar parches. esto no es realmente grosero y ofensivo, por lo que no hubo necesidad de una réplica.
Conclusión: la réplica canónica sería enviar el parche, pero si no puede, no hay necesidad de una réplica
fuente
Comience una recompensa por la función que desee.
O salga y compre el producto que dice hacer exactamente lo que quiere y abusa de su personal de soporte cuando descubre que el marketing no cumple con sus expectativas.
fuente
Lo mejor que puedo pensar es "apestas".
Lo siento, obviamente, esto no es muy útil, pero creo que esta es solo una de las situaciones desafortunadas en las que el usuario está completamente jodido. Un llamamiento brutalmente honesto a la conciencia del desarrollador es un último esfuerzo.
Podría intentar ofrecer "donaciones" (para la tos ) para que se solucione su problema, pero me temo que una práctica de este tipo, si se hace común, conduciría a una pérdida de integridad realmente grave en la industria, ya que las correcciones de errores nunca deberían ser rentables, ya sea para Software "gratuito" o comercial.
fuente