¿Se debe compartir el código interno con los no desarrolladores en una organización?

14

Donde trabajo, tenemos muchos desarrolladores y una gran cantidad de código que ejecuta nuestras aplicaciones propietarias utilizadas por el personal y los clientes por igual.

También contamos con una gran cantidad de personal de soporte inteligente al que le gusta comprender el funcionamiento interno de nuestros sistemas para brindar un mejor soporte a nuestros clientes, y tal vez incluso enviar un parche de vez en cuando.

¿Deberíamos abrir nuestro código para que nuestro personal que no es de desarrollo pueda leer? ¿Qué factores debemos tener en cuenta al tomar esta decisión? Me he encontrado con un montón de argumentos y contraargumentos en cada sentido y me gustaría tomar una decisión basada en la experiencia de los demás, así como en los riesgos bien entendidos.

Algunos argumentos hasta ahora:

  • Las contraseñas en VCS están expuestas (solución: deshazte de las contraseñas, para empezar no deberían estar allí)
  • El código está abierto a ataques de seguridad de caja blanca (contraargumento: esto solo mantiene fuera a los atacantes honestos / perezosos)
  • El personal de soporte puede preguntar a los desarrolladores "cómo" funcionan las cosas (contador: enseñar a un hombre a pescar, etc.)

¿Alguien abre su código al personal de su organización? ¿Ha causado algún problema?

Mark McDonald
fuente
44
¿Por qué querrías ocultárselo?
Marjan Venema
1
¿Puedes citar la ley para respaldar eso?
Blrfl
3
@ S.Lott: es un "activo de capital" y, como tal, la empresa tiene derecho a controlar qué empleados pueden o no acceder a él. Por lo general, la empresa querrá limitar la cantidad de empleados que tienen acceso para limitar la cantidad de personas que pueden ser sobornadas u obligadas a entregar el activo o abusar del activo cuando no están de acuerdo con la empresa. Así que en la mayoría de los casos se debe no ser divulgada internamente (a todo el mundo, sino que debe ser revelada a la gestión).
Jan Hudec
1
@ JanHudec: "debe divulgarse a la gerencia"; "La empresa tiene derecho a controlar qué empleados pueden y no pueden acceder a ella". Perfecto. No corresponde a los desarrolladores tomar estas decisiones. De ahí mi solicitud de aclaración. ¿Cómo puede surgir esta pregunta? ¿Por qué los desarrolladores toman esta decisión?
S.Lott
1
@ S.Lott: No veo que la pregunta implique que son los desarrolladores quienes están tomando esta decisión. La gerencia tiene la última palabra, pero alguien tiene que reunir argumentos para ellos.
Jan Hudec

Respuestas:

8

No creo que haya una respuesta general a esto. Las organizaciones difieren enormemente en su tamaño, extensión geográfica, cultura de la empresa, políticas de derechos de autor, tipo de software que se está desarrollando, etc.

Por ejemplo, para una empresa que desarrolla software de tipo de productos básicos / infraestructura, puede ser fácil abrir el código fuente, incluso abrirlo, como hizo Cisco hace algunos años con su software de controlador de impresora (IIRC).

Para una empresa que desarrolla un software propietario poco común, que puede incluir algoritmos especiales o cosas que les brindan una ventaja competitiva sobre su competencia, puedo entender muy bien si se esfuerzan por mantener su código en secreto. Por ejemplo, AFAIK Google limita muy estrictamente el número de personas a las que se les otorga acceso a su implementación de algoritmo de búsqueda central.

Además, una organización multinacional se extiende hoy en día en muchos países, zonas horarias y culturas, y por razones de seguridad, probablemente segmenten su intranet y usen firewalls para controlar el tráfico entre diferentes segmentos / dominios. Por lo tanto, hacer que un repositorio SCM sea responsable para "toda la empresa" puede, de hecho, requerir mucho trabajo adicional para los administradores de sistemas y un riesgo adicional para la seguridad. Si bien generalmente no trae ningún beneficio en general, ya que los empleadores que trabajan en un continente diferente en cosas totalmente diferentes probablemente ni siquiera saben sobre nuestro proyecto aquí, y mucho menos para contribuir positivamente.

Entonces, si tiene sentido dentro de su departamento , y / o para las personas asociadas con el proyecto de alguna manera, ¿por qué no? Pero en general, solo por "apertura", no estoy seguro de que valga la pena.

