Monday, August 27, 2007

Porque migrar y programar en Linux?: Perspectiva de un Desarrollador

Soy usuario de Windows desde los 9 años, desarrollo aplicaciones para Windows desde los 17 años: ¿Porque usar y programar en Linux? Existen cientos de razones que la comunidad de Linux pero para mi la mas importante es la seguridad: Seguridad La seguridad de Windows es un tema muy extenso, pero puedo resumir el problema en dos factores: Windows esta basado(toma comportamiento) en MS-DOS, un sistema de 1 Usuario y Tarea concurrente que luego fue transformado de version en version en lo que hoy se conoce como Windows. Debido a que Microsoft mantiene todo el Legacy posible con sus versiones anteriores orientadas al usuario final, la seguridad en ambientes Multi-usuario no es prioridad de programacion o configuracion del Sistema Operativo Windows dejando su punto mas debil en su FileSystem(Fat, Fat32 o NTFS) hasta el punto que Windows no se puede operara conectado a internet sin un Antivirus Preinstalado, asi mismo los desarrolladores de sus aplicaciones como Internet Explorer, Outlook, Live Messenger tienen muy baja seguridad. Eso tiene muchas formas de verse: estrategia comercial, despreocupacion por la seguridad o la razon mas aceptada entre desarrolladores de linux: facilidad de uso al usuario final. Economia Microsoft utiliza un modelo de Licenciamiento y Ventas de Servicio de sus productos que le ha dado su exito economico y dado a su facilidad de uso es la primera opcion para grandes empresas con gran poder adquisitivo ya que existen muchos mas desarrolladores que realicen tareas comunes como aplicaciones de mandejo de datos cediendo conocimientos solidos en seguridad de sistemas. Sin embargo para mi ya no es una opcion vivir pagando mas de 3000 $ USD para poder "mantener" estacion de trabajo con la ultima version de Windows, Office, Visual Studio, SQL Server y Antivirus porque en Linux eso me cuesta 0$ con software libre. ¿Como como puedo yo realizar las mismas tareas cotidiandas de Oficina y Programacion de Windows en Linux? La facilidad es relativa y es un completo mito para los programadores de Windows que escuchan hablar de desarrollos en Linux y todo se debe a su desconocimiento, a continuacion presento una tabla comparativa entre los productos de desarrollo que actualmente ofrece Microsoft por unos miles de dolares y que estan disponibles en Linux completamente gratis. Del lado izquierdo presento el producto de Microsoft o alguna empresa que vende software propietario y del lado derecho el software libre: Microsoft Office 2003 -> OpenOffice 2 o Gnome Office Microsoft Visual Studio 2005 y .NET -> MonoDevelop y Mono Microsoft SQL Server 2005 -> PostgreSQL Server 8 Antivirus -> No es necesario. VMWare Workstation -> VirtualBox Nota: Aunque MySQL es la opcion mas famosa de bases de datos, no es tan estable en almacenamiento como PostgreSQL. Si eres como yo, programador en Tecnologia .NET, el proyecto Mono es tu mejor eleccion para implantar aplicaciones en Linux. Apoyado por el IDE MonoDevelop, Mono Framework posee las siguientes tecnologias: XSP: Permite crear y ejecutar aplicaciones ASP.NET 2.0 creadas con o sin Visual Studio sobre Apache Web Server. ADO.NET: Mono tiene una implementacion completa del namespace System.Data permitiendo conectarse con diferences conectores como el de PostgreSQL, MySQL, Microsoft SQL Server, SqlLite y Oracle todos ellos incluidos en los paquetes de instalacion de Mono. GTK#: Permite crear interfaces graficas que se ajustan al aspecto visual del sistema operativo basadas en las librerias multiplataforma GTK, ideal para aplicaciones de Escritorio en entorno Gnome. WindowsForms: Permite ejecutar aplicaciones creadas en las librerias WinForms para Windows sobre Linux. Recuerda que en las listas de correo de MonoHispano y su canal de chat IRC #mono-hispano en el servidor irc.gimp.org estamos muchos usuarios de habla hispana dispuesto a ayudarte y orientarte en la plataforma Mono.

17 comments:

Anonymous said...

Todo bien, pero las versiones actuales de Windows están basadas en la rama NT, que no tiene absolutamente nada que ver con DOS. No voy a salir a defender a Windows, menos siendo usuario de Linux, pero el explicar las fallas de seguridad diciendo que se debe a una inexistente herencia de DOS es falso.

Por el resto de los puntos, totalmente de acuerdo, y es bueno que la gente publique este tipo de testimonios.

Un saludo!

Johan Hernandez said...

