En Los desarrolladores y las faltas de ortografía exponía un hecho que podríamos resumir como que en el desarrollo de software, los detalles son fundamentales.
No importa que tengas el mejor programa del mundo, si luego es tan difícil de usar que nadie puede sacarle partido. Si no se usa, no es útil, y si no es útil, poco importa que sea el mejor del mundo. O sea, que el programador, además de ser bueno, debe parecerlo.
Si un texto visible para el público está plagado de faltas de ortografía, ¿cómo puedes estar seguro que su código no es igual de malo, y está lleno de las mismas inconsistencias?
El caso de hoy, es parecido. Si a nivel de software, no somos capaces de comunicar con precisión y veracidad lo que pretendemos hacer, es obvio que la gente acabe pensando que nuestro programa, tampoco será preciso ni veraz.
Veamos esta frase: Nuestra misión en la sección de SISTEMAS GRATIS es regalar, preservar, proteger y promover la libertad de usar, estudiar, copiar, modificar programas de ordenador, así como defender los derechos de los usuarios de software libre, pero queda totalmente prohibido usar este software con fines económicos, por ejemplo vender, así como también publicar esto en otras paginas web, si lo hace las consecuencias podría ser severas por parte de las autoridades correspondientes.
No es necesario leerla más de una vez para darnos cuenta de que cojea. Primero, se repite lo que ya vimos con las faltas de ortografía. «Las consecuencias podrían ser severas», es un plural, y no «podría ser severas» como afirman. Un nimio detalle, que ya implica poco cuidado, en este caso en la redacción. Pero si vamos un poco más allá, analizando su contenido, nos damos cuenta que cuando decimos que defendemos los derechos de los usuarios y el software libre, y en la frase siguiente imponemos limitaciones a nuestro propio software, no estamos defendiendo el software libre. Estamos haciendo demagogia.
No hay más que comenzar con lo que Wikipedia entiende por Software Libre:
Software libre refiere el conjunto de software (programa informático) que por elección manifiesta de su autor, puede ser copiado, estudiado, modificado, utilizado libremente con cualquier fin y redistribuido con o sin cambios o mejoras
El software libre, por concepto, pretende dar al usuario la máxima libertad ante el software, incluso si ello implica que lo reempaquete tal cual, y lo venda. Esa es una de las libertades.
Llevo décadas creando software, tanto profesionalmente como por afición. Mucho de este software, es gratuito, otra parte incluso opensource, y en la última década, además libre.
Es necesario tener cierta experiencia para familiarizarse con esos conceptos, pero explicados con palabras llanas, son muy fáciles de comprender.
El software gratuito, gratis o Freeware es aquel que no requiere que paguemos nada por su uso legal. Su creador lo pone a nuestra disposición desinteresadamente para que lo usemos tal cual. No espera ninguna compensación monetaria al respecto.
El software open source, o de código abierto, pone a disposición de los usuarios que lo deseen el código fuente completo. Esto es útil para poder revisar lo bien o mal programado que está. En principio ser abierto no quiere decir que se nos autorice a modificarlo de manera expresa, a priori simplemente tendremos acceso a ese código, y eventualmente podríamos recompilarlo, pero no podríamos alterarlo, ni siquiera para nuestros usos personales. Open source no es incompatible con comercial, es decir, un programa de código abierto, puede ser de pago, no tiene porque ser gratuito como hemos visto antes. Puede que el propietario, venda el programa con su código fuente. No obstante, es open source, porque tenemos acceso a ese código fuente.
Por último el software libre, o free software entendido en el contexto de libertad y no de precio es el cual desarticula todas las restricciones sobre el mismo. Es decir, nos lo pone a disposición para todo lo que queramos hacer con él, por tanto el autor, renuncia explícitamente a muchos de sus derechos en cuanto a propiedad intelectual y explotación.
Como podemos ver, si se ponen restricciones a su uso, ya no es libre. Podemos decir que es bastante libre, parcialmente libre o que como en Creative Commons, nos reservamos solamente algunos derechos. Pero no es libre.
muy bien la diferencia que haces, y muy acertada, respecto a freeware y freesoftware, muchas veces se tiende a confundir, pero en efecto poco tienen que ver.
La gente que hace su trabajo open source y además lo ofrece libre tiene toda mi admiración, hacer algo que a veces te lleva muchísimo tiempo de pruebas y testeos, para que venga cualquiera y lo distribuya e incluso se apropie todos los méritos, es algo que no todo el mundo es capaz de hacer.
En mi caso todas mis aplicaciones no tienen mucho misterio, y solamente viéndolas y viendo cómo funcionan bajándose el ejecutable, cualquier niño con medianos conocimientos de programación podría hacerlas sin necesidad de ningún código fuente. También es verdad que quieres hacen proyectos muy grandes (o bastante grandes) usan el open source para que otros puedan colaborar y añadirle características, pero si al principio esa es una buena idea, no tardan en irse cada uno por su lado y haciendo sus propias «derivaciones» (versiones) de la aplicación inicial (ahí tenemos por ejemplo a Linux y todas sus rocambolescas distribuciones).
Por eso pienso que el mejor concepto es el que Google tiene por ejemplo con Chrome, en donde tienen desarrolladores específicos para ese proyecto, y luego cada uno puede hacer el suyo propio, mientras ellos mantienen en nómina su equipo de desarrollo para su navegador oficial. Eso es lo mejor.
No te quites méritos bianamaran, cualquier aplicación incluso aunque aparentemente sea sencilla, tiene su intrínguilis. Hay muchas formas de hacer las cosas, sólo unas de ellas son las mejores, y sólo una es óptima.
Tu código es feo, lo admito, pero tus aplicaciones son compactas, van rápido y no dan errores raros. Se nota que inviertes tiempo probándolas y puliéndolas.
Creo que eres demasiado generoso, Guti, y te dejas llevar por la amistad en lugar de por la realidad 😀 Pero la verdad es que mis aplicaciones solo las entiendo yo (quizá por eso soy el único que las usa :D), pero un aspecto importante de la programación es ese, precisamente, el de que puedas hacer para ti mismo cosas que no están en el mercado (o están pagándolas, o peores, o más pesadas, o con opciones que no quieres ni necesitas). Esa es una de las grandes ventajas de la programación y de las RADs que, por desgracia, se está obviando con los smartphones, en donde lo que se persigue solamente es el vil metal y rápido a subirlas a los markets.
Quizá -digo «quizá»- deberíamos volver un poco a lo que se hacía antes: tu ordenador, y tu intérprete de Basic, para hacerte tus propias cosillas. Ni eso tan simple que antes venía dentro -y era una parte esencial- de los ordenadores, tenemos hoy en los smartphones. Claro, mejor tirar de la tienda, como con windows 10: el vínculo ahí siempre presente, que se vea bien dónde tienes que irte a gastar los cuartos, como si fuera imposible hacer una aplicación ahora que sí era posible antes con ordenadores peores, menos memoria, y RADs muchísimo más limitadas. Y la gente paga por ello, lo mismo que decían que no pagarían por ver la televisión, y ahí tienes cientos de cadenas de pago (y cada vez más) y millones de televidentes dispuestos a dejar de comer por pagar para verlas.
No les interesa ni a los sistemas operativos ni a las casas de software de hoy que uno se haga sus propias aplicaciones, para qué, pudiendo pagarlas a precio de oro.
Yo no diría tanto… hoy en día es más fácil que nunca encontrar entornos de programación de primera línea en ediciones «sin costo», vamos a dejarlo así. En la «era del DOS» era muy difícil, al menos en España, conseguir un compilador/intérprete de algún lenguaje de programación, estamos hablando de la era pre-internet o como mucho de sus inicios.
Hace más de 10 años, con la llegada de la ADSL y su popularidad con unos precios que, sin ser económicos, si fueron lo suficientemente asequibles como para que se popularizara el acceso a internet. Y con el acceso a internet, obtener los entornos de programación se hizo cada vez más trivial.
El último ladrillo era el acceso de los usuarios a los programas, y mediante SourceForge, GitHub y los markets eso ya es también trivial.
El éxito de los markets es que dan acceso trivial a una infinidad de aplicaciones, muchas de ellas gratuitas o de bajo coste que están desarrolladas por una miriada de programadores y/o empresas.
Al menos así lo veo yo.
tambien habia miriadas de programadores antes, eso no lo invento el market. Por otro lado, al market no entra todo el mundo, y de hecho hay gente que no prefiere hacerlo.
Sobre la disponibilidad es cierto y tienes mucha razon de que hay muchas posibilidades, pero a ver quien es el listo que descarga uno de esos sdks y tiene el «pepinazo» de aparato que hay que tener para programar con. Antes era el propio ordenador quien te venia con su interprete, compilador y hasta depurador, yo no he visto ningun smartphone que venga hoy con eso.
No obstante no me parece mal. Quien no quiera entrar en ese circulo tiene alternativas, que pille un movil barato.
En cualquier caso creo que hemos perdido mucho, Maemo era una gran alternativa y mirad donde quedo. Ahora android o ios, tanto monta monta tanto.
La época de los clubs de ordenadores que desgraciadamente no cuajó aquí me hubiera encantado bianamaran. Usuarios que desarrollaban sus propias herramientas para solventar sus necesidades y los compartían. Como tu haces.
Lo que nos falta es un lenguaje de programación relativamente potente y muy sencillo. Como era el BASIC. Lo más parecido que se me ocurre es AutoIt, pero no llega a ese nivel de sencillez.
Estoy de acuerdo contigo
Pienso que es consecuencia de la complejidad creciente. Antes con el manual que venía con el Spectrum te bastaba para empezar a programar. Ahora necesitas si seguimos tu ejemplo un ordenador, un móvil, un SDK, un IDE, … Demasiadas cosas que en particular en el desarrollo móvil no están integradas. Algo mejor resuelto en iOS, pero que dista mucho de estar integrado.
En efecto, es ahí donde quiero llegar. Ya hablé la otra vez en mi blog sobre las revistas que te traían los códigos para hacerte tus propios juegos, obviamente no estaba al alcance de todos. Lo que me apena es que hoy que sí podria estar (un smartphone de gama básica es relativamente asequible), no se ofrece al usuario, ¿por qué? Porque prefieren que se vayan a sus porquerias de markets. Es que los odio. Y si fuera por seguridad pues vale, pero es que encima en los markets encuentras burradas de todo tipo, solo para que el fabricante se lleve su parte del pastel. Es sacar pasta por todo, y eso no favorece el que se creen y distribuyan herramientas gratuitas.
Hoy tienes plataformas como AppVeyor o incluso Visual Studio Team Services de MS que te ofrecen la posibilidad de compilar tus proyectos sin instalar nada en tu equipo. Unido a los repositorios de código como GitHub ofrece herramientas que hace 20 años no teníamos.
La misma popularidad de internet facilita la auto-distribución de programas. Y tanto SourceForge, GitHub y otras páginas especializadas ofrecen una manera fácil y gratuita de obtener alojamiento para facilitar dicha distribución. Los markets hacen la instalación de las aplicaciones más fácil de cara al usuario final, y podríamos decir que ese el el mínimo que hacen, algunos hacen algunos controles (con censura incluida como Apple).
Pero en estos 20 ó 30 años también ha cambiado mucho el usuario «medio». Ahora hay indiscutiblemente muchísimos más usuarios que antes. Para empezar, sólo en España el parque de ordenadores por hogar se ha incrementado de forma bestial. Además ahora los móviles son miniordenadores, comparados con aquel mítico Nokia 3410 la versatilidad sería comparable a un PC contra una calculadora. Y no nos olvidemos, raro es el adulto que no tiene un smartphone, y muchos adolescentes ya tienen uno.
Los propios dispositivos computacionales han cambiado radicalmente también, la usabilidad ha aumentado, ahora es mucho más fácil hacer las tareas «ordinarias» en nuestros ordenadores que hace 20 años.
Por lo tanto, el usuario medio de hace 20 años, que debía aprender si o si cosas «avanzadas» para poder hacer las tareas «cotidianas», hoy en día no necesita nada de eso. Hemos pasado de usuarios conscientes de la maquina que tenían entre manos a usuarios y punto. Manejan los ordenadores como si de un televisor se tratara, y no uno de los de ahora, que os veo venir.
Y como es normal, todos los avances en UI y hardware han hecho que los SDK sean imprescindibles, pero no se ha avanzado tanto en una curva de aprendizaje menos dura.
Antes con menos de un giga te podías instalar un VB y hacerte algunos programitas. Hoy necesitas instalarte un monstruo de 20Gb… ahí hay algo que no encaja. AutoIt es una cosa maravillosa, su lenguaje similar a VB hace que su curva de aprendizaje sea muy llevadera. Sin embargo en cuanto se necesita acceso a funciones de bajo nivel del SO…
Además ahora mismo las aplicaciones web están tomando mucha relevancia, porque aunque tengas que aprender varios Frameworks (HTML, jQuery, CSS, el lenguaje backend que elijas…) al final te «olvidas» del dispositivo del usuario. Son muchas las aplicaciones de escritorio que se pueden portar a webapps.
El entorno de trabajo para comenzar a programar para la web es tan fácil como instalarte un XAMPP y un Notepad++ o similar. Si hace 20 años era fácil instalarse un IDE para programar en escritorio y complicado configurarse un servidor web local, hoy en día es justo al revés. Si añadimos a la ecuación que programar para la web hoy es más vistoso y «molón» que hacerlo para escritorio…
Imagino que es lo que ocurre cuando cualquier cosa de democratiza o populariza bianamaran. Más gente tiene acceso a ella, y eso es lo que todos hemos querido siempre; pero en cambio es mucho más complicado de manejar internamente.
Si volvemos la vista atrás a los programadores de los 60 y los 70. Por mi madre indirectamente conocí a alguno, su trabajo era super-sencillo con lo que sabemos ahora. El problema es que no tenían ni esos conocimientos, ni las herramientas que ahora tenemos.
Me gusta mucho ese punto de vista Fernando. Así es. Antes, incluso para rellenar una hora de cálculo tenías que saber donde vendían 1-2-3, leer sus libros en papel, y conocer un mínimo de DOS. Ahora con una cuenta en Google Docs, tienes suficiente, y logras hacer un libro mucho más potente que el de Lotus. Claro que si Lotus 1-2-3 funcionaba con 512 KB de RAM, con Google Docs necesitarás del orden de 1000 veces más. Pero es exactamente lo que dices, la usabilidad viene con el precio del gasto de recursos y la complejidad a la hora de programarlo. Si bien es cierto que no se si sería más fácil programar ahora un Google Docs, que un Lotus 1-2-3. No se decirte.
Muy curioso lo de que sea más fácil instalar un servidor local que un IDE, pero así es. Supongo que porque los IDE, llevan implícito servidores locales de BD. Ya sea SQL Server Express, Interbase… o lo que sea. Pero un IDE es algo cada vez más enorme.
De XAMP, debo decir que es una gran ventaja ese todo en uno. Algo que en mis tiempos uno se hacía a mano. Lo malo de XAMP es que no basta con él, necesitas un editor o un IDE, la documentación de PHP etcétera. Al menos trae phpMyAdmin y así evitas instalar un cliente de MySQL.
Gracias por el artículo, pero creo que estoy algo confundido respecto a diferenciar open source de libre, si un software permite ver su fuente pero impone restricciones con respecto a su uso creo que eso no es libre, estoy de acuerdo con eso.
Pero, no podría alguien decir que su software es libre y aún así imponer las mismas restricciones?, yo creo que si no cumple con las 4 libertades mínimas ni es open source ni libre. No se si estoy en lo correcto.
Así es Manuel, Open Source significa solamente que el código fuente está disponible. Obviamente da más libertad que no tenerlo porque permite estudiarlo, pero no es suficiente para considerarlo libre.