¿Cuando es apropiado usar closed source?

Es una pregunta sin afán de trollear ni nada.

Para empezar comenzaré diciendo que apoyo el open source, no hay necesidad de que me convenzan de sus beneficios.

La pregunta va enfocada a entender más sobre cuando SI es recomendable/necesario/etc utilizar o hacer software cerrado ( incluso claro, utilizando componentes open source ).

Algunos ejemplos de organizaciones y/o personas que abogan por el open source abiertamente pero que tienen productos con código no público:

- Google : su engine no es open source ( aunque tienen muchísimos productos que sí lo son )
- StackOverflow: El engine de so no es open source ( aunque alguna vez se lo plantearon )

- @domix @chochosmx ( Como ya son codestars ya se pueden tomar de referencia ) Trabajan en productos ( clickOnero y como se llame el de chochos ) que son código cerrado, pero apoyan habiertamente el uso del open source ( vease la 6ta edición de ViveCódigo )

Y así hay muchísimos ejemplos de orgs/personas que a pesar de abogar por el uso del open source construyen/usan closed source y no es una contradicción existen buenas razones para usarlos/hacerlos así.

Yo por ejemplo uso aplicaciones/servidores de código propietario ( Websphere, Weblogic otros ) y aunque muchas veces desearía poder moverle algo que le hace falta, sinceramente a veces me falta nivel y/o tiempo y/o ambos.

Así que: ¿cuando es apropiado usar closed source?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jvan

Pues depende de las

Pues depende de las perspectivas de cada uno, aca por ejemplo el cliente prefiere usar el closed source debido a que de alguna manera le garantiza: 1) continuidad del proyecto(aplicación). 2) soporte. 3) documentación.

Que no significa que el open source no pueda llegar a tener lo mismo, sin embargo, en el closed source hay una empresa "formal" que te garantiza esto.

Cuando es apropiado o no? yo creo que usar tanto open source como closed source es apropiado siempre, pero insisto depende de las perspectivas del cliente.

Imagen de ezamudio

Un caso obvio

Considero que mi caso es algo obvio (al menos para mi) y sospecho que el caso de Domix es muy similar:

Si tu software es parte de tu core business, es decir, tu negocio depende de ese software, pues no lo abras. No lo quieres compartir con nadie, de modo que déjalo como software cerrado, privado, protegido, etc.

Si dentro de ese software encuentras partes que no son esenciales para el negocio, podrías considerar abrirlas (como abrí jAlarms y j8583, pues ambos proyectos emanaron de mi software cerrado propietario privado).

No me consta, pero sospecho que este modelo es el que han venido siguiendo Google, Twitter, Facebook, etc etc: FB por ejemplo hizo un mecanismo de almacenamiento distribuidor tipo NoSQL que terminó donando a Apache, bajo el nombre de Cassandra. Igual tienen un compilador de PHP que no sé si ya liberaron o nomás lo andaban presumiendo. Google libera software a cada rato, cosas tipo GWT, protocol buffers, etc que son cosas que ellos mismos usan pero por alguna razón deciden que es mejor liberarlo que tenerlo en secreto. Ahí entran otros factores porque es muy distinto ser Google que ser FulanoSoft S. A. de C. V. pero bueno, el resultado es el mismo: una empresa con software cerrado, propietario y privado del cual depende su core business pero que libera software cuando la ocasión lo amerita.

Eso sí, tienes que tener mucho cuidado con el software libre que integres a tu software cerrado propietario privado; revisa muy bien las licencias. Cosas con licencias LGPL, BSD y ASL por ejemplo no tienes problema. Si integras algo con GPL, pues no tienes un problema inmediato, porque GPL te obliga a que tu software se vuelva GPL, pero GPL no te obliga a distribuir tu software; únicamente te obliga a que si lo distribuyes, incluyas fuentes. Como tu software es parte de tu negocio pues no lo piensas distribuir a nadie, así que no importa (en ese momento) que sea GPL. La bronca viene después si de repente alguien te quiere pagar una lanota por tu software y resulta que es GPL, o lo quiere licenciar y de alguna forma se dan cuenta que es GPL; si les vas a dar una copia del software (porque lo vas a instalar en sus servidores por ejemplo), legalmente estarías obligado por la licencia a darles los fuentes. Ahí le puedes todavía dar la vuelta con una licencia de uso de tu software donde te van a pagar una lana mensual pero TU vas a operarlo y hospedarlo y todo, así que no lo estás distribuyendo al público, ni siquiera a alguien fuera de tu organización.

Pero lo mejor es ser derechos y si estás haciendo software cerrado pues no le metas nada GPL, busca alternativas o crea la tuya con una licencia que tú mismo puedas usar.

@ezamudio +1 De acuerdísimo.

@ezamudio +1 De acuerdísimo. En el caso de stackoverflow cuando surgió esa idea, una de las personas que esta en el "board of advisors" o algo así se llama, les dijo Nel, no lo abran, la razón, exactamente la que dices, ES TU COOOORE!! es tu comida mano. La persona es ni más ni menos que Miguel de Icaza que sobra decirlo apoya el open source muchísimo.