Una nota final: incluso cuando las personas de soporte son inteligentes y están ansiosas por contribuir con parches, yo diría que sus contribuciones siempre deben ser revisadas por un desarrollador antes de integrarse en el sistema.

Péter Török
fuente
5

En la mayoría de las organizaciones en las que he trabajado, el repositorio de código estaba abierto a todos los desarrolladores.

En algunos también se usaba para almacenar documentos (como especificaciones y requisitos) para versionarlos junto con el software. En ese caso, la mayoría de los otros empleados también tenían acceso. Cuando el repositorio solo se usaba para el código, los no desarrolladores generalmente no tenían acceso, pero nunca escuché a nadie quejarse, por lo que probablemente no fue un gran problema de ninguna manera.

Recomendaría la mayor apertura posible, así que si la gente quiere acceso, déselo a menos que haya un problema obvio. Pero esa es realmente una cuestión de la cultura de la organización ...

sleske
fuente
4

Comparto una visión general / pragmática de esto y también puedo depender de la naturaleza del trabajo / organización. Pero sí creo que la base del código debería estar abierta a todos (también mostrará apertura y confianza dentro de la organización).

También trabajo en una configuración similar a la que mencionaste, donde tenemos un equipo de soporte / asistencia que se ocupa de las solicitudes de los clientes. Sin embargo, ciertas áreas complejas del sistema requieren ayuda adicional. En mi caso, el código base está abierto a todos, no hemos encontrado ningún problema.

  • Creo que al abrir la base del código, otros miembros del equipo de soporte que estén interesados ​​también pueden verificar la base del código y familiarizarse con las reglas / área de negocios que les interesa o necesitan encontrar respuestas (y posiblemente mejorar su comprensión técnica y mirar algo diferente a la monótona rutina si el tiempo lo permite;)). Esto también podría resultar útil cuando los miembros del equipo de soporte obtienen problemas y registros de los clientes y podrían apuntar / ayudar en las posibles áreas del código donde esto sucede mirando el stacktrace, por ejemplo (obviamente dependerá del problema, etc.). Esto también ahorrará tiempo con el desarrollador, pero dependiendo del problema, por supuesto.

También será útil tener una documentación / wiki actualizada del producto que contenga todas las reglas / decisiones comerciales. Pero, por supuesto, debe asegurarse de que la wiki se actualice constantemente para volver a crear nuevas mejoras y / o correcciones de errores (donde el comportamiento cambia). Mis pensamientos honestos

MalsR
fuente
3

En general, desde el punto de vista de la organización: las personas van y vienen; El proyecto (o producto) necesita continuar evolucionando. Por lo tanto, en la mayoría de las organizaciones, generalmente hay un Abierto para todos los repositorios para mantener el código.

Por lo general, existen derechos de acceso, etc., para evitar el acceso no autorizado y desapercibido (para evitar el robo de código, etc.), pero la mayoría de los superiores no están realmente excluidos de esto. Dentro de una organización, uno debe confiar en las personas (lo suficiente) para que pueda confiar en ellas con código. Ocultar el código de los empleados (o colegas) es un gran factor de desmotivación.

En nuestra organización, incluso cuando las personas realmente no contribuyen al código, ¡tienen acceso directo al código que ayuda porque intentan combatir / solucionar los problemas en el campo (con propiedad) en lugar de devolver las cosas al desarrollador y dormirse!

Dipan Mehta
fuente
3
"En la mayoría de las organizaciones, generalmente hay un Abierto para todos los repositorios para mantener el código". Tengo mis dudas al respecto. ¿Puede citar algún dato para respaldar este reclamo? Además, ¿cómo se supone que no poder acceder al repositorio del proyecto Foo me desmotiva?
Péter Török
@ PéterTörök - Sospecho que lo que Dipan quiere decir es que la mayoría de las organizaciones de las que él / ella tiene experiencia, el código está abierto a todos. Eso coincidiría con mi propia experiencia de más de 20 años en varios tamaños de organización. Incluso mientras trabajaba en la industria de defensa había sorprendentemente poco código que solo estaba en la red segura.
Mark Booth
@ Mark, en ese sentido, estoy de acuerdo. En la mayoría de mis lugares de trabajo hasta ahora, no he visto mucho esfuerzo en diseñar una política de acceso para repositorios de SCM, por lo que a menudo son accesibles de facto para cualquiera que se acerque. Pero este es el resultado de la negligencia, no de la decisión consciente de nadie.
Péter Török