Es cierto, pero Windows 3.1 era DOS con GUI y NT fue otra cosa desde NT5 donde salieron 2000,2003, XP y Vista.

Anonymous said...

Definitivamente hay que mantener el legacy, permitiendo funcionar las aplicaciones viejas en los sistemas operativos nuevos, para que la inversión que se hizo en ellas no se pierda. Opino que son concientes en no hacer todo de nuevo.

Que porcierto hay muchas aplicaciones que dejan de funcionar en las nuevas versiones de Windows. Muchos se quejan de que no hay "legacy" y otros de que hay "legacy".

En la parte economica, si ya no te da para pagar, no te estas sabiendo administrar. Cuando hagas un proyecto toma en cuenta tus costos, no solo cuanto queres ganar, tu reinversión. Aunque tengas linux tarde o temprano querras comprar nueva maquina, un monitor mas grande, libros para capacitarte, vacaciones, etc. Si no te esta dando el desarrollo de aplicaciones, aunque te vayas por las aplicaciones "gratuitas" tarde o temprano no te dara la bolsa. Valora mejor tu trabajo y a veces hay que dejar ir trabajos si lo que quieren, casi lo quieren "gratis".

Johan Hernandez said...

Es cierto lo del 'legacy', es bueno mantener compatibilidad binaria pero es absurdo mantener la compatibilidad con algo que no sirve(en el sentido mas grosero xD).

Por la parte economica, acabo de comprar una Nueva PC y le monte Ubuntu 64 Bits como Host y VMWare+VT para el Windows XP aunque ya lo descarte totalmente, teniendo Mono en Productivo no me hace falta ASP.NET y IIS.

Por la parte economica, no es cuestion de saber administrarse, es que desde el punto de vista gerencial a la hora de tu distribuir un producto con software propietario los costos de triplican y con el software libre(que no necesariamente es gratis) puedo distribuirlo sin costo alguno logrando asi precios mas competitivos al cliente. En mis planes esta construir un paquete de software, si estuviera en Windows me limitaria a crear paquetes MSI para descarga e instalacion pero con Linux no. En el momento que lo requiera puedo hacer un 'hijo' de alguna distribucion de Linux(probablemente sea Ubuntu o Debian) con mi software preinstalado. Cuantos millones de dolares te costaria hacer un contrato con Microsoft para hacer tu propio Windows?

Espero que trabajes en .NET, es una excelente tecnologia pero ni se te ocurra hacerle extensiones a Visual Studio Express que seas MVP, MVA o lo que sea, Microsoft sacara tu producto del mercado. ¿No es el software propietario algo restringido?

Por eso yo prefiero el software libre :)

FePa said...

Johan, completamente de acuerdo en todos y cada uno de los puntos (incluso los que defendite entre los comentarios), yo en realidad no me desempeño ya como desarrollador .NET ni como desarrollador de ningun tipo, pero recuerdo que una alternariva libre al MS "Frontpage" era Nvu / Kompozer que hasta s Nvu puede correr desde Windows y en un pendrive! Es más en mi antigua oficina se esta analizando la idea de migrar parcialmente a Linux y asi, reducir los infernales costos del maldito software propietario. Los softwares que mencionaste en la entrada son todos bastante conocidos (al menos por mi) aunuqe no he probado todavia el famoso Mono, sera cuestion de que el tiempo lo permita. Mis felicitaciones.

Federico

Anonymous said...

Hola a todos!

antes que nada felicitar por el artículo, está muy bien :)

todos los argumentos expuestos son de peso, hay puntos con los que discrepo a nivel histórico, pero bueno eso no es realmente importante, ni lo que se está tratando.

La realidad, es que la pequeña y mediana empresa esta descubriendo una cantidad de software enorme, por la que no tiene que pagar licencias de uso... y evidentemente existe ya una plataforma de desarrollo seria, robusta y eficaz dentro del software libre.

Señores el modelo de implatación está cambiando ;)

Anonymous said...

Yo estoy pensando en hacer una migración parecida, tambien programo en .Net y le estoy empezando a dar caña a Mono y Monodevelop; sí es verdad que echo muchas cosas en falta, las Enterprise Library, la SCSF,MCSF,... que te facilitaban mucho el trabajo. No sé haber como va...
Por cierto la web de MonoHispano esta caida no,porque no puedo acceder a ella.

Anonymous said...

Al Señor que mencionó "no te estas sabiendo administrar", NO confunda Libre con Gratuito mijo.

El software libre se puede cobrar.

Saludos.

Anonymous said...

Una aclaracion, Ruby on rails es un framework de desarrollo rapido para la web, Ruby es el lenguaje en el que esta escrito,