En el caso de Domix no es así ( o al menos el mismo no lo dijo así ) en su caso la respuesta es similar a la de @Jvan depende de tu cliente. Y claro quizá tu cliente lo pida así con plana conciencia ( el mejor de los casos ) o lo hace por ignorancia ( quizá cree que el open source es comunista ? de que los hay los hay ).

Que otra razón hay para hacer / usar closed source

Imagen de ezamudio

usar...

Yo considero que hay realmente muy pocas razones válidas para usar closed source. "Porque el cliente lo pide" no es una razón válida. Vamos a hacer todo lo que el cliente pida? No puede haber una discusión racional con el cliente para ver por qué quiere usar software propietario? Veamos los puntos de Jvan:

1. Continuidad del proyecto (aplicación), porque hay una empresa muy formal que lo respalda.

Ajá. Dile eso a todos los que usaban productos de Borland. Todos los que hoy en día tienen una aplicación hecha en Delphi y no saben ni qué hacer para poder migrarla a otra cosa. O a los que tenían software jalando en Mac OS 9 y tuvieron que ponerse en friega a actualizar para que funcionara en Mac OS X (sí, había una ruta de transición, pero pregúntale a Adobe si fue muy fácil reescribir Photoshop para que funcionara en OS X). O a todos los que apostaron por VB6 y ahora tienen que pasar a .NET (sí, MS puso una ruta de transición pero eso básicamente le sirve a los que están a la mitad de un proyecto o tienen soporte contínuo de quien les haya desarrollado sus apps en VB6; si tienen algo funcionando por años y ya no saben ni quién hizo el desarrollo, quién lo va a migrar?). O a los que tienen todo su repositorio de código en Visual Source Safe. Etc, etc, etc. Hay muchos ejemplos.

Las empresas quiebran, o deciden descontinuar un producto porque ya les sale más caro seguirlo manteniendo que simplemente mandar al diablo el producto y a todos los clientes que lo usen. La verdad es muy dura: cuando usas software de alguien, estás a su merced, en mayor o menor grado. Cuando usas software propietario, estás 100% a merced del fabricante de ese software. Por qué? Pues porque si la empresa quiebra o decide descontinuar el producto, te aguantas, ya no hay nadie en el mundo que le pueda seguir dando actualizaciones, porque nadie tiene los fuentes. Si deciden que la siguiente versión va a costar diez veces más cara porque quieren que sus clientes sean puras empresas grandes bien acá, y tú eres Comercializadora Fulana SA de CV, pues a ver cómo le haces para pagarles, o te quedas en esa versión, que van a darle soporte por 3 años más y luego se desentienden. Y si todos tus datos están en ese software, de cierta forma te tienen secuestrada tu info y tu negocio: o pagas o truenas.

2. Soporte

Con el software libre pues tal vez no tengas soporte directo del autor porque es un cuate que nomás hizo el software y luego decidió dedicarse a la orfebrería y no quiere saber más de eso. Pero tienes los fuentes. Y no eres el único programador en el mundo. Y seguramente no eres el único usuario de ese software (si lo eres, pues no supiste escoger qué software usar y eso no es tanto culpa de que el software sea libre o no sino que no viste esos problemas a la hora de elegir lo que vas a usar). Así que le puedes pagar a alguien más por corregirlo, mejorarlo, actualizarlo, mantenerlo, etc. Hay empresas dedicadas a dar soporte a productos de software libre como PostgreSQL, Grails, Spring, etc etc etc. No estás amarrado a los caprichos del fabricante/autor porque tienes acceso a los fuentes.

Muchos confunden libre con gratis. Supongamos que por ejemplo decides usar j8583 en una aplicación tuya. Es una biblioteca de software que yo hice, y la puedes bajar gratis y utilizarla, leer la documentación, implementarla, etc. Si tienes dudas, puedes postear aquí en el foro o preferentemente en la página oficial, etc. Pero no esperes que te conteste de inmediato; no me lo puedes exigir, porque mi tiempo no es gratis. Si te urge mucho y necesitas moverle algo al software porque cubre el 90% de tu necesidad pero hay un 10% que no cubre, tienes dos opciones: o le mueves tú, o me pagas por mi tiempo para que yo le ponga lo que falta. Es un servicio y no es gratuito. Pero si lo que te quiero cobrar te parece exorbitante, no es el fin del mundo; puedes pedirle a alguien más que haga los cambios. Eso sí, por la licencia LGPL, si le haces cambios pues debes enviarlos al autor para que se puedan integrar. Ahora, tal vez esos cambios no sirven tal cual para el software para el público, solamente es algo que te sirve a ti, y decido no integrarlos, o integrar una versión ligeramente distinta.

Aquí vas a decir "ah si qué chido, le pagué a un tipo para que le hiciera unos cambios y ahora tu te los quedas sin pagar nada?" y la respuesta es: SI, igual que tú usas un software que cubre una gran parte de una necesidad que tienes, y no le tuviste que pagar nada a nadie. Porque lo que le pagaste a ese programador fue sólo para completar algo, no hacerlo desde cero. Y si me mandas los cambios y los integro, entonces las siguientes versiones de ese software, tendrán los cambios que hiciste. Sí, todo mundo se podrá beneficiar y tú fuiste el único que pagó. Ahora piensa que otra persona puede también haberme pagado a mí o a alguien más por corregir algo o agregarle más cosas y eso se integrará a la siguiente versión, junto con lo que tú contribuiste, y ahora sin pagar nada, tendrás acceso a lo que tú agregaste, más lo que otras personas agregaron. Cuál es el problema? Realmente crees mejor tener que hacer todo tú con tal de no darle un centavo a un programador y no darme una sola línea de código a cambio de todo lo que pudiste ahorrarte usando mi software, y poder continuar beneficiándote de dicho software en el futuro cuando yo o alguien más le haga todavía otras mejoras?

Y si nos vamos a otros productos más grandes y/o con muchos más usuarios, el soporte lo puedes obtener gratis, en foros de comunidades de programadores que usan todo ese software. Pones tu duda y alguien te la contesta. Qué más soporte quieres? Sobre todo cuando la respuesta puede ser "ah esa versión tiene una bronca, pero modifica la línea X de tal archivo y recompila y con eso ya se arregla, en lo que sale la siguiente" o "eso ya está arreglado en el repositorio, simplemente baja los fuentes directo del repositorio y no tendrás ese problema".

3. Documentación

Dame un ejemplo de software libre sin documentación. Yo te doy 100 ejemplos de software libre bien documentado. Empezando por el que yo mismo hago. Javadoc, guías de uso, ejemplos con código. Foros de ayuda. Y si eso no es suficiente, puedes ver los malditos fuentes para entender cómo funciona. Otros ejemplos? Gradle, Grails, Groovy, Spring, git, Subversion, Tapestry, Struts, Hibernate, Scala, OpenOffice, Thunderbird, Blender, Gimp, etc. Eso de la documentación es mayormente un mito esparcido por empresas que se dedican al software propietario y no les queda más que estar esparciendo mentiras acerca del software libre. Afortunadamente cada vez son menos, porque incluso empresas que se dedican al software propietario (como Oracle y Apple) tienen varios productos de software libre o al menos open source.

Entonces: razones para usar closed source, son cada vez menos. Quedan "no hay una alternativa open source" y "necesito a quién echarle la culpa si no funciona, y poder reclamarle porque le di una lanota" (y esta última se vale con software libre y open source! si me pagas a mí por instalarte linux y open office en todas las compus de tu oficina, y echar andar un servidor de correo y de web etc y todo eso lo hago con software libre, y luego tienes broncas, pues me reclamas a mi! a mi me pagaste, y lo tengo que arreglar como yo pueda, no es tu bronca).

Ahora para terminar: razones para hacer software propietario: Cuando tu negocio depende del software que vas a hacer. Cuando ese software genuinamente te da una ventaja competitiva. Pero en estos casos, es software que sólo tu empresa utiliza, no es algo que distribuyas, ni lo vendes siquiera, a menos que ya estés vendiendo tu empresa entera.

Imagen de Jvan

Estoy completamente de

Estoy completamente de acuerdo contigo ezamudio, lo complicado es cuando el cliente se cierra solo a lo que comenté, hemos propuesto soluciones de open source aclarandoles TODOS los puntos que tu comentas y aún así prefieren irse por el closed source por las "razones" que comenté. Y eso seguirá siendo lo mismo de siempre lamentablemente.

Saludos

Imagen de neko069

Yo creo que sería válido,

Yo creo que sería válido, como en el caso ( y es el primer ejemplo que me viene a la mente ) de que no haya equivalente en open source de herramientas que se necesiten, como el caso de JRebel, aclaro, es un ejemplo, e igual no da un plus directamente al cliente, si no al equipo de desarrollo, pero bueno, es lo primero que se me ocurre.
En parte coincido con @Jvan en el caso de las bases de datos, aún siendo tan buena, PostgreSQL no esta a la "altura" del gusto de los clientes, en todo se usa Oracle, por ejemplo, y en general no he visto aplicaciones bancarias con bases de datos libres, entonces puede aplicar que, el respaldo de una empresa como Oracle, dé la sensación de que su producto sea más robusto y confiable
Es lo primero que me viene a la cabeza, pero bueno, a partir de aquí igual salen otros ejemplos u opiniones que puedan refutar lo que comento.

Imagen de greeneyed

El codigo cerrado (privativo)...

...tiene sentido cuando se usa para dar un servicio pero al cliente no se le distribuye el software. Si el cliente no usa más que el servicio, no necesita el fuente para documentarse, ni para arreglar nada. Y no tienes problemas con usar codigo abierto junto con el tuyo a no ser que esten bajo licencia AGPL y sean lo que usas para ofrecer el servicio.

En caso de que distribuyas el software, lo más "justo" normalmente es usar codigo abierto, por las razones por las que menciona ezamudio, pero que no hay que confundir con software libre. El software libre es más "justo" socialmente, pero sin un modelo de negocio adecuado detrás, no llega muy lejos.