Saludos.

Johan Hernandez said...

XML al igual que Ruby on Rails no es un lenguage de programacion pero se usa para programar. Tal ves el titulo del Quiz no es el adecuado pero se entiende xD

Anonymous said...

Soy totalmente amateur y comienzo a programar asi que poco y nada se al respecto, pero no les parece que tambien se eliminaria la pirateria que cada vez crece mas? El soft libre puede frenar eso.
Damián

Anonymous said...

Una nota sobre Windows 3.1, para empezar este windows no era ni por error un sistema operativo, ya que se instalaba sobre maquinas con MS-DOS instado(este si era el S.O.), si no ni por error se instalaba.

En cierta forma solo servia para darle un aspecto grafico al MS-DOS.

Anonymous said...

De Hecho.... (se me paso :P), el Windows 3.1 solo era el GUI de MS-DOS y nada mas...

Hasta que aparecio Windows 95 ese si era un S.O. , y si.. del Windows 2k, Xp y anexas son hijos de NT.

Anonymous said...

Buenos Dias. Una consulta, que opciones tengo para desarrollar aplicaciones en XUbuntu?. Por un lado vi las XFCE Foundation classes, pero no vi como acceder a datos. Por otro, vi que esta Mono con Novell como Sponsor con .Net y MS haciendo alianzas con Novell.
Que framework puedo usar para aplicaciones cliente/servidor?
Desde ya M.GRACIAS por la info.

Anonymous said...

Holas, está interesante el artículo, pero creo que no estoy muy de acuerdo con el...

Empiezo con la parte de la seguridad: como algunos ya han dicho, windows server 2003 no viene de MS-DOS, asi que no hay mucho que hablar sobre ello y mejor me remito a los aspectos importantes de la seguridad.

Una de las practicas mas comunes al tratar la seguridad de diferentes sistemas operativos es la de comparar la cantidad de vulnerabilidades y virus, pero eso es un error gravisimo para un verdadero administrador. Al momento de montar un servidor, lo primero es aminorar la llamada superficie de ataque para luego monitorear constantemente los informes de vulnerabilidad que puedan afectar a los servicios activos y aplicar medidas preventivas.

Desde windows server 2003, la instalacion por defecto solo activa los servicios mas importantes del sistema operativo y deja una superficie de ataque muy pequeña, cosa que no hacen todas las instalaciones de Linux. Por ello, se podria decir que la instalación de windows es mas segura desde un principio, pero deberiamos tomar en cuenta la hipotesis de que un servidor lo deberia manejar un verdadero administrador, que sepa bajar la superficie de ataque de linux, asi que las cosas, en teoría, deberian quedar igualadas.

El problema viene cuando hablamos de la segunda parte del proceso. Dificilmente se puede encontrar para linux una red de informes y actualizaciones tan avanzada como la de windows update, incluso tienden a tardar menos los parches de windows. Algunos podria decir que las redes de informes de seguridad suplen esa carencia, pero esas redes son igualmente valederas para buscar errores de windows, asi que windows tendria esas paginas mas windows update. Para mayor colmo, a las empresas que tienen muchas lisencias de windows, Microsoft les provee de un servidor de actualizaciones que se encarga de actualizar con parches de seguridad a toda la red.

Ademas, hay un ejemplo que me gusta mucho: Microsoft SQL Server 2005. Tal vez las versiones anteriores de ese manejador de bases de datos tenian mas huecos de seguridad que pelos un mono, pero los invito a que busquen por internet alguna vulnerabilidad de la version 2005 a ver si la van a encontrar...

Parte economica:

Bueno, ahora con la otra parte del articulo. Hay que admitir que Windows no es barato y que Linux se puede copiar en un CD sin problemas... Pero cuando hablamos de servidores web, creo que hay algo que deberían tomar en cuenta:

Linux es gratis, pero el soporte no, y cuando van a montar un servidor grande (no paginas para una tienda ni nada de eso, servidores "machos") todo el mundo quiere soporte, de alguna u otra manera. Si no contratan soporte, el cliente les va a hechar la culpa de cualquier fallo a ustedes, cosa que es mejor evitar :P.

Ahora, muchos saben que eso no es gratis y los demas, seguro diran que no les digo nada nuevo, pero ahora es que viene el detalle: una lisencia de windows es de por vida, el soporte de linux es por año. Si hacen una pequeña investigacion de cuanto cuesta el soporte de una distribucion linux por un año y de windows y despues sacan el calculo de que, por poner un ejemplo, sale un windows cada 3 años, el ahorro de linux como que se desvanece.

Con las herramientas la cosa si que le estaba pegando mas duro a windows, pero las cosas han estado cambiando. Yo programo en windows y no gasto en herramientas de programación, uso visual estudio express edition y NUNCA se me ha quedado corto para hacer nada; no gasto en bases de datos, uso SQL server express; No uso antivirus, mas bien me molestan porque bajan el rendimiento... Y mas aun, windows tambien tiene opciones de software libre, asi que no veo necesidad de usar linux para poder disfrutarlo.

En definitiva, la defensa de Windows y Linux se ha vuelto una cosa religiosa, pero creo que se deberia revisar el asunto como es. Tal vez yo lo veo desde afuera, porque soy programador desde los 14 años, pero me sacaron del gremio a los 19 y ahora soy estudiante de comunicacion social, programando solo en mi cuarto sin que mucha gente sepa, je je je...

Bueno, creo que el comentario quedo muy largo, espero que alguien lo lea. Hasta luego =)

Johan Hernandez said...

Gracias por tu comentario Luis Carlos. Con respecto a los costos Windows vs Linux hablas desde el punto de vista de usuario final o desarrollador? Normalmente el cliente preferiría un financiamiento antes de un solo pago y eso es exactamente lo que es Linux. Si segun tu el primer año tengo que pagar el 32% del valor de una licencia de Windows 2003 Enterprise o DataCenter Edition entonces ya el cliente esta ganando. Ademas, si hablamos de que Microsoft te da opciones de compra especializadas con descuento a travez de el Programa 'Microsoft Partner', alli no viene necesariamente todo el software que necesitas. Es decir, que tienes RENOVACION ANUAL DEL PROGRAMA y COMPRA DE PRODUCTOS ADICIONALES, sin duda Microsoft es realmente costoso y es una soga que Desarrolladores y Ahora Emprendedores como yo no se pueden hechar al cuello.

Hablando desde el punto de vista del desarrollador no puedo criticar el hecho de que uses SQL 2005 y Visual Studio Express(que no te sirven para desarrollos destinados a servidores "machos") pero por ejemplo SQL Express tiene limitaciones y Visual Studio Express tambien, por ejemplo: En Visual Studio Express no puedes utilizar add-ons. Asi que siempre tendras que elejir entre ajustarte a lo que te da Microsoft Express Editions, Comprar su Costoso Visual Studio Professional/Team System para 'ser mas productivo', desarrollar sin Visual Studio(ahora te pregunto: cual es la ventaja de .NET sin VS?) o simplemente no alcanzar tu objetivo, tal vez por eso es que siempre veras muchos mas Desarrolladores en plataforma Microsoft que nunca prosperaran y siempre seran empleados y nunca se independizaran porque es muy costoso iniciar un negocio con Productos Propietarios(es solo un razonamiento que se me vino a la cabeza, no tengo pruebas de esto). En cambio con Software Libre es mucho mas economico iniciar proyectos.

Usar Windows sin antivirus es una de las peores cosas que se te pueden ocurrir, probablemente seas uno mas de los millones de PC-Windows del mundo que son 'ZOMBIES' de hackrs y crackers que esperan para atacar un objetivo usando tu PC y direccion IP, sin contar los Spyware, Malware y Viruses que se autoejecutan den tu PC por todo tipo de Medios. Es una realidad bastante triste.

Por ultimo quiero comentarte que nunca podras comparar los conocimientos de un Administrador Linux a uno de Windows, este ultimo esta acostumbrado a usar un Wizard que esta especialmente hecho por Microsoft para dejar todo 'Listo para trabajar' lo cual significa que tienes mas caracteristicas del sistema activadas que tu no conoces y lo mas seguro es que no tengas el conocimiento necesario para manejar porque un Wizard siempre te ha hecho el trabajo facil. Creeme que hacer click derecho en una carpeta de IIS y crear una Aplicacion Web ASP.NET es mucho mas facil que modificar una seccion de configuracion de Apache, pero mientras aprendes a modificar la seccion creeme que has aprendido 5 cosas nuevas y para mi el conocimiento que te hace un Professional es algo que no puedo cambiar por nada, ni siquiera por un Windows Gratis.

Anonymous said...

Hola,

Yo actualmente programo en un lenguaje llamado Clarion.
Estoy viendo de cambiar y estoy entre java y c#. O sea, J2ee vs .net.

Cual es mas recomendable y porque?
Si tu Johan programas para linux, porque no usas java?
Como veo utilizas .net y mono. El proyecto mono tiene futuro o quedara tirado por ahi en un tiempo. Tengo entendido que no tienen implementado el .net 3.0 y 3.5, no?

Bueno, agradezco cualquier orientacion que puedan darme.

Claudio desde Argentina.