Community Anti-patterns

Los llamados Anti-patterns son patrones de comportamiento perjudiciales o dañinos para una comunidad , en muchas ocasiones esas conductas o comportamientos son inconscientes y las personas que los tienen no se dan cuenta del daño que provocan siendo habitual que existan también comportamientos totalmente contrarios.
Algunos de los  Anti-patterns o conductas perjudiciales que nos podemos encontrar son:

Cookie Licker: Es aquel voluntario de una comunidad que empieza las cosas , las alarga y nunca las acaba, y siempre dice que está trabajando en ello y que lo tiene casi listo.
Help Vampire: Es aquella persona que solicita ayuda con demasiada frecuencia en vez de buscar soluciones en Internet o leerse un manual o alguna documentación similar.
Command and Control: Este antipatrón aparece cuando los fundadores del proyecto o comunidad quieren tener un control excesivo sobre todo lo que ocurre en la comunidad y lo que se desarrolla en ella, suelen exigir los copyright de todo el software de la comunidad. Sucede también cuando la mayoría de los comitters son de sólo una empresa , el resultado suele ser una comunidad muy poco saludable.
Bikeshedding: El Bikeshedding se da cuando ocurren largas discusiones sobre temas que no tienen importancia en el proyecto.
Broken window: Sucede cuando hay determinados signos de deterioro en una comunidad y que parecen no importarles a nadie y hacen que los miembros de la comunidad desarrollen poco apego por la misma y tengan conductas incívicas o vandálicas dentro de la comunidad.
Day One commit bit: Sucede cuando determinadas empresas con gran presencia en un proyecto introducen a sus programadores de manera masiva y con derechos para hacer commit etc sin seguir los términos de la Doocracy o las pautas habituales para ganarse ese derecho.
Decision paralysis: Este patrón es muy habitual en las comunidades , sucede cuando hay muy buena voluntad y se discuten muchos los problemas pero finalmente nadie hace nada, sería el caso contrario al patrón Cookie Licker
I’m the bad guy?: Este patrón se da cuando por exceso de celo , alguna persona reprime de manera exagerada a otras (sobre todo recién llegados) cuando cometen un error o hacen algo equivocado.
Me too: Ocurre cuando la gente escribe mensajes del tipo «yo también» que no aportan nada y si todos los usuarios hacen lo mismo llenan el canal de mensajes inútiles.
Nepotism: Sucede cuando una persona se aprovecha de su situación para realizar favoritismos a sus allegados, cuando no aplica las normas de igual manera a todos los componentes de la comunidad y cuando no hay trasparencia en algunas decisiones, que se toman de manera unilateral y en secreto.
RTFM: Es el patrón contrario a Help Vampire , sucede cuando por cansancio o aburrimiento los componentes de una comunidad nunca contestan ningún tipo de preguntas a los recién llegados y siempre les redirigen a la documentación incluso para las cosas más simples lo que provoca que los nuevos participantes de la comunidad tengan muchas dificultades para adaptarse.
The Big Show: Ocurre cuando determinados grupos o sectores de una comunidad trabajan en secreto o a puerta cerrada y de repente muestran su trabajo o desarrollos de golpe de manera espectacular.
Uberactivism: Sucede cuando se expulsa de una comunidad a personas por no ser muy activas en la comunidad, cuando se espera demasiado de los participantes de un proyecto.
Warnock’s Dilemma: Sucede cuando en un canal de comunicación un problema se queda sin respuesta lo que puede ser debido a una de estas causas:

  • Lo escrito es correcto y no necesita aclaración.
  • Lo escrito no tiene sentido y nadie lo entiende.
  • Nadie lee la anotación por la razón que sea.
  • Nadie lo entendío y nadie se molesta en preguntar.
  • A nadie le importa la anotación por la razón que sea.

Water Cooler: Ocurre cuando se discuten problemas de la comunidad fuera de los canales habilitados para tal efecto.

Publicado en mswl-manage | Etiquetado | Comentarios desactivados en Community Anti-patterns

RFC 1855: Netiquette Guidelines

En 1995 con la explosión de Internet surge la RFC-1855 con el objetivo de proporcionar un mínimo de reglas para la Network Etiquette y con la intención se ser totalmente adaptables según las necesidades de los nuevos modelos de comunicación.

Esta RFC establece unas guías de comportamiento , estrucuturadas en:
-comunicación uno a uno , uno a varios
-protocolos: email , talk, netnews
-categorías: usuario, moderador, administrador.

Comunicaciones Uno a uno

Por Mail:

1.- Nunca pongas en un email nada que no escribieras en una postal
2.- Respeta el copyright del material que reporduzcas en el mail
3.-Si haces un forwarding de un email que has recibido , reenvialó intacto y hazlo sólo si estás seguro de que el remitente original permitiría su reenvio a otras personas.
4.-Nunca envías mensajes encadenados por email
5.-Se conservador con lo que envias y liberal con lo que recibes.
6.- Te en cuenta que el asunto de un mensaje puede no describir correctamente su contenido y ten en cuenta que no es lo mismo recibir un mensaje enviado para ti que con copia a ti.
7.- Escribe tu nombre y datos de contacto al final del mensaje a modo de firma.
8.- Ten en cuenta que una dirección de correo que parece que es de una persona puede ser de un grupo de personas.
9.- Al responder un mensaje ten en cuenta si hay alguién en copia que no desees.
10.- Ten en cuenta que el email es un medio de comunicación asícrono, no esperes respuesta inmediata de tu interlocutor.
11.- Advierte a los destinatarios del correo si el texto es excesivamente larrgo.
12-. Es interesante que conozcas la dirección de email del servicio de ayuda del servidor de correo donde tengas la cuenta de correo electrónico.
13.- En tus mensajes respeta las diferencias culturales o religiosas de las personas a las que envías correos electrónicos.
14.- No escribas en mayúsculas.
15.- Utiliza símbolos como * o el guión bajo para enfatizar tu mensaje.
16.- Usa emoticonos para expresar tu estado de ánimo de manera puntual en el mensaje.
17.- Puedes utilizar los tags FLAME ON/OFF para encerrar texto más emocional
18.- No envies caracteres de control o caracteres no-ascii
19.- Sea breve sin ser demasiado conciso. Cuando responda a un mensaje no reenvie todos los mensajes previos, edite el mensaje y elimine todo el texto irrelevante.
20.- Limitar la longitud de la línea a menos de 65 caracteres y finaliza la línea con un retorno de carro.
21.- El email debería de tener un asunto que refleje el contenido del mensaje.
22.- Si incluyes una firma al final del mensaje que sea corta y no supere las cuatro líneas.
23.- Aplique el sentido común a la hora de dar por verdadero un mensaje tenga en cuenta que los emails no van cifrados y algúien podría suplantar al emisor.
24.- Si el mensaje recibido es importante envie una contestación breve de manera inmediata, posteiormente podrá escribir un mensaje más extenso que lo complete.
25.- Tenga cuidado con el argot o siglas locales.
26.- Los correos electrónicos consumen ancho de banda y CPU, absténgase de enviar publicidad por este medio.
27.- No adjunte ficheros muy grandes en los correos electrónicos.
28.- No envie mensajes de manera masiva con información o publicidad no solicitada.
29.- Al reenviar un mensaje a mucha gente tenga cuidado para no generar un bucle infinito.

Para conversaciones interactivas a través del ordenador:

1.- Utilice mayúsculas y minúsculas y signos de puntuación  como si estuviera escribiendo un correo electrónico
2.- Escriba un retorno de carro al final de cada línea . Intente no escribir más de 70 caracteres por línea.
3.- Deje márgenes, no escriba hasta el borde de la pantalla.
4.- Deje una línea en blanco para indicat que ha finalizado de escribir y para que la otra persona comience su mensaje.
5.- Utilicen mensajes de despedida para dar por terminada la comunicacion.
6.- Recuerda que hablar es interrumpir a otra persona, no hables con extraños.
7.- Las razones por las que no se puede recibir una respuesta pueden ser varias.
8.- Las conversaciones interactivas muestran su habilidad al escribir, no se preocupe si comete errores, la otra pesona por lo general sabrá entender lo que quiere decir.
9.- Tenga cuidado si está hablando en más de una sesión de chat.

Temas administrativos:

1.- Desde el punto de vista del que administra , asegureśe de que tenga directrices escritas para tratar situaciones de ilegalidad.
2.- Gestione las peticiones y resuélvalas en su momento oportuno.
3.- Resuelva de manera inmediata cualquier reclamación de usuario referente a mensajes con contenido impropio o cadenas de mensajes.
4.- Explique a sus usuarios las normas en sus sistemas, cuotas de disco , accesos. etc.
5.- Asegurese de que existe el rol de Root y Postmaster y que alguién lee correos dirigidos a dichas personas.
6.- Investigue las quejas e incidencias de susu usarios con una mente abierta.

Comunicación Uno a Muchos (Mailing Lists, NetNews)

En las comunicaciones «uno a muchos» se deben de aplicar las mismas reglas de netiqueta que en las comunicaciones por mail debiendo se más cuidadosos dado que la audiencia de nuestro correo es mucho mayor.

Reglas generales para Mailing Lists y NetNews

1.- Antes de publicar nada léase los mails y noticias con un par de meses de antiguedad para saber las características del grupo.
2.- No culpe al administrador del sistema del comportamiento de los usuarios.
3.- Tenga en cuenta que lo que escribe puede ser leido y accedido por mucha gente y que todo queda almacenado.
4.- De por hecho que cada persona habla por si misma y que no hablan en nombre de una organización a no ser que se diga lo contrario.
5.- Tenga en cuenta los Mailing lists y Netnews consumen recursos del sistema, preste atención a las normas y reglas impuestas por el administrador.
6.- Los mensajes y artículos deben de ser breves y concisos, no divague.
7.- Los temas de los mensajes deben de ser acordes al grupo donde se escribe.
8.- No falsifique mensajes ni suplante a otras personas
9.- Respete las normas sobre publicidad del sitio donde escriba mensajes.
10.- Si responde a un mensaje anterior , mantenga algunas líneas de este último pero no todas o haga un resumen haciendo referencia al mismo.
11.- Asegurese de que al final del mensaje se envia un texto que lo identifique a usted a modo de firma.
12.- Al responder a un mensaje en una lista de correo , revise los destinatarios y si es una lista de correo o no.
13.- No envie recibos, o notificaciones de entrega , ni datos de tipo privado en listas de correo.
14.- Si envía un mensaje personal a una lista de correo, discúlpese.
15.- Si tiene una discusión muy concreta con otra persona resuélvanla por correo electrrónico y posteriormente hagan un resumen para el resto del grupo explicando su resolución.
16.- No se vea involucrado en discusiones gratuitas o innecesarias.
17.- Evite reenviar mensajes que son contestaciones de contestaciones gratuitas.
18.- Tenga cuidado con las fuentes monoespacio y los diagramas puede que se vean de manera diferente según el sistema cliente.
19.- No escriba mensajes repudiando el contenido de grupos de correo o noticias con cuya temática no esté de acuerdo.

Reglas específicas para Mailing Lists:

Asegurese de que ha leído y entendido las reglas del grupo de correo al que va a incorporarse.

1.- Envie los mensajes de alta y baja de un grupo de correo a la dirección de correo electrónica correcta.
2.- Guarde los mensajes de subscripción que reciba tienen información util sobre por ejemplo como darse de baja.
3.- Tenga cuidado al enviar mensajes, una vez mandados no se pueden modificar ni eliminar.
4.- No utilice los auto-reply en su cuenta de correo dado que estará enviado mensajes a todo el grupo de correo.
5.- No envíe mensajes muy largos a las listas de correo.
6.- Considere darse de baja o activar la opción de no envío de correo si va a estar una larga temporada sin comprobar el correo.
7.- Discúlpese si cruza mensajes entre listas de correo.
8.- Si hace una pregunta resume y no haga una larga lista de correos enviados y recibidos.
9.- Algunas listas de correo son privadas , no envie mensajes a las mismas ni revele infomación que haya sido publicada en ellas.
10.- Si usted está en una discusión centrese en el tema y no es las personas involucradas en la misma.

Reglas específicas para NetNews

1.-En los headers notifique a los lectores debidamente si hace Cross-Posting, es decir si un artículo de noticias es publicado a más de un grupo.
2.-Lea todos los mensajes de una discusión antes de enviar un mensaje. Evite los mensajes en los que sólo indique “yo también”
3-Las respuestas personasles dirigidas hacia una sóla persona deben enviarse de manera privada por correo electrónico.
4-Comprube la sección “Distribution” de la cabecera.
5-Si piensas que un artículo puede ser interesante para más de un Newsgroup, haz  Cross-Posting, publicándolo en otros grupos de noticias.
6-Antes de realizar una pregunta apliquese el dicho RTF: Lea el maldito manual.
7-No envie anuncios a los Newsgroups
8-Si descubre un error en su post, canceleló lo antes posible.
9-Consulte con el administrador si necesita cancelar un post o avisar de algún post incorrecto.
10.-Si escribe un post y no lo ve inmediatamente, no lo vuelva a mandar, en breve lo verá en el grupo de noticias, sea paciente.
11-No sea ofensivo en sus post ni haga comentarios de mal gusto.
12.-En grupos de noticias en los que se hable de cosas muy concretas , especificar la palabra “Spoilers” en el asunto si se va a hablar de un tema diferente al habitual en ese Newsgroup
13.- Falsificar artículos está prohibido.
14-Hay grupos en los que se permiten mensajes anónimos, pero hay otros que no.
15-Si el grupo está moderado, debe entender que habrá una demora en la publicación de sus artículos.
16-No se involucre personalmente en dicusiones en el grupo.

Reglas para el IRC

1.-Como en otros medios de comunicación , vea como es el grupo y se desarrollan las conversaciones antes de intervenir.
2.- No es necesario saludar a todos y cada uno de los componentes de la sesión IRC
3.- Avise a los participantes si va a manda por IRC gran cantidad de información de golpe.
4.- No asuma que gente que no le conozca va a querer hablar con usted.
5.- Busque si existen un guidelines específico para ese IRC al que se está conectando.
6.- No pregunte por información personal sensible a otros participantes.
7.- Respete el anonimato de los demás y utilice el nickname seleccionado por cada usuario incluso cuando conozca el nombre real de la persona a la que se dirige.

Referencias: http://www.ietf.org/rfc/rfc1855.txt

Publicado en mswl-manage | Etiquetado | Comentarios desactivados en RFC 1855: Netiquette Guidelines

Financiación de proyectos FLOSS: El caso OpenLícita: Financiación Mixta

OpenLícita es un proyecto FLOSS desarrollado por las empresas Ándago y Espublico y distribuido bajo licencia EUPL (European_Union_Public_License) ,implementa los servicios electrónicos necesarios para que un organismo público gestione sus expedientes de contratación pública y ofrezca servicios de e-administración en relación a los mismos. La motivación de ambas compañías para la realización de este software ha sido la del fomento y desarrollo de soluciones técnico-jurídicas para la sociedad de la información. Entre sus características estan:

  • -Integración con plataformas autonómicas
  • -Integración con servicios de la red S.A.R.A.
  • -Integración con RED.es
  • -Integracion Avanza local
  • -Gestión de expedientes por medio de tecnología workflow (BPM)
  • -Arquitectura escalable orientada a servicios (SOA)
  • -Gestión de la seguridad, auditoría del servicio.
  • -Cumplimiento y adaptación a los marcos jurídicos actuales.

El proyecto OpenLícita supone el soporte jurídico y tecnológico para la Ley de Contratos del Sector Público 30/2007 e implementa la gestión de los diferentes modelos de contratos públicos, bajo un entorno uniforme y completo, en consonancia con la Ley de Acceso Electrónico de los Ciudadanos a los Servicios Públicos 11/2007.

OpenLicita es un ejemplo de proyecto de financiación mixta, se ha financiado mediante los siguientes mecanismos:

  • -Subvencionado por programas nacionales: Subvencionado por el Ministerio de Industria, Turismo y Comercio(MITyC), a través del Plan Avanza I+D del 2008.
  • -Subvencionado por programas europeos.
  • -Financiación de empresas especializadas  LifeRay, Ilitia Technologies y Digimate Computer  (sin ánimo de lucro)
  • -Financiación por programas de modernización de AAPP (Adminstraciones Públicas)  (Ayuntamiento de Coslada, de Getafe, Hospitalet del Llobegrat, Orihuela)
  • -Desarrollo colaborativo gracias a diversos partners.

OpenLícita se distribuye en diferentes versiones:

  •     -OpenLícita Community Edition: Es la versión desarrollada en comunidad y sólo se ofrecen servicios de soporte a través de esta.
  •     -OpenLícita Advanced Edition: Está orientada a las Adminsitraciones Públicas y partners que contratan servicios de subscripción, soporte y mantenimiento e incluye algunas mejoras y añadidos que no están contenidos dentro de la versión  Community Edition.

El modelo de negocio de Ándago por tanto para este proyecto ha sido el de «Product specialist» y «Platform providers» porque proporcionan soporte , instalación e integración del software FLOSS desarrollado.

Referencias:
http://www.openlicita.com
http://openpyme.osl.ull.es/eAdministraci%C3%B3n/applications/OpenLicita

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en Financiación de proyectos FLOSS: El caso OpenLícita: Financiación Mixta

Coopetition

En los últimos años ha surgido un término que tiene gran aplicación en el mundo del software libre, es el término Coopetition, que intenta aunar dos términos, la competición y la cooperación surgiendo lo que se ha denominado teoría de la competencia cooperativa , que lucha contra la idea tradicional de que en los mercados para que alguien gane, otro tiene que perder e intenta explicar nuevas teorías como que si diferentes empresas trabajan juntas , crearán un mercado más grande y de mayor valor que el que podrían crear trabajando por separado y para ello no podemos seguir al pie de la letra las tradicionales reglas de comercio establecidas sino que tenemos que redefinirlas.

En esta teoría se habla de Competitors que serían aquellas compañias cuyos servicios o productos hacen que lo que otras compañías ofrezcan valga menos y Complementors que son aquellas empresas  cuyos productos se complementan con los de otras compañias y aumentan el valor o la utilidad de los productos ofrecidos por las mismas.

La Coopetition ocurre cuando diferentes empresas interactuan con algunos intereses comunes, cooperando obtienen ambas mayores beneficios que si no lo hicieran, por ejemplo varias empresas pueden colaborar en proyectos de investigación para la creación de un producto y luego competir en la explotación del mismo, si no hubieran colaborado es posible que ninguna de los dos hubiera llegado a producir ese producto ni haber obtenido beneficios de el.

Es necesario por tanto cambiar las reglas tradicionales de las relaciones comerciales , para ello hay que alterar uno de los siguientes elementos básicos:

  • Jugadores: Jugando y mezclando diferentes combinaciones de Competitors y Complementors para  nuestra empresa.
  • Valor añadido: Variando el valor aportado de cada compañia al juego
  • Reglas: Cambiando las reglas de colaboración entre las empresas para obtener la posición más ventajosa para la empresa.
  • Tácticas: Modificando la percepción de los jugadores mediante tácticas que me permitan obtener una posición ventajosa para mi compañia.
  • Alcance: Entendiendo como las relaciones entre empresas pueden afectarse entre ellas y cómo aprovecharse de las mismas.

Los beneficios de la Coopetition son variados como la reducción de costos , la compartición de recursos , y la transferencia de recursos tecnológicos pero también es cierto que pueden surgir complicaciones y dificultades en estas colaboraciones entre empresas , problemas de confianza, problemas a la hora de compartir riesgos , costos etc.

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en Coopetition

El Gobierno de Extremadura cede Linex a la comunidad de usuarios

El Gobierno de Extremadura ha decidido encargar a CENATIC (Centro Nacional de Referencia de Aplicación de las Tecnologías de Información y la Comunicación basadas en Fuentes Abiertas ) la gestión del proyecto LinEx para garantizar su evolución y sostenibilidad , Cenatic se compromete a ello y sacar en un breve espacio de tiempo una versión actualizada de Linux y sus diferentes “sabores” y a crear una comunidad de desarrolladores para hacer el desarrollo de LinEx mucho más abierto y permitir que gran cantidad de colaboradores puedan contribuir a la sostenibilidad del proyecto y a su evolución.

Cenatic para realizar una versión actualizada de LinEx convocó a concurso a cualquier empresa que quisiera embarcarse en el proyecto, se presentaron un total de seís de las cuales fue seleccionada Emergya Ingeniería S.L (empresa que ha participado en el desarrollo de otras distribuciones GNU/Linux) que además de realizar la citada nueva versión (que estará basada en la versión Wheezy de Debian) debía de estudiar la posterior liberación de la versión y conseguir crear una comunidad que pudiera mantener el proyecto.

Todo esto ha supuesto un gran cambio en la política de gestión del proyecto LinEx hasta ahora gobernado y financiado por el Gobierno de Extremadura se enfrenta a una nueva etapa más abierta y en la que si se consigue crear una comunidad dinámica se asegurárá la existencia y evolución de todo el proyecto.

Referencias:

http://www.gobex.es/salaprensa/view/press/press/detalle.php?id=7121

http://www.cenatic.es/hemeroteca-de-cenatic/1-actualidad-cenatic/40122-cenatic-adjudica-por-concurso-a-emergya-el-desarrollo-de-la-nueva-version-de-linex

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en El Gobierno de Extremadura cede Linex a la comunidad de usuarios

Modelos de negocio del software libre según Hecker y Raymond

Frank Hecker fue uno de los primeros en escribir sobre la economía del software libre y sus modelos de negocio en su artículo titulado: «Setting Up Shop: The Business of Open-Source Software» , Hecker toma como punto de partida la clasificación creada por opensource.org (Support Sellers,Loss Leader,Widget Frosting y Accessorizing) y añade otros tipos nuevos basándose en la observación directa de empresas en las que el software libre es una pieza fundamental:

  • Support sellers:  Venta de servicios relacionados, consultoría, integraciones. ejemplo : RedHat
  • Loss Leaders: Venta de otros productos propietarios, el software libre se utiliza para introducir productos propietarios  en el mercado. ejemplo: Sendmail
  • Widget Frosting: Venta de Hardware, el software libre mejora la competitividad de diversos productos de hardware.
  • Accesorizing: Venta de productos físicos relacionados con el software como libros etc., ejemplo: O’Reilly
  • Service Enabler: Venta de servicios en linea proporcionados por el programa. ejemplo: Netscape
  • Sell it , free it:  Software que de manera cíclica en sucesivas versiones pasa de software libre a privativo y de nuevo a libre y así sucesivamente según va evolucionando el software.
  • Brand Licensing: Venta de derechos de marca, se obtienen ingresos símplemente por el uso de la marca que hacen terceros.
  • Software Franchising: Venta de franquicia y porcentaje sobre ingresos de las franquicias.
  • Hibridos: Creación de software cuyas licencias no son ni software libre ni software propietario puro, ejemplos: Qt, Trolltech.

Eric S. Raymond en su ensayo «El Caldero Mágico» trata también de realizar una clasificación de los modelos de negocio del software libre, empieza por dividir los modelos en «Modelos basados en el valor de uso» (el valor económico del programa como herramienta) y «Modelos basados en el valor de venta» (valor final como mercancia, commodity)

  • Modelos basados en el valor de uso:
    • Compartir costes (pone el ejemplo del proyecto Apache)
    • Compartir riesgos (pone el ejemplo de Cisco)
  • Modelos basados en el valor de venta indirecto:
    • Loss-leader/market positioner: El software libre se usa para posicionarse en el mercado.
    • Widget frosting: Venta de hardware asociado al software libre.
    • Give away the recipe, open a restaurant: Regala la receta, abre un restaurante, con RedHat como ejemplo.
    • Accessorizing: Venta de accesorios. ejemplo O’Reilly
    • Free the future, sell the present: Libera el futuro, vende el presente: En este modelo el software en el momento actual es privativo pero sólo durante un tiempo tras el cual pasará a ser software libre. ejemplo intérprete Ghostscript.
    • Free the software, sell the brand: Libera el software, vende la marca, es un modelo especulativo , lo que se vende es la certificación de compatibilidad entre productos de la misma marca.
    • Free the software, sell the content: Libera el software, vende el contenido, es otro modelo especulativo , en el que se venden subscripciones al contenido.
Publicado en mswl-eco | Etiquetado | Comentarios desactivados en Modelos de negocio del software libre según Hecker y Raymond

The Magic Caudron : El Caldero Mágico por Eric S. Raymond

The Magic Caudron es un ensayo escrito por Eric S. Raymond que analiza los aspectos económicos del software libre , en el se explica por ejemplo que los programas como otros bienes tienen dos tipos diferentes de valor económico, el valor de uso y el valor de venta, el valor de uso de un programa es su valor económico como herramienta mientras que el valor de venta es su valor final como mercancia (commodity) . Sólamente el valor de venta es afectado cuando se pasa de un modelo closed-source a open-source, el valor de uso no se ve afectado.También se explica que en el mundo del software el valor de un programa no está tan relacionado con el coste de producción como ocurre en la fabricación de bienes manufacturados clásica. Desmonta las teorías que dicen que debido a que el coste de copiar o reproducir un programa es nulo significa por ello que su precio debería de ser cero.

 
Se explica que en el software libre no existe el riesgo de sufrir la “Tragedia de los Comunes” donde el bién común es degradado por su utilización excesiva, en el software libre ocurre lo opuesto, su utilización no supone una pérdida de valor, sino que lo aumenta.

 
También se discuten las habituales razones para cerrar el acceso al código fuente de un programa y se explica que se deben de calcular las ventajas de liberar el código de una aplicación frente a los inconvenientes que pudiera provocar que la competencia se beneficiara de nuestro software. Y  critica la idea de que no difundir el código fuente de un programa lo proteja frente a ataques de posibles hackers porque el código abierto incrementa con mucho el número de usuarios y supone que muchas más personas han podido detectar posibles brechas de seguridad o errores de cualquier otro tipo.

 
En el ensayo se analizan diversos proyectos de software libre como el de Apache creado con el objetivo de compartir costes y esfuerzos entre diferentes grupos de desarrolladores para obtener un buen servidor web, o proyectos de software libre de Cisco que augurando que sus pequeños desarrollos iban a quedarse obsoletos decidió abrir sus fuentes para que una comunidad de desarrolladores los pudiera utilizar, mantener y mejorar.
Se explican los beneficios indirectos que puede obtener una empresa ofreciendo servicios sobre el software libre y establece en que situaciones es muy recomendable liberar el software y que otras no tanto, si la estabilidad , confiabilidad, escalabilidad son críticas o si el software desarrollado sería importante que se estableciera como un estandar entonces es muy recomendable que el proyecto se desarrolle como open-source.

 
El ensayo concluye explicando que el futuro de cualquier tecnología de software será o bien morir o convertirse en parte de la infraestructura abierta y augura una vida muy corta para cualquier software privativo que con el tiempo caiga dentro de lo que se denomina software de infraestrucutura (standards abiertos fuertes ).

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en The Magic Caudron : El Caldero Mágico por Eric S. Raymond

Coste estimado de los proyectos de software libre más populares.

Uno de los temas más controvertidos en el mundo del software libre y que en muchas ocasiones no es objeto de la necesaria atención es el coste del desarrollo de los proyectos, existen webs como ohloh que mediante estimaciones nos permiten hacernos una idea del coste de los proyectos de software libre más populares y utilizados, algunos ejemplos de los que podemos obtener estimaciones de su coste son:

Linux

Linux que está escrito en lenguaje C tiene unos quince millones de líneas de código y un esfuerzo estimado de contribuidores de cinco mil personas año y un coste estimado de todo el proyecto de unos doscientos setenta y tres millones de dólares.

Mozilla Firefox

Se calcula que tiene unas ocho millones de líneas de código principalmente de lenguaje C++ y que necesita un capital humano de 2.505 personas contribuyendo en el proyecto y estiman que el coste del proyecto es de 137 millones de dólares.

Apache Http Server

Apache tiene la mayor parte de sus líneas de código escritas en XML y C con un total de un millón y medio aproximado de líneas de código , con necesidad de unas 457 personas contribuyendo y con un coste total de 25 millones de dólares.

Subversion

Subversion está hecho en su mayoría en lenguaje C con un total de 491.569 líneas de código, con unos 133 contribuyentes y un coste total estimado de un poco más de siete millones de dólares.

MySQL

MySQL con un millón y medio de líneas de código escritas en C y C++ tiene unos 408 contribuidores por año y un coste total estimado de 22 millones y medio de dólares.

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en Coste estimado de los proyectos de software libre más populares.

COSPA

Cospa es un consorcio Europeo formado por 15 países : Italia, Hungria , Dinamarca,Bélgica, Reino Unido e Irlanda con el objetivo de analizar los efectos de la introducción de estándares y software abiertos en las administraciones públicas europeas.

Se financia gracias al programa IST (Information Society Technologies) y surge con la intención de evitar el alto coste que tiene para las administraciones europeas la adquisición de software propietario, el programa como tal no existe a nivel global, si no más bién a nivel local, y los problemas más habituales que suelen aparecer para que se pueda implantar son los siguientes:

  • Costo de la migración de datos
  • Interoperabilidad e integración con las soluciones existentes.
  • Formación del personal en las nuevas herramientas
  • Preocupaciones refrentes al soporte , mantenimiento, sostenibilidad y futuro del software.

Mientras que las ventajas que el proyecto destaca en la utilización de software libre son :

  • Extrema versatilidad
  • Adaptabilidad
  • Transparencia en su funcionamiento.
  • Ahorro en licencias de software
  • El ciudadano no tendría que pagar también por licencias de software para acceder a los servicios suministrados por las administraciones públicas.

Entre los proyectos de software libre que estudian implantar están, la suite de ofimática de OpenOffice y el sistema operativo Linux y se ha estimado el coste total del proyecto en unos cuatro millones de euros

Existen una gran variedad de proyectos europeos relacionados con el software libre como http://flosspols.org/  que estudia las políticas de los gobiernos respecto del software libre , el proyecto http://www.tOSSad.org con el objetivo de fomentar y dar a conocer el uso de este tipo de software y http://www.odfalliance.org/ para fomentar el uso de estandares abiertos a la hora de crear todo tipo de documentación y ficheros de texto.

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en COSPA

KWLUG FLOSS Fund

Con el objetivo promover , organizar y estructurar la donación de fondos para diferentes proyectos de software libre existen organizaciones como KWLUG FLOSS Fund, en ella sus miembros hacen donaciones voluntarias cada mes y envian información sobre proyectos de software libre que creen son merecedores de recibir algún tipo de donación.

La asociación está separada en dos partes independientes para asegurar el buen uso de los fondos y evitar el fraude, por un lado están los LUG members que es el grupo más numeroso y por el otro el Cabal que son unas pocas personas y que son las que finalmente gestionan y utilizan los fondos de la asociación.

Se realizan reuniones (KWLUG meeting) donde se pueden realizar donaciones de manera totalmente anónima , o también se puede transferir el dinero a el Cabal en cualquier momento.Cada mes, una semana después del KWLUG meeting se selecciona un proyecto de entre los propuestos por los LUG members y es al que finalmente se le realiza la donación de lo recaudado durante el mes.

ref:  http://kwlug.org

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en KWLUG FLOSS Fund

Cuota de mercado de los servidores de correo.

Existe una amplia variedad de servidores de correo en Internet, de entre los más utilizados existen varios que son software libre como Exim, (EXperimental Internet Mailer) desarrollado por la universidad de Cambridge en 1995 (licencia GPL) es un servidor de correo muy similiar a Smail 3 , es muy flexible con muchas utilidades para comprobar el correo entrante y es ahora mismo uno de los más populares con cuotas de mercado que llegan al 36%, otro servidor de correo de software libre es Postfix creado en 1998  por Wietse Venema de IBM con licencia IBM Public License y que es una evolución del conocido SendMail siendo más rápido , más seguro y más fácil de adminsitrar que este último ha llegado a tener cuotas de uso de un 21%, por debajo de Exim pero por encima de Microsoft Exchange que está en 16%, seguido muy de cerca del clásico SendMail con un 15%, y por debajo sólo quedan servidores muy minoritarios como MailEnable , Mdaemon , Imail o Lotus Domino.

En suma los servidores de correo basados en software libre superan a los servidores de correo privativos de Microsoft, Cisco o Barracuda.

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en Cuota de mercado de los servidores de correo.

Crowdsourcing

El crowdsourcing es un modelo organizativo o de participación en el que una tarea o problema a solucionar es planteado de una manera abierta a una “masa” de personas, es decir  a un grupo muy amplio y heterogéneo (denominados crowdsourcers) que puede participar en la resolución de las tareas planteadas gracias a la red Internet. Los crowdsourcers pueden ser recompensados de manera económica, mediante premios o simplemente mediante reconocimiento social, en muchos casos son simplemente voluntarios que desean particpar en un proyecto sin obtener benificio por su activadad por simple motivación o intereses personal. Tipos de Crowdsourcing:

1- Crowdvoting
Consiste en recoger opciones o realizar votaciones de manera abierta sobre productos o cualquier coas en particular que sea objeto de estudio.
2- Creative crowdsourcing: Crowdsourcing de proyectos creativos, de diseño gráfico o arquitectónicos
3- Crowdfunding: Consiste en crear proyectos gracias a pequeñas contribuciones de la mayor cantidad posible de personas
4-wisdom of the crowd: Este tipo de  crowdsourcing basa su filosofía en que un numero de personas siempre va a tener mucho mayor conocimiento que una sola , y que este grupo tendrá globalmente una mejor vision de un problema y llegará entre todos más facilmente a una solución.
5-microwork: Es un  crowdsourcing en el que los  crowdsourcers realizan pequeñas tareas que serían realmente costosas si las tuviera que realizar un ordenador.
6-Inducement prize contests: Consistente en lanzar una oferta o un concurso promoviendo la competición entre crowdsourcers o grupos de los mismos para la realzación de un grupo de tareas o proyecto y premiando de alguna manera a la mejor idea propuesta.
7-implicit crowdsourcing: Este tipo de  crowdsourcing es menos obvio y en muchas ocasiones los usuarios participan en proyectos de colaboración en masa sin darse cuenta con sus acciones que resultan de utilidad al proyecto de  crowdsourcing

Algunos ejemplos de  Crowdsourcing :

1.- Threadless.com : Comunidad online de artistas en los que los usuarios o  crowdsourcers votan los diseños que mas les gustan y los más valorados son los que son utilizados en camisetas u otros objetos.
2.- Kickstarter: Es un proyecto  crowdsourcing del tipo Crowdfunding en el que los  crowdsourcers financian con pequeñas cantidades de dinero determinados proyectos.
3- http://www.jademagnet.com: Web en el que los  crowdsourcers diseñan logos, websites , animaciones, videos etc para pequeños empresaros o freelancers de todo el mundo
4- Poptent.com: Comunidad en la que los  crowdsourcers realizan videos de tipo promocional o publicitario para empresas.
5.-Tongal: Web en la que convocan conscursos para la realización de trabajos artísticos y creativos : http://www.tongal.com
6.- DesignCrowd :  Comunidad que permite a los crowdsourcers participar en la creación de creación de logos.
7.- 99designs: Otra web para diseños artísticos de logos , webs etc.
8.- Crowdrise: Es una fundación sin ánimo de lucro para financiera proyectos caritativos mediante  crowdsourcing
9.- UInvest: Es una comunidad de tipo  Crowdfunding para financiar pequeños proyectos empresariales.
10.-  iStockphoto: Es un proyecto donde los  crowdsourcers suben sus fotografías a la web y obtener beneficios de su venta o utilización, es una biblioteca de imágenes creada por los usuarios.
11.- Local Motors: Es una comunidad que pone en contacto a ingenieros, diseñadores y fabricantes de coches de todo el mundo para la realización de proyectos en común.
12.- Witkey: Es una web donde los  crowdsourcers comparten todo tipo de información y conocimientos que normalmente son difíciles de obtener en la red o por cualquier otro medio.
13.- Amazon Mechanical Turk (MTurk) : Es una web que propone a los crowdsourcers  tareas que no son posibles de realizar por un ordenador y que se requiere de inteligencia humana para poder realizarlas como por ejemplo escoger de un grupo de fotografías cual es la que resulta mejor.
14.- InnoCentive:  Da premios dinero para aquellos  crowdsourcers que resulvan problemas de tipo científico o técnico.

Publicado en mswl-eco | Etiquetado | Comentarios desactivados en Crowdsourcing

Software Quality

The software quality is a complex and abstract concept , in many cases is related to the end user expectations, but there are a lot of things involved in the software quality not only related about the final product , but in many aspects like the planning, the standards, the documentation, the process of creation etc.

For get a final good quality product is very important:

Talk about the standards, use standards in all the process or creation of the software and all the related jobs sure by itself a good aproach to a quality product, I think the standards compliance is the base of a good product.

Draw a quality planning, with a general overview of the final product, the target market, the user expectations, plannings for the releases, updates, suport etc. and a study of the risks than could affect to the quality aspects

A strong quality control along the process of the creation of the software, quality is sometimes like the safety in a job, all people has in mind that the work in whatever job must be done under strong safety control but sometimes people forget this and put on risk a lot of things. Quality must be very present along all the process of creation and must exists metrics and process to control it.

There are a lot of forms and possible metrics to measure the quality of a software product, the program language used, the inline documentation of the source, the general complexity, the number of classes, if its object oriented or not,

In general i think the design phase and the adoption of the correct standards are the most important things  to ensure the quality of the product, but without mechanism like metrics and controls along the process of the creation of the software is not enough to have at the end a good quality product. For these reasons the worst enemies of the quality are problems of costs, time and schedule during the creation process.

Publicado en mswl-eval | Etiquetado | Comentarios desactivados en Software Quality

Lightweight methodologies: OpenBRR & QSOS

Both, OpenBRR and QSOS are assessment methodologies very similar, both propose and predefine a set of criteria for evaluating FLOSS projects, also, in both ,the evaluation consists of scoring some criteria and the users can adjust the importance of each criterion according to the specific context of the evaluation. But there are also significative differences, OpenBRR is more flexible allows the creation of new criteria to the model, aspect that is positive because allow adapt the asessment to more specific situation and be less strict, but is also a problem because the scores are more abstract and less universal therefore our OpenBRR metrics couldn’t be shared with others IT managers and this is the reason because there aren’t OpenBRR score repositories. The QSOS scores instead, are more absolute and are easy to share with others and there are some scores repositories that allow a fast assessment of our favorite FLOSS projects. Despite of this more absolute scores , QSOS is also  a little abstract because has some ambiguous scores , problem that try to fix with a very short of list of possible scores for each criteria , only 0,1,2 to describe the score of each aspect in a intent of create a deterministic assessment.

I think that the OpenBRR assesment aproach is good because allow add new set of criteria and this is usefull, but i think that is more usefull can share the scores and has a scores repository that allow fast comparison between FLOSS projects , the problem or the difficult is have an assesment methodology that has an enough complete sets of criteria and at the same time this criteria doesn’t be very difficult to get and doesn’t be very abstract to get the final goal of have a deterministic and concrete evaluation of the project.

For these reasons a project like QualOSS arise  to try to fill the gaps and  with his semi-full automation of the analysis and the use of big metrics repositories (like FLOSSMetrics) achieve create a standard in the assesment of the FLOSS projects.

Publicado en mswl-eval | Etiquetado | Comentarios desactivados en Lightweight methodologies: OpenBRR & QSOS

Sistemas de control de versiones

Los sistemas de control de versiones aparecieron como herramientas de ayuda al desarrollor del software, a medida que el software se hacia cada vez más complejo y en cuyo desarrollo participaban cada vez grupos más grandes de programadores se hacia necesaria la ayuda de herramientas que pudieran mantener el código fuente generado por muchas personas y poder llevar un control de lo que aportaba cada programador y poder tener correctamente almacenadas y organizadas diferentes versiones o ramas del proyecto.

El primer sistema de control de versiones reconocido es el SCCS (Source Code Control System), fue desarrollado en lenguaje SNOBOL inicialmente (posteriormente se reescribió en C) en 1972 en los laboratorios Bell utilizaba un sistema de bloqueos de ficheros para gestionar el acceso a los mismos lo que provocaba problemas de concurrencia, hasta 1982 no tuvo competición hasta que apareció RCS un proyecto cuyo objetivo era proporcionar un sistema de control de versiones libre que llegaría a formar parte del proyecto GNU, era muy parecido inicialmente a SCCS y tenía prácticamente los mismos problemas y limitaciones, tenía algunas utilidades muy famosas como el comando diff para hacer revisiones del código. RCS utiliza un modelo de control de versiones a nivel de fichero al igual que SCCS , no trabaja a nivel de proyectos enteros , el branching se hace a nivel de fichero.

En 1986 surgió CVS (Concurrent Version System) inicialmente basado en RCS mejoraba los problemas de concurrencia de este último al trabajar cada usuario con una copia del proyecto que posteriormente se sincronizaba con el proyecto general, en 1989 CVS fue reescrito en lenguaje C y adoptó un arquitectura cliente-servidor que lo transformó en el sistema de control de versiones más popular del momento en el mundo del software libre. (Se distribuía bajo licencia GPL).

En 1990 Sun MicroSystems desarrolló TeamWare implementándolo como una capa sobre SCCS pero con una serie de características avanzadas como la actualización atómica de varios archivos. En 1998 aparece CVSNT una versión de CVS para Windows., en 1999 se desarrollaba BitKeeper un sistema propietario que sería utilizado para el desarrollo de Linux

En el 2000 apareció Subversion (SVN) que surgió para sustituir al ya muy popular CVS, a diferencia de este en Subversion los ficheros no tienen un único número de versión independiente sino que es el proyecto el que tiene un número de revisión que identfica un determinado estado de los ficheros del proyecto. SVN incluyó muchas mejoras respecto a CVS que lo hacian más eficiente y funcional.

Tras la aparición de Subversion surgieron Monotone (2003) en la que cada usuario utiliza una base de datos SQLite local , Git en 2005 que adoptaba algunas características de Monotone y que fue desarrollado por Linus Torvalds para mantener los fuentes de Linux y poder dejar de utilizar el obsoleto BitKeeper, a su vez, ese mismo año surgió Mercurial (bajo licencia GPL v2) otro sistema de control de versiones distribuido (como Git pero al contrario que Subversion que es centralizado) y al igual que Git y Monotone utilizando resúmenes SHA-1 para identificar las revisiones.

En el 2007 aparece Bazaar creado por Canonical para su proyecto estrella Ubuntu (licenciado como GPL v2) , Bazaar a diferencia de los sistemas de control de versiones distribuidos puros permite trabajar con un servidor centralizado e incluso permite utilizar ambos métodos a la vez con el mismo proyecto permitiendo además trabajar con otros sistemas de control de proyectos.

Publicado en mswl-devtools | Etiquetado | Comentarios desactivados en Sistemas de control de versiones

Características típicas del software libre maduro

Existen una serie de características que nos pueden ayudar a saber si un proyecto de software libre se puede considerar o no maduro:

-Separación entre el branch estable y el branch de desarrollo
-Por detrás del proyecto de software hay una fundación , asociación o empresa o fuerte comunidad que ampare el proyecto
-La comunidad está organizada en grupos con funciones y responsabilidades separadas
-El proyecto lleva en marcha al menos un año
-Existe un proceso bién definido de entrada al nucleo de desarroladores del proyecto.
-Tiene una licencia reconocida por organizaciones como la OSI o la FSF
-Documentación separada, documentación de instalación, de usuario, de administración y muy importante documentación de desarrollo
-Documentación de usuario completa y en varios formatos
-Listas de correo separadas, listas de usuarios, listas de desarrolladores, listas de correo de aspectos de seguridad etc.
-No son muy agresivos haciendo releases.
-Existen libros disponibles sobre el software
-Es ampliamente utilizado y probado.
-Existen tests disponibles para realizarle al software
-El software es fácil de instalar y existe una buena documentación para hacerlo.
-Tiene diferentes interfaces (gráfica, en modo texto), es fácil de utilizar y existen manuales y documentación.
-Hay métricas de rendimiento disponibles
-Existe una guía de implantación
-Se ha utilizado en proyectos a gran escala y se ha implantado correctamente en ellos.
-Es muy intiutiva de utilizar
-Está disponible en diferentes plataformas (Linux, Windows , Mac) etc.
-Separación de parches de seguridad, de los bug fixes de las nuevas características o mejoras.

Publicado en mswl-eval | Etiquetado | Comentarios desactivados en Características típicas del software libre maduro

Comunidad Fedora

La distribución Linux de Fedora surgió a finales de 2003 cuando la compañia RedHat que hasta ese momento distribuía “RedHat Linux” decidió separar la misma en dos distribuciones independientes, una RedHat Enterprise Linux orientada hacia el mundo empresarial vendiendo soporte a las mismas y por otro lado el proyecto Fedora, una distribución creada en comunidad con releases liberadas cada pocos meses y sobre la que se experimentaría para posteriormente sacar de ella la distribución empresarial RHEL correspondiente.

La comunidad Fedora es abierta admitiendo a cualquier persona y distinguiendo los siguientes roles:
-Escritor de Contenidos: Su trabajo es idear y escribir los manuales, guías , blogs y artículos de la comunidad Fedora., para este rol, existen los siguientes grupos:

-Arte: Escribir tutoriales y artículos
-Documentación: Escriben la documentación de Fedora
-Noticias: Escriben el semanario de noticias Fedora
-Tipografías:  Documentar el uso de tipografías.
-Juegos: Documentar los juegos disponibles.
-Utilización: Documentación sobre la utilización de Fedora.

-Diseñador: Rol muy artítisco se encargan de diseñar dibujos, iconos etc para Fedora

-Diseño: Diseño de logos , dibujos etc propiamente dicho.
-Tipografías: Encontrar y crear nuevas tipografías
-Utilización: Mejorar la accesibilidad del sistema operativo Fedora.

-Relaciones Públicas: Los encargados de las relaciones públicas del proyecto Fedora:

-Embajadores: Promover Fedora en todo el mundo
-Tipografías: Reclutar autores de tipografías, o conseguir que autores de tipográfias las liberen para poder usarlas en Fedora.
-Juegos: Publicitar juegos para Fedora.
-Discos Gratis: Promover el programa “Discos Gratis” para distribuir de manera gratuita cd/dvs de Fedora.
-Mercadeo: Desarrollar estrategias de mercado para Fedora.
-Mentores: Actuar como mentor y ayudar a otras personas a colaborar en Fedora.
-Soporte / Ayuda: Ofrecer ayuda y soporte en las listas de correo de Fedora

-Desarrollador:  Son los desarrolladores del sistema operativo Fedora.

-Triage de errores: Rastrear y añadir errores al bug tracker de Fedora: bugzilla.redhat.com
-Infraestructura : Crear nuevas herramientas y servicios para Fedora.
-Internacionalización:  Desarrollos relacionados con la internacionalización de Fedora.
-Empaquetador: Mantenedor de paquetes de Fedora.
-Sitios web: Creación de sitios web para Fedora.
-Tipografías: Desarrollo de herramientas para crear nuevas tipografías.
-Juegos: Crear paquetes de juegos.
-Ciencia y tecnología: Deciden que paquetes del ámbito científico y tecnológico son incluidos en Fedora.
-Utilización: Mejorando las interfaces de usuario.
-Laboratorio electrónico de Fedora
-Pruebas: Pruebas del sistema opertivo. Para detectar bugs.

-Traductor: Encargados de traducir Fedora a muy diferentes idiomas

-Internacionalización: Mantener las traducciones de Fedora a los diferentes idiomas.
-Empaquetadores
-Tipografías: Selecciona las mejores tipografías para los diferentes idiomas.

-Desarrollador Web o Administrador: Encargados de desarrollador y mantener los sitios web de Fedora.

-Infraestructura: Desarrollo de herramientas y utilidades para el proyecto Fedora.
-Sitios Web: Creación de interfaces web para Fedora en Internet.

La comunidad de Fedora como otras comunidades de otras distribuciones de Linux tiene a disposición de sus miembros una gran cantidad de herramientas web para posibilitar el desarrollo del sistema operativo y poder mantener una comunidad estable y bien organizada:

-Foro: http://fedoraforum.org/
-Bug tracker: https://bugzilla.redhat.com/
-Listas de Correo: https://admin.fedoraproject.org/mailman/listinfo
-IRC: http://freenode.net/
-Wiki: https://fedoraproject.org/wiki
-FAQs: https://fedoraproject.org/wiki/FAQ-IRC

Publicado en mswl-dm | Etiquetado | Comentarios desactivados en Comunidad Fedora

Oracle versus Google

En 2010 Oracle demandó a Google por utilizar determinadas tecnologías patentadas en el sistema operativo para móviles Android, en concreto relacionadas con la tecnología Java y que les pertenecían desde que compraron Sun Microsystems en el año 2009 por 7.400 millones de dólares. En concreto el litigio hablaba de la violación de 7 patentes no muy conocidas de Java más una violación de la propiedad intelectual, poniendo en entredicho al propio sistema operativo Android, su SDK (Software Development Kit) y su máquina virtual Dalvik.

El objetivo de esta demanda realizada por Oracle no era que Google dejara de utilizar Java en Android, cosa que le perjudicaría enormemente , sino simplemente que Google pagara por utilizar sus patentes.

Con Java existe un problema histórico con su licenciamiento, Sun tenía que dar su aprobación sobre las distintas implementaciones de este lenguaje de programación para que pudieran demoninarse «java» , el objetivo de esto era evitar que diversas compañias crearan versiones de Java que se alejaran del estandar creado por Sun, como ocurrió cuando Microsoft sacó su propia implementación de Java y fue demandada por ello por Sun. Pero en 2006 Sun cambió el licenciamiento de Java a la GPL versión 2 lo que permitió que Java fuera incluido en sistemas operativos de código abierto.

Con Google el problema es que han creado algo que es compatible con Java, se parece a Java pero no es «Java» y es por ello por lo que puede estar violando determinadas patentes dado que ha creado algo que hace las mismas cosas que Java pero sin ser Java .

A principios de Mayo se ha dado a conocer un primer veredicto del jucio entre Google y Oracle iniciado en Abril, en él, el jurado manifestó que quedaba claro que Google había vulnerado el Copyright de las API de Java, pero también remarcaba que no quedaba aún claro si el uso de las APIs de Java por parte de Google quedaba dentro de lo que se consideraban «usos permitidos».

El juicio aún continuará durante varios meses poniendo en evidencia la complejidad legal a la que se puede llegar en el mundo del software cuando patentes, software-libre, open-source, privativo etc aparecen en escena todos juntos.

Publicado en mswl-legal | Etiquetado | Comentarios desactivados en Oracle versus Google

Alan Cox

Alan Cox es un programador británico muy involucrado en el desarrollo del nucleo de Linux, entre sus más importantes aportaciones están sus desarrollos relacionados con las redes y comunicaciones dentro del nucleo del sistema operativo, pilas de protocolos (TCP/IP) y solución de importantes bugs (la pila tcp/ip fue uno de los grandes proyectos del kernel de Linux en el que Linus Torvalds no tuvo el protagonismo en su desarollo, ya que las redes no eran su fuerte),  colaboró en gran medida para hacer estable el kernel de Linux (llego a tener una rama propia del kernel 2.4 de linux etiquetada como -ac) y trabajó en el soporte SMP (Symmetric Multi-Processors) del kernel, ha trabajo en muy diversas compañías como Cable Online  o 3Com , estuvo trabajando durante 10 años en Red Hat (1999-2009) ayudando a que esta compañia se haya establecido como una de las líderes en la distribución de Linux , allí ha estado trabajando hasta hace muy poco para irse a Intel (2011) con la itención de trabajar a más bajo nivel más cerca del hardware.

Alan ha colaborado en multitud de proyectos relacionados con el software libre como X.org el proyecto de interfaz gráfica de código abierto derivado de XFree86 , el entorno de escritorio  Gnome e incluso llegó a programar juegos como el AberMud , un juego de rol en línea de código abierto. A parte de su trabajo como desarrollador en el mundo del software libre Alan ha sido un gran defensor de los derechos y libertades de los programadores luchando por ejemplo contra las patentes de software (que limitan y vulneran esas libertades) o contra el Acta de Derechos de Autor Digitales del Milenio (DMCA) una ley de copyright de los EEUU que penaliza a aquellas tecnologías que permitan evitar las medidas de protección tipo DRM , también luchó contra la CBDTPA (Consumer Broadband and Digital Television Promotion Act) con el mismo objetivo que la DMCA de establecer medidas de proteccion de DRM (Digital Rights Management).Durante varios años fue mantenedor del subsistema TTY de Linux , tarea que dejó de realizar por las constantes críticas recibidas por parte de Linus Torvalds .

Como reconocimiento a su labor en el mundo del software libre fue premiado en el año 2003 con el Advancement of Free Software award otorgado por la Free Software Foundation y en 2005 también fue premiado en la conferencia LinuxWorld (OpenSource World  desde 2009).

Publicado en mswl-csi, mswl-dm | Etiquetado , | Comentarios desactivados en Alan Cox

Android, evolución

Este sistema operativo para dispositivos móviles fue inicialmente desarrollado por la empresa Android Inc., empresa de software ubicada en Palo Alto, California que fue adquirida por Google en el año 2005. Android se ha desarrollado con Google bajo la Open Handset Alliance (creada en 2007), un compendio de empresas (84) lideradas por Google con el objetivo de desarrollar estandares abiertos para el mundo de los dispositivos móviles

En Septiembre de 2008 Google sacó la primer versión de Android, la 1.0 (previamente en el 2007 había liberado una versión beta) , la versión 1.1 con algunos bugs solucionados apareció en 2009 , la 1.5 (Cupcake) basada en el kernel de Linux 2.6.27 se liberó en Abril de 2009 con la posiblidad de grabar y reproducir videos , mejoras en el soporte bluetooth y transiciones de pantallas animadas.

En Septiembre de 2009 apareció la 1.6 (Donut) sobre kernel Linux 2.6.29 con mejoras en el Android Market, en las búsquedas, soporte a mayores resoluciones, un framework de gestos etc. En Octubre de ese mismo año apareció la versión 2.0 (Eclair) con un nuevo interfaz de usuario, mejora en las resoluciones de pantalla , teclado virtual muy mejorado y mayor velocidad. Durante este mismo año 2009 aparecieron los entornos de desarrollo SDK 2.0 y 2.1

En 2010 se liberó la 2.2 (Froyo) sobre un kernel de Linux 2.6.32 con grandes mejoras del sistema operativo a nivel general y mayor velocidad . En Diciembre de ese mismo año surgió la 2.3 (Gingerbread) sobre Linux 2.6.35 con sistema de archivos ext4, una nueva interfaz gráfica mejorada  soporte para pantallas de mayor tamaño , mejoras en el teclado virtual e introducción de soporte nativo para los sensores como el giróscopo.

En 2011 salen la 3.0, 3.1 y 3.2 (Honeycomb) que estaban orientadas hacia el mercado de los tablets soportando pantallas grandes con mayores resoluciones, con grandes mejoras multitarea , añaden soporte a gran cantidad de dispositivos y perifércos externos, aceleración gráfica por hardware  y encriptación.

y finalmente tras sólo tres años desde la primera versión aparece la última de las versiones de Android, la 4.0 (Ice Cream Sandwich) una versión que intenta unificar el mundo Android de los tables (Honeycomb) con el de los teléfonos móviles (Gingerbread) incorporando muchas mejoras en cuanto a interfaz, multitarea, mejor soporte para muy diverso hardware , NFC (Near Field Communication) , aceleración por hardware etc.

Publicado en mswl-ad | Etiquetado | Comentarios desactivados en Android, evolución

Desarrollo en Android

Para el desarrollo de aplicaciones para este sistema operativo Google ha creado un entorno de desarrollo que proporciona una serie de herramientas y un framework  API necesario para el desarrollo y testeo de aplicaciones bajo el kit de desarrollo Android SDK (Software Development Kit) basado en el IDE Eclipse haciendo uso del plugin ADT (Android Development Tools).

El kit SDK incluye un emulador virtual de móvil android para poder probar las aplicaciones sin necesidad de tener un dispositvo móvil físico, puede emular diferentes versiones de Android gracias al AVD (Android Virtual Device ) que permite configurar el móvil virtual con diferentes características hardware y comprobar la compatibilidad de la aplicaciones desarrolladas en los diferentes entornos y versiones de Android. Además proporciona simulaciones de determinados dispositivos como la cámara de fotos, el GPS, o el acelerómetro.

Un framework API consiste en :

– Un conjunto de paquetes y clases
– Un conjunto de elementos xml y atributos para generar un fichero manifest
– Un conjunto de elementos xml y atributos para declarar y acceder a recursos
– Un conjunto de Intents
– Un sistema de permisos que defina a que elementos o recursos puede acceder una aplicación o que tareas puede realizar.

Principales paquetes contenidos en la API de Android:

android.app:  Paquete de alto nivel que proporciona acceso al modelo de aplicaciones, este paquete incluye clases básicas de las aplicaciones android como Activity o Service.
android.bluetooth : Acceso a bluetooth.
android.content: Acceso a datos del dispositivo y sus recursos.
android.database: Contiene clases de bajo nivel para acceder a bases de datos.
android.database.sqlite: Para acceder a la BBDD Sqlite
android.graphics : Clases para diseño gráfico de todo tipo.
android.hardware:  Acceso al hardware del teléfono: como la cámara, acelerómetro , compas etc.
android.location: Clases del sistema de localización y posicionamiento.
android.media : Para manipular audio y video.
android.net: Clases de acceso a la red.
android.net.wifi:  Clases para manejar el Wifi
android.os : Funciones del sistema operativo
android.opengl : Clases para rendering 3D utilizando OpenGL
android.preference: Gestión de las preferencias de la interfaz de usuario.
android.provider: Clases de acceso a determinados Contents Providers.
android.text: Clases de procesamiento y parseo de texto.
android.telephony  : Acceso y gestión del teléfono.
android.util: Paquete de utilidades de bajo nivel como formateadores de strings o parseo de XML.
android.view: Clases para el diseño de las interfaces gráficas de la aplicación.
android.webkit:  Clases para acceder y crear contenido web.
android.widget:  Clases para diseñar elementos gráficos para interactuar con el usuario.
com.google.android.maps: API de alto nivel con una serie de clases para acceder y manipular los mapas de Google.

API Levels de Android

Como método de gestionar las sucesivas versiones del framework API que van surgiendo se han creado una serie de niveles que identifican la versión de API que estamos utilizando en cada momento, cada nivel se identifica con un número y cada nueva versión es compatible con las anteriores dado que por lo general los cambios que se introducen son paquetes nuevos que no existían con anterioridad o modificaciones que no afectan en exceso a desarrollos en versiones anteriores de la API.

Podemos especificar la versión concreta de API para la que se ha diseñado la aplicación o la mínima versión o level que necesita nuestra aplicación así como el máximo que soporta utilizando el tag <uses-sdk> dentro del AndroidManifest.xml:

android:targetSdkVersion: Especifica concretamente para que nivel de API se ha diseñado la aplicación.
android:minSdkVersion:  Especifica el mínimo nivel de API necesario para que la aplicación funcione, por defecto es 1
android:maxSdkVersion:  Especifica el máximo nivel de API en el cual la aplicación puede funcionar.

ejemplo de <uses-sdk> en el AndroidManifest.xml:

<?xml version=»1.0″ encoding=»utf-8″?>
<manifest …>
<uses-sdk android:minSdkVersion=»10″ />
…..
</manifest>

API levels y su correspondencia con la versión de Android:

Platform Version                    API Level
Android 4.0.3                                     15
Android 4.0, 4.0.1, 4.0.2                   14
Android 3.2                                         13
Android 3.1.x                                      12
Android 3.0.x                                      11
Android 2.3.4, 2.3.3                           10
Android 2.3.2,2.3.1, 2.3                     9
Android 2.2.x                                       8
Android 2.1.x                                       7
Android 2.0.1                                       6
Android 2.0                                          5
Android 1.6                                          4
Android 1.5                                          3
Android 1.1                                          2
Android 1.0                                          1

Publicado en mswl-ad | Etiquetado | Comentarios desactivados en Desarrollo en Android

Dalvik: la máquina virtual de Android

Dalvik es una process VM ( Process Virtual Machine) , también llamada application virtual machine, es gestionada y ejecutada como cualquier otra aplicación, pero su función es la de proporcionar un entorno de programación independiente de la plataforma que permita obviar el hardware instalado por debajo y posibilite ejecutar los programas realizados para ella en cualquier tipo de plataforma sin tener que realizar modificación alguna. Utiliza el modelo de compilación just-in-time compilation (JIT, compilación en tiempo de ejecución) que es un híbrido entre los lenguajes interpretados y los compilados y que consiste en traducir el bytecode a código máquina nativo en tiempo de ejecución lo que mejora el rendimiento considerablemente.

 
Dalvik que es distribuida como software libre (bajo licencia Apache 2.0) fue diseñanda por Dan Bornstein junto con otros diseñadores de Google específicamente para el sistema operativo de móviles/tabletas Android, está optimizada para tener bajos requerimientos de memoria y permitir múltiples instancias de la VM funcionando de manera simultánea, dejando para el sistema operativo subyacente tareas como la gestión de la memoria y la gestión de procesos e hilos. Dalvik utiliza un bytecode muy similiar pero no igual que el Java Byte Code por lo que en la práctica no son compatibles, por lo que es necesario que las clases .class sean transformadas por una utilidad llamada dx (incluida en el Android SDK) que las transforma en el Bytecode de Dalvik en clases .dex, las cuales finalmente son comprimidas en ficheros .apk que son los que conforman los paquetes de Android.

 
Dalvik es una máquina virtual de registro a diferencia de la Java VM que es una máquina virtual de pila, las máquinas virtuales de registro tienen como modelo a la máquina de Turing con uno o más registros que sustituyen a la cinta y el cabezal utilizado en dicha máquina teórica. Las máquinas virtuales de pila sin embargo utilizan una o más pilas como forma de utilizar la memoria de la máquina y su ventaja respecto a VM como la de registro reside en que generalmente tienen una mayor densidad de código lo que facilita la lectura, pero las máquinas de registro al basarse en estos últimos suele decirse que son más rápidas que las de pila dado que estas últimas se basan en memoria, aunque existen máquinas de pila que incluyen cachés en registros para acelerar la ejecución todo lo posible.

 
La creación de esta máquina virtual por parte de google para su sistema operativo Android ha permitido tener una VM muy bién adaptada a las características de los dispositivos móviles con sus limitaciones de memoria , procesamiento y batería y ha permitido a Google mantener un cierto grado de independencia respecto a otras tecnologías como Java y su máquina virtual JVM.

Publicado en mswl-ad | Etiquetado | Comentarios desactivados en Dalvik: la máquina virtual de Android

Fragmentación en Android

Paralelamente a la rápida y gran evolución del sistema operativo Android ha surgido un problema que poco a poco está empezando a preocupar a sus desarrollores, usuarios y fabricantes de teléfonos móviles, es la llamada «fragmentación de Android» , que refiere a la coexistencia de diferentes versiones del Android sobre muy diferentes terminales móviles lo que supone un completo ecosistema de sistemas Android con sus problemas de compatibilidades entre ellos y sus necesidades de actualización a versiones superiores del sistema operativo creado por Google.

En el mundo de los ordenadores personales donde los últimos veinte años han estados dominados por Microsoft y su sistema operativo Windows, sólo había como mucho dos versiones de dicho sistema funcionando en el mercado, además al ser software privativo no se versionaba y por ello no había problemas de este tipo, había una homogeneización muy grande en cuanto a los ordenadores personales.

Con el sistema operativo Android se dan dos circunstancias, la primera es que hay una gran cantidad de fabricantes de teléfonos móviles y con muy distintos tipos de estos que van evolucionando muy rápidamente, la otra es que Android es Software Libre y eso supone como está ocurriendo actualmente que cualquier fabricante de teléfonos puede versionear el sistema operativo para adaptarlo a su hardware. La frenética evolución del mercado de dispositivos móviles junto con estas dos circunstancias está haciendo que el número de versiones del sistema operativo Android que conviven en la actualidad presente muchos problemas de estandarización , compatibilidad y pone muchos inconvientes a la hora de que un usuario pueda tener su movíl correctamente actualizado.
Frente a este problema de díficil solución Google ha sacado su propio móvil Galaxy Nexus con el objetivo de poder proporcionar al usuario un móvil que podría actualizarse a cualquier versión nueva de Android que pudiera surgir para poder disponer de un smartphone siempre al día y actualizado. Otra posible solución que ha surgido en algunos proyectos de software libre para poder hacer frente a la fragmentación y los problemas de compatiblidad provocados por ello es la división en dos proyectos del software en cuestión, siendo uno de código cerrado y gratuito y el otro siendo software libre, pero de momento Google no ha cambiado de estrategia más que la creación del Galaxy Nexus y la unificación de las versiones de Android para Tablets y Móviles en la última versión 4.0 ((Ice Cream Sandwich).

Publicado en mswl-ad | Etiquetado | Comentarios desactivados en Fragmentación en Android

Debian Community

El proyecto Debian surgió cuando Ian Murdock, un estudiante de la universidad de Purdue (Indiana, EEUU) y tras escrbir el “Manifiesto Debian” con su visión de lo que debería de ser un Sistema Operativo siguiendo el estilo GNU, se embarcó (1993) en la creación de una distribución Linux con Debian como nombre, sus primeros pasos surgieron a lo largo de 1994 y ayudado por la FSF (su sponsor duró un año) , pero no fue hasta 1996 cuando apareció la primera versión , ese mismo año Bruce Perens sustituyó a Ian como lider del proyecto hasta Diciembre de 1997, momento en que se retiró (fue el autor de la definición de “Código Abierto” y cofundador junto con Eric S Raymond de la OSI “Open Source Initiative”) y acabó como desarrollador en Pixar como experto en animación. Muchos han sido los líderes que ha tenido el proyecto Debian puesto que se eligen cada año pero es un cargo menos “absolutista” comparado con otras comunidades Linux , la comunidad Debian, en la que existen diferentes roles con derecho a voto (desarrolladores, lideres de proyecto,Comité Técnico,Release Manager…), basa sus principios en lo que denomina el “Contrato Social” que junto con las “Directrices de software libre de Debian” establecen los princpios básicos que fundamentan el proyecto, como su ferreo compromiso con el software libre , su orientación al usuario, su transparencia con los errores y problemas etc. Las votaciones se realizan por el Método Schulze , método que consiste en seleccionar a una personas en base a votos que expresan preferencias.

Debian es una comunidad bastante abierta, se puede colaborar de manera no oficial (sin ser desarrollador Debian oficial) pudiendo hacer traducciones, crear documentación, ayudar con la página web, localización de bugs etc. de ahí se puede pasar al rol de “Mantenedor de Debian” que son desarrolladores con restricciones para subir paquetes a los repositorios de Debian y que para poder hacerlo necesitan de un Sponsor (Miembro de Debian con dererchos de subida de modificaciones a los repositorios de Debian). Pasado un tiempo de contribuciones a traves del Sponsor, un Mantenedor puede pasar a ser “Desarrollador Oficial de Debian” siendo un miembro de pleno derecho de la comunidad , teniendo derecho a voto , acceso a todos los sistemas de Debian , derechos de subida de modificaciones de todos los paquetes Debian y total acceso a todas las listas de correo.

Debian ha alcanzado la cifra de 1.000 desarrolladores ha conseguido implantarse en muy diferentes arquitecturas ( incluso se ha aventurado a adaptarse al inacabado nucleo Hurd de GNU) y ha conseguido además obtener el apoyo y colaboración de empresas como HP o Sun Microsystems.

Publicado en mswl-dm | Etiquetado | Comentarios desactivados en Debian Community

Robert McCool

Robert McCool es un desarrollador famoso por ser el creador en 1994  (junto con otros colaboradores) del NCSA HTTPd  un servidor web (origen del actual Apache web server) desarrollado en el National Center for Supercomputing Applications en los Estados Unidos (donde también se desarrolló el navegador Mosaic), fue un servidor muy popular hasta que Robert abandonó el NCSA y el proyecto quedó en una vía muerta . De manera paralela surgió un grupo de desarrolladores (entre los que estaban Brian Behlendorf y Cliff Skolnick) que habían estado desarrollando módulos y bug fixes para dicho servidor y que quisieron rescatar el proyecto, crearon una lista de correo y utilizando el NCSA httpd 1.3 como base y la gran cantidad de módulos que se habian desarrollado lanzaron la que fué la primera versión de Apache, la 0.6.2 en abril de 1995.

Apache surgió como una serie de módulos o parches que se montaban sobre el NCSA server de manera que tiene un estructura totalmente modular cada uno con una funcionalidad concreta (mod_perl, mod_security, mod_auth_ldap…).

Además Robert trabajó para Netscape y en el proyecto TAP y fue colaborador en la creación del estandar CGI (Common Gateway Interface) que permite que desde una nevagador web se puedan ejecutar programas en el servidor web y que este devuelva los resultados al navegador en formato HTML.

Publicado en mswl-dm, mswl-intro | Etiquetado , | Comentarios desactivados en Robert McCool

Dominio Público

Refiere al conjunto de bienes y derechos de titularidad pública no poseidos de forma privativa , pero en el contexto de la propiedad intelectual refiere más concretamente a obras cuyos derechos de propiedad intelectual han caducado , se han perdido por una razón legal o símplemente porque el autor ha cedido todos los derechos (excepto el de autoría que no es cedible ni expira nunca), no requieren de ninguna licencia y en el caso de software sólo pueden ser considerados como software libre si vienen acompañados del código fuente.

A pesar de que no es necesaria ninguna licencia para las obras de dominio público, para el caso de autores que quieran ceder los derechos y hacerlo al amparo de alguna licencia de Software libre Creative Commons por ejemplo ha creado una licencia a tal efecto denominada CC0 (Creative Commons Zero) que es más adecuada para el caso de cesión total de los derechos de una obra:

«The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.

You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.»

La obra, esta exenta de patentes y salvo que se especifique lo contrario se ofrece sin ninguna garantía y el licenciante está exento de responsabilidades para cualquier uso que se haga de de la obra (dentro de la legalidad vigente).

Publicado en mswl-intro, mswl-legal | Etiquetado , | Comentarios desactivados en Dominio Público

Miguel de Icaza

Miguel de Icaza es un referente en el desarrollo de software libre , inició su andadura en este área colaborando con el proyecto GNU, en concreto desarrollando el gestor de ficheros Midnight Commander en modo texto y que está incluido en la mayoría de las distribuciones Linux, en 1997 junto con Federico Mena fundaron el proyecto GNOME en respuesta a la necesidades de tener un entorno gráfico totalmente libre dado que en aquella época sólo existía el proyecto KDE para dotar de un entorno de escritorio al sistema operativo GNU/Linux y este hacía uso del framework propietario Qt (de la compañia Trolltech) que no era software libre, por lo que el proyecto GNOME apareció para cubrir esa necesidad, en 1999 fundó la empresa Ximian que se dedicaba a la creación de software libre para Linux y Unix que fue comprada por Novell en el 2003 donde trabaja en la actualidad dirigiendo el proyecto Mono que tiene por objetivo desarrollar herramientas de software libre compatibles con .NET para GNU/Linux, un proyecto que empezó a gestarse con GNOME con la intención de hacer el proyecto independiente de la plataforma y el lenguaje de programación gracias a su API GNOME que está disponible en multitud de lenguajes como C++, Perl o Python.

Publicado en mswl-cases, mswl-csi, mswl-dm, mswl-intro | Etiquetado , , , | Comentarios desactivados en Miguel de Icaza

Licencias de Software Libre de Microsoft

Microsoft bajo el nombre de Shared Source ha creado una serie de licencias para básicamente distribuir el código fuente de determinadas aplicaciones y utilidades, algunas de ellas entran dentro de la definicion de sofware libre y de hecho han sido aprobadas tanto por la OSI como por la FSF, permitiendo redistribuir y modificar el software tanto para fines comerciales como fines no comerciales.

Microsoft Public License (Ms-PL)
Anteriormente la Microsoft Permissive License , es la licencia menos restrictiva de las que proporciona Microsoft, permite ver,modificar y redistribuir el código fuente ya sea con fines comerciales como no comerciales, esta licencia es utilizada para principalmente licenciar herramientas de desarrollo de Microsoft.

Microsoft Reciprocal License (Ms-RL)
Esta licencia es como la Ms-PL pero exige que que en la distribución se mantenga la licencia Ms-RL (es de las denominadas reciprocas) pero no es compatible con la GPL. En el caso de combinar código Ms-RL con código con otras licencias , la licencia de manera ánaloga a por ejemplo la Licencia Publica de Mozilla afecta a cada archivo de manera independiente teniendo un comportamiento parecido a la Lesser GPL.

El resto de licencias denominadas como Shared Source no entran dentro del concepto de software libre son la Ms-LPL que es sólo para desarrollos basados en Windows por lo que no se considera tecnológicamente neutral, la Ms-RSL que sólo permite ver el código fuente pero sin poder ser redistribuido ni modificado, y la Ms-LRL que es igual que la licencia recíproca  Ms-RL pero sólo para desarrollos para Windows por lo que tampoco se considera software libre al no ser tecnológicamente neutral.

Publicado en mswl-intro, mswl-legal | Etiquetado , | Comentarios desactivados en Licencias de Software Libre de Microsoft

Nuevo Kernel de Linux 3.0 y 3.1

Linus Torvalds anunció el pasado 24 de Octubre la salida de la versión 3.1 del kernel de Linux, con la que se conmemoran los 20 de años de este sistema operativo libre y que cuenta como nuevas características:

– Soporte para OpenRISC : Es una implementeación de CPU RISC de especificación libre .
– Defragmentación automática y scrubbing (técnica de correción de errores en memoria) de datos
en Btrfs (Sistema de archivos que mejora al actual sistema ext3 sin por ejemplo la limitaci
ón de tamaño máximo de archivo ).
– Wake On Lan,  que permite encender remotamente un ordenador desde la red
– Nuevo sistema de caché de páginas memcached mediante una tabla hash distribuida.
– Nuevos driver para una gran cantidad de hardware de muy diversos fabricantes (http://kernelnewbies.org/Linux_3.0_DriverArch)
– Mejor soporte para varios soportes gráficos
– Soporte para NFC (near-field communication ) , es una tecnología de comunicación inalámbrica de corto alcance y alta frecuencia entre dispositivos a menos de 10 cm
-Filtrado de paquetes BFP  (Berkeley Packet Filter)

Lista completa de cambios: http://kernelnewbies.org/Linux_3.0
Anuncio de Linus Torvalds, 3.0: https://lkml.org/lkml/2011/7/21/455  y 3.1 : https://lkml.org/lkml/2011/10/24/212

Publicado en mswl-csi, mswl-intro | Etiquetado , | Comentarios desactivados en Nuevo Kernel de Linux 3.0 y 3.1

GPL versión 3

La licencia GPL GNU General Public License apareció en su primera versión en el año 1989 y unificaba la licencia de Emacs (primer licencia copyleft de 1986) y la del compilador gcc, permitió hacer frente a las dos formas que había reestringir las libertades planteadas en el software libre, la distribución exclusiva de los binarios del programa y la addición de reestricciones a la licencia que limitaban los derechos de los usuarios o la combinación con otros software que tenía reestricciones incompatibles con la filosofía del software libre.

En 1991 se revisa y surge la versión 2 con el fin de hacer frente a los nuevos desafios tecnológicos, el cambio más importante es la claúsula “Liberty or Death” para intentar luchar contra las patentes, haciendo hincapié en que si se imponen reestricciones que limiten o reestringan las libertades  o derechos de los usuarios no se podrá distribuir ese software de ninguna manera bajo este tipo de licencia. Debido a los problemas que las licencias reestricitivas como la GPL podían provocar  al fomento y difusión de las librerias  (dado que su inclusión en un software provocaba la transformación de todo el software en GPL e impedía la generación de productos privativos) , apareció a la par que la GPL v2 la LGPL (inicalmente llamada Library General Public License, más tarde renombrada por Lesser General Public License para destacar su menor idoneídad por su menor protección de la obra) , la misión de esta nuevo licencia era dar un poco de flexibilidad y ser algo menos reestrictiva para fomentar el uso de las librerías. (en concreto se pensó para que las librerías gcc fueran utilizadas por todo el mundo y se conviertieran en un estandar ).

La última versión , la tercera, apareció en 2007 tras varios borradores y consultas públicas , se realizaron varios cambios y mejoras entre ellos se hizo más sencilla de entender y:

– Internacionalización: las anteriores hacía referencia a aspectos legales en Estados Unidos, mientras que la versión 3 es más internacional.
– Patentes: se añade una defensa para luchar contra el cruce de licencias de patentes.
– Se elimina la sección de “Limitaciones Geográficas”
– Tivoization: Clausula para luchar contra la distribución de software en dispositivos que son innacesibles internamente y no se puede modificar su contenido.
– Anti-DRM: Claúsula para luchar contra las limitaciones y reestricciones que imponen estos mecanismos de control de acceso (Digital Rights Management)
-Compatibilidad: La versión era excesivamente reestrictiva y la hacía incompatible con licencias como la de Apache (que tenía gran difusión) porque no eran aceptadas ningún tipo de reestricción o clausual añadida a la licencia, con la versión 3 se permitian nuevas claúsulas o reestricciones siempre que no contravinieran a ninguno de los derechos expuestos en la misma licencia. Esto da una gran flexibilidad a la licencia, sin perder protección de las libertades de los usuarios.

Simultáneamente pero por separado se pone solución a otro problema surgido en los últimos años con el software libre que se accede y se utiliza desde internet en servidores de red  (en ocasiones sin darnos ni siquiera ni cuenta) , este software a primera vista escapa del control de las licencias de software libre habituales , para ello se crea una licencia específica totalmente compatible con la GPL v3, la AGPL v3 (Affero General Public License) que incluye una claúsula que obliga a distribuir el software si es ejecutado a través de servicios de red.

Publicado en mswl-intro | Etiquetado | Comentarios desactivados en GPL versión 3

Licencias GNU de documentación libre

Dentro del conjunto de licencias de software libre proporcionadas por la Free Software Foundation (recordemos que son la GPLv1,v2,v3 , la LGPLv2.1 y v3, y la AGPLv3) están las licencias de documentación libre GFDLv1.3,v1.2 y v1.1, este tipo de licencia es algo compleja con bastantes claúsulas (que a veces la hacen inaplicable) actualmente está disponible en las tres versiones, es una licencia de documentación libre como su propio nombre indica (es la primera licencia libre que se creó para contenidos que no tenía que ver forzosamente con el software) , fue creada a finales de los 90 partiendo de la base de la GPL y adaptándola al mundo de la documentación , los manuales y textos en general, los cuales no tenían porque ser del mundo de la informática (aunque inicialmente se creó para licenciar toda la documentación del proyecto GNU), podía ser  para cualquier tipo de texto o documento con cualquier tipo de contenido.

Entre sus características:

-Esta licencia de documentación de la misma manera que las licencias de software libre proporcionan el derecho copiar,redistribuir, y modificar.

-Tiene clausula Copyleft que exige que las copias y derivados sean distribuidos bajo la misma licencia.

-Incorpora una claúsula anti DRM (tecnologías de control de acceso o modificación)

-Exige que se mantengan las notas de copyright de las versiones anteriores , aspecto polémico porque requiere que el documento lleve un historial completo de copyrights que puede llegar a ser muy largo.

-Permite la existencia de “secciones invariantes” que impide que se modifiquen determinadas secciones (salvo permiso del autor original) característica esta última muy polémica que hace que no sea considerada como libre por algunas asociaciones de software libre. Realmente las secciones invariantes se limitan a la portada, el indice, etc pero es dificil saber que puede y que no puede ser una sección invariante.

-No es compatible con la GPL ni con ninguna de las licencias Creative Commons (ni siquiera con la ShareAlike)

-Distingue entre copias transparantes ( en las que el usuario dispone de lo que podríamos llamar código fuente del documento, por ejemplo en un documento pdf el fuente  podría ser el fichero latex asociado) y la copia opaca (que sería tener sólo el pdf ), aunque esto ha creado problemas porque en ciertas obras no queda claro la diferencia, y hace dificil su distribución, por ejemplo en obras musicales significaría que tendrías que distribuir la partitura por ejemplo.

-Tiene reestricciones sobre si se pueden o no hacer copias en papel y el número de copias que se podrían realizar.

– Se requiere que se incluya el texto completo de la licencia en la obra licenciada.

Entre los usuarios más importantes está la Wikipedia que la utilizó en 2001 como base legal para todos sus articulos, entre otras cosas porque no había ningun otro tipo de licencias para documentos o textos no forzosamente informáticos (Creative commons el otro grupo importante de licencias para textos y documentos nació posteriormente en 2002-2003), pero dada la complejidad de la licencia , que era poco práctica ,que estaba orientada a obra técnica y que se estaba expandiendo el uso de la CC-by-sa (que también es copyleft y con la que no era compatible) provocaron que se estudiara una migración masiva de todos los artículos (previa votación entre los autores de la propuesta) de la Wikipedia a la licencia CC-by-sa que fue posible gracias a que en la Wikipedia se hacia uso de la licencia GFDL 1.2 “or later”, ese “or later” hizo posible el relicenciamiento gracias a que la FSF sacó la versión v1.3 de la GFDL en la que decía en una clausula que esta licencia era compatible con la CC-by-sa, sin embargo la FSF puso una condiciín y es que hubiera un plazo de tiempo para realizar el cambio fuera del cual no se pudieran relicenciar las obras GFDL a CC-by-sa.

Traducción no oficial GFDL: http://docs.danexlandia.com.mx/gfdl/gfdl_es.f.html

http://www.gnu.org/licenses/fdl-1.3.html

http://www.gnu.org/licenses/fdl-1.2.html

http://www.gnu.org/licenses/fdl-1.1.html

Publicado en mswl-intro, mswl-legal | Etiquetado , | Comentarios desactivados en Licencias GNU de documentación libre

Gnome

Gnome es un entorno de escritorio con interfaz gráfica de usuario , es cien por cien software libre , forma parte del proyecto GNU y su más importante area de actuación es en el entorno del sistema operativo Linux.

El desarrollo de entornos de escritorio basados en software libre arranca con la creación en 1996 del proyecto KDE creado por Matthias Ettrich con el objetivo de crear una interface gráfica para entornos Unix , agradable y fácil de utilizar , para su realización se utilizó el Qt framework perteneciente a la compañía Trolltech que no era software libre lo que provocó varios intentos de crear nuevos entornos de escritorio que si fueran cien por cien software libre, por ello en 1997 aparecieron proyectos como Harmony (un widget toolkit), un set de herramientas libre que pretendía sustituir al Qt framework pero que desapareción en el 2000 y también surgió el proyecto Gnome iniciado por Miguel de Icaza y Federico Mena, un desktop completamente nuevo y libre que no utilizaba las librerías de Qt , sino las librerías GTK+, un widget toolkit licenciado con la LGPL .

A finales del 2000 las librerías Qt se pudieron licenciar mediante la GNU/GPL que hizo que KDE no dependira más de software no libre.

El nombre de GNOME corresponde al acrónimo de GNU Network Object Model Environment porque la intención inicial era la de tener un sistema de objetos distribuido libre similar a Microsoft OLE , como el desarrollo final del proyecto no se correspondía con ese acrónimo finalmente se pasó a llamar símplemente Gnome.

Desde que surgieron KDE y GNOME han estado compitiendo por el dominio en los entornos de escritorio del sistema operativo Linux y han ido ganando y perdiendo adeptos en las sucesivas versiones que han ido sacando.

El entorno de Gnome ha sido realizado gracias a GTK+, un widget toolkit que fue creado inicialmente para la creación de GIMP ( GTK significa Gimp Toolkit) que significa GNU Image Manipulation Program un pograma de diseño gráfico creado por Spencer Kimball y Peter Mattis en la universidad de Berkeley y actualmente es mantenido por la comunidad del proyecto GNU.

GTK+ es un widget toolkit orientado a objetos escrito en lenguaje C , se denomina widget (widget viene de window gadget) o control a cualquier elemento que forma parte de una interfaz gráfica de usuario que presenta información que puede ser manipulada gráficamente por el usuario. Cada tipo de widget representa normalmente a una clase en el entorno de la programación orientada a objetos del lenguaje que se esté utilizando, existiendo por tanto la clásica herencia de la OOP en widgets que derivan unos de otros. Los widget pueden responder a eventos y realizar acciones respondiendo a ellos , también se pueden activar o desactivar (para que no respondan a eventos) mostrándose graficamente distintos según el estado en el que estén. No hay que confundir los Widget (a veces denominados GUI Widgets para diferenciarlos) con los Desktop Widget que son básicamente una serie de applets o pequeñas aplicaciones gráficas que funcionan como add-ons sobre un widget engine como por ejemplo los Plasmoides de KDE, los Microsoft Gadgets, los Dashboards de Apple Mac, Portlets de Google , los gdesklets, adesklets, y Screenlets de Linux, y muchos otros que aparecen sobre navegadores web ,dado que estos forman parte de los llamados widget engines.

Las principales librerías que forman GTK+ son:

Glib:Es la librería básica de GTK, es la de más bajo nivel consta de:

  • Glib: con los tipos básicos, gestión de memoria, de cachés etc.
  • GObjet: que proporciona orientación a objetos en C.
  • Gio: para acceso a ficheros y operaciones de entrada salida.

Gtk: Con los objetos para crear la interfaz de usuario.

  • Windows
  • Display Widgets
  • Button and Toggles
  • Numeric/Text data entries
  • Multiline text editor
  • Tree, List and Icon Grid Widgets
  • Menus, Combo Box, Toolbar
  • Action-based menus and toolbars
  • Selectors (File/Font/Color/Input Devices)
  • Layout Containers
  • Ornaments
  • Scrolling
  • Printing

Gdk: (Gimp Drawing Kit) Librería de bajo nivel que trabaja entre el servidor X y la biblioteca GTK, proporciona la portabilidad de GTK permitiendo que funcione bajo diferentes sistemas operativos.

Atk: Librería para mejorar la accesibilidad y uso de la interface, muy importante para personas con alguna discapacidad.

Pango: Para la renderización de texto, soporta practicamente la totalidad de los sistemas de escritura, y se integra perfectamente con Cairo.

Cairo: Librería para el renderizado 2D, proporciona imágenes basadas en gráficos vectoriales, está escrito en C pero se puede encontrar disponible en otros lenguajes. Utiliza una especial forma de organización basada en sustantivos y verbos , los sustantivos son entidades abstractas sobre los que operan los verbos.

Referencias:
http://www.gtk.org/
http://developer.gnome.org/gtk/stable/
http://es.wikipedia.org/wiki/GTK

Publicado en mswl-csi, mswl-devtools, mswl-intro | Etiquetado , , | Comentarios desactivados en Gnome

Git

Git es un sistema de control de versiones, fue desarrollado por Linus Torvalds,  en lenguaje C , lo que lo diferencia de otros sistemas como Subversion o SVN principalmente es que Git es distribuido , eso significa que no existe una dependencia de un servidor central que lleve todo el control de versiones sino que cada directorio de trabajo local de cada desarrollador es un sistema completamente funcional. lo que hace que sea una herramienta muy util tanto para el trabajo en equipo como para el desarrollo infividual.

Inicialización

La creación de un repositorio es una tarea bastante sencilla, simplemente hay que situarse en un directorio y ejecutar el comando:

$ git init
Initialized empty Git repository in .git/

Esto crea e inicializa un repositorio vacio creando un directorio oculto .git en el directorio actual.

Configuración de  información de usuario que aparecerá en todos los commits:

$ git config --global user.name 'Antonio'
$ git config --global user.email "micuentaCorreo@server.com"
$ cat $HOME/.gitconfig
[user]
name = Antonio
email = micuentaCorreo@server.com

Una vez hecho esto podríamos o clonar un reposotirio externo en local y/o empezar a añadir ficheros a nuestro repositorio.

git clone [URL]

Snapshoting

git add:  Añade ficheros a la staging area
git status -s  : Te permite ver el estado actual .  la s es para la salida short.
git diff:  Muestra las diferencias entre lo que está staged  y lo que se acaba de modificar
git diff –stat    : Saca sólo un resumen de cambios
git diff –cached –stat : Saca diferencias entre el último commit y las modificaciones que se acaban de realizar.
git diff HEAD –stat : Muestra las diferencias entre el workspace y el último commit ignorando el stage area.
git commit -m «Mensaje»:  Almacena el estado actual del staging area.
git commit -a  : Evita tener que hacer add antes de hacer el commit.
git reset HEAD — <fichero> :  Te permite sacar un fichero del staging area
git rm [-r] [-f] –cache —  :  Elimina un fichero del staging area y del workspace local , con el -r borra directorios completos, con -f fuerza el borrado, con la opción –cache sólo borra del stage pero no del workspace local.
ejemplos:

$ ll
total 96
-rwxr-xr-x 1 ant root  9 oct 11 11:58 script1.py
-rwxr-xr-x 1 ant root 12 oct 11 11:58 script2.py
-rwxr-xr-x 1 ant root 21 oct 11 11:58 script3.py

Añado los ficheros

$ git add script1.py
$ git add script2.py
$ git add script3.py
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file: script1.py
#       new file: script2.py
#       new file: script3.py
#
$

Si me creo un fichero nuevo (crawler.py) y modifico los script anteriores, al hacer git status me devuelve esto:

$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file: script1.py
#       new file: script2.py
#       new file: script3.py
#
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#       modified:   script1.py
#       modified:   script2.py
#       modified:   script3.py
#
#
#  Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       crawler.py

Como he modificado el contenido de los scripts debo de volver a hacer un git add

$ git add script1.py
$ git add script2.py
$ git add script3.py

Puedo sacar un fichero del stage

$git rm -f script1.py    : Si quiero eliminarlo totalmente, del stage y del workspace
$git rm --cache script1.py : Si sólo quiero eliminarlo del stage pero mantenerlo en disco.
rm 'script1.py'
$ ll
total 128
-rwxr-xr-x 1 ant root 3728 oct 11 12:02 crawler.py
-rwxr-xr-x 1 ant root 3084 oct 11 12:02 script1.py
-rwxr-xr-x 1 ant root 2575 oct 11 12:03 script2.py
-rwxr-xr-x 1 ant root 2886 oct 11 12:03 script3.py
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file: script2.py
#       new file: script3.py
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       crawler.py
#
#script1.py

Tras sacarlo del Stage el fichero script1.py aparece como «Untracked»

Hago efectivos los cambios con un commit

$ git commit -m "Subida Inicial de Scripts Python"
Created initial commit 66b893f: Subida Inicial de Scripts Python
3 files changed, 289 insertions(+), 0 deletions(-)
create mode 100755 script1.py
create mode 100755 script2.py
create mode 100755 script3.py
$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       crawler.py
nothing added to commit but untracked files present (use "git add" to track)
$

Veo el log del commit con git log

$ git log
commit 66b893fe8ef4d541b133924bf6afc34eb14392d1
Author: Antonio <micuentaCorreo@server.com>
Date:   Tue Oct 11 13:14:22 2011 +0200
Subida Inicial de Scripts Python

Si despues de haber hecho un commit, modifico el scrip1.py

$ git diff --stat
script1.py |    3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#       modified:   script1.py
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       crawler.py no changes added to commit (use "git add" and/or "git commit -a")
$

pero si hago un git diff –cached no me saca diferencias porque no he hecho un git add de los cambios:

$ git diff --cached --stat
$

Tras haber hecho el add

$ git add script1.py
$ git diff --cached --stat
script1.py |    3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

y ahora es el git diff normal el que no me muestra cambios

$ git diff --stat
$

Branching

git branch :   Saca la lista de branches, cuando creamos un repositorio se crea un branch maestro inicial llamado «master»
git branch -r : Saca la lista de branches remotos: Remote-tracking branches
git branch <nombre>:   Crea un branch
git branch -d  <branch> :  Borra un branch
git checkout -b <branch>  :  Crea un branch y cambia el branch actual en uso.
git checkout <branch> : Nos permite cambiar el branch actual en uso.
git merge : Incorpora los cambios de un branch en el branch actual.
git log : Muestra la historia de commits de un branch
git tag -a <NombreEtiqueta> <HashDelCommitAEtiquetar>: Marca y almacena el estado actual de todos los ficheros del branch con un identificador o tag.

Veo los branch disponibles

$ git branch
* master

Creo un nuevo branch

$ git branch python-tests
$ git branch
* master
  python-tests

Creo dos scripts nuevos

$ ll
total 192
-rwxr-xr-x 1 ant root 3728 oct 11 12:02 crawlerNuevo.py
-rwxr-xr-x 1 ant root 3728 oct 11 12:02 crawler.py
-rwxr-xr-x 1 ant root 2227 oct 11 13:24 script1.py
-rwxr-xr-x 1 ant root 2575 oct 11 12:03 script2.py
-rwxr-xr-x 1 ant root 2886 oct 11 12:03 script3.py
-rwxr-xr-x 1 ant root 2886 oct 11 12:03 script4.py
$ git add .
$ git commit -m "Nuevos scripts python"
Created commit 2102368: Nuevos scripts python
 4 files changed, 342 insertions(+), 0 deletions(-)
 create mode 100755 crawler.py
 create mode 100755 crawlerNuevo.py
 create mode 100755 script4.py
$ git log
commit 21023689ab9abadc15048f4a14398eb748cfc727
Author: Antonio
Date:   Tue Oct 11 18:08:15 2011 +0200

    Nuevos scripts python

commit 66b893fe8ef4d541b133924bf6afc34eb14392d1
Author: Antonio
Date:   Tue Oct 11 13:14:22 2011 +0200

    Subida Inicial de Scripts Python

Si quiero ahora cambiar a otro branch he de tener todos los ficheros al día de commits;

$ git status
# On branch master
nothing to commit (working directory clean)
$ ll
total 192
-rwxr-xr-x 1 ant root 3638 oct 11 17:57 crawlerNuevo.py
-rwxr-xr-x 1 ant root 3545 oct 11 18:07 crawler.py
-rwxr-xr-x 1 ant root 2227 oct 11 13:24 script1.py
-rwxr-xr-x 1 ant root 2575 oct 11 12:03 script2.py
-rwxr-xr-x 1 ant root 2886 oct 11 12:03 script3.py
-rwxr-xr-x 1 ant root 2795 oct 11 17:57 script4.py
$ git branch
* master
  python-tests
$ git checkout python-tests
Switched to branch "python-tests"
$  git branch
  master
* python-tests
$ ll
total 96
-rwxr-xr-x 1 ant root 3728 oct 11 12:02 crawler.py
-rwxr-xr-x 1 ant root 2211 oct 11 18:11 script1.py
-rwxr-xr-x 1 ant root 2575 oct 11 12:03 script2.py
-rwxr-xr-x 1 ant root 2886 oct 11 12:03 script3.py
$ git log
commit 66b893fe8ef4d541b133924bf6afc34eb14392d1
Author: Antonio
Date:   Tue Oct 11 13:14:22 2011 +0200

    Subida Inicial de Scripts Python

Ahora estoy en el branch python-tests en el que sólo tenían un commit con cuatro scripts.

Sharing

git clone [url] : Nos bajamos un repositorio completo tal cual.
git remote -v : Muestra los repositorios remotos
git remote add : Añade una conexión a un repositorio remoto.
git remote rm <alias> : Elimina la conexión a un repositorio remoto.
git fetch [alias] : Se baja ficheros de un repositorio remoto.
git merge <branchname> : Mezcla el branch actual con el indicado.
git pull [url]  : Nos bajamos actualizaciones: Hace un git fetch seguido de un git merge
git push [alias|url] [branch]  : Sube ficheros al repositorio.

ejemplo:

$ git remote add origin git@github.com:hituser/repohit.git
$ git remote -v
origin    git@github.com:hituser/repohit.git (fetch)
origin    git@github.com:hituser/repohit.git (push)

$ git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 1.05 KiB, done.
Total 4 (delta 1), reused 0 (delta 0)
To git@github.com:hituser/repohit.git
* [new branch]      master -> master
Branch master set up to track remote branch master from origin.
$
Publicado en mswl-csi, mswl-devtools | Etiquetado , | Deja un comentario

MySQL

MySQL es un servidor de bases de datos relacionales multihilo y multiusuario hecho en su mayor parte en ANSI C. Desarrollado como software libre, tiene actualmente un sistema de licenciamiento dual por el cual se ofrece con licencia GNU/GPL, para cualquier uso comercial se debe de comprar una licencia a Oracle que es la compañia que actualmente tiene los derechos de uso tras la compra por su parte de Sun Microsystems. (http://www.mysql.com/about/legal/licensing/oem/)

Algunas de las características de MySQL son:

  • Desarrollado en C y C++
  • Tiene sistema de almacenamiento transcaccionales y no transaccionales
  • Utiliza GNU Automake, Libtool y Autoconf
  • Totalmente Multi-Thread por lo que hace un excelente uso de múltiples CPUs
  • Utiliza tablas en disco B-Tree muy rápidas.
  • Sistema de reserva de memoria basado en threads.
  • Tablas temporales Hash en memoria
  • Permite registros de longitud fija y de longitud variable.
  • Sistema de contraseñas y permisos muy seguro.
  • Soporta bases de datos muy grandes con tablas con 64 índices.
  • Amplia conectividad cliente-servidor soportando muy variadas interfaces de conexión.
  • Herramientas muy útiles disponibles como mysqlcheck y myisamchk

Comandos básicos.

mysqld   : Es el servidor MySQL
mysqld_safe, mysql.server, y mysqld_multi  :  Scripts de inicio del servidor
mysql_install_db  :  Inicializa el servidor de bases de datos.
mysql    :  Cliente SQL interactivo y batch
mysqladmin  : Cliente para administración
mysqlcheck   : Ejecuta chequeos de bases de datos.
mysqldump y mysqlhotcopy :  Scripts de backup.
mysqlimport : Importa ficheros de datos.
mysqlshow  : Saca información sobre tablas y bases de datos.
myisamchk  : Chequeo y mantenimiento de tablas.
myisampack : Crea tablas comprimidas de sólo lectura.
mysqlbinlog  :  Para procesar binary logs
perror : Para obtener la descripción de un código de error.

mysql: Conexión

mysql -h <host> -u <user> -p<password>

Seleccionar una base de datos

use baseDeDatos;

mysqldump : backup de BBDD

Para realizar backups de bases de datos podemos utilizar dos comandos:

mysqldump nos permite realizar backups de bases de datos para posteriormente poder regenerarlas en cualquier tipo de servidor SQL, el volcado contiene todos los comandos SQL para generar todos los objetos y llenarlos con los datos de la base de datos en el momento de la realización del backup.

mysqldump --tab=/path/ --opt <nombre-BBDD>

mysqlhotcopy permite realizar una copia de seguridad muy rápida , pero tiene la limitación de que sólo realiza backups de tablas MyISAM

mysqlhotcopy nombreBBDD [/path]

mysqlimport : Carga de datos

mysqlimport se utiliza para importar datos en una base de datos desde ficheros, utiliza el comando LOAD DATA INFILE

mysqlimport [opciones] nombreBBDD fichero_de_texto1 [fichero_de_texto2 ...]

mysqladmin : Administración en general

mysqladmin [opciones] comando [opciones_de_comando] comando ...

comandos:
create NombreBBDD  :  Crea un base de datos.
debug  : Escribe información de depuración en el log de error.
drop nombreBBDD  : Borra entera una base de datos.
extended-status  : Muestra todas las variables del servidor.
flush-hosts   : Vuelca la información en la caché
flush-logs     : Vuelca todos los logs
flush-privileges   : Recarga las tablas de permisos
flush-status  :  Limpia las variables de estado.
flush-tables  : Vuelca todas las tablas.
flush-threads  :  Vuelca la caché de threads.
kill id,id,…  : Mata los threads del servidor.
password nuevaPassword : Cambia la contraseña
ping : Chequea si el servidor está levantado.
processlist  : Saca una lista de los threads activos.
reload  : Recarga las tablas de permisos.
refresh  :  Vuelca todas las tablas y cierra y abre los ficheros de logs.
shutdown :  Detiene el servidor.
start-slave :  Comienza la replicación en un servidor esclavo.
status  :  Saca el estado del servidor.
stop-slave  Detiene la replicación en un servidor esclavo.
variables  :  Muestra las variables de sistema del servidor y sus valores.
version  : Saca la versión de un servidor de bases de datos.

mysqlcheck: Chequeo y reparación

mysqlcheck [opciones] nombre_de_base_de_datos

Si no se especifica base de datos el chequeo se realiza en todas ellas.

mysqlcheck es un comando de chequeo de bases de datos , es muy similar a myisamchk con la diferencia es que mysqlcheck se utiliza cuando el servidor está en funcionamiento ,mientras que myisamchk se utiliza con el servidor detenido. mysqlcheck usa los comandos SQL CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, y OPTIMIZE TABLE

Las opciones más interesantes de mysqlcheck son:
-a, –analyze : Analiza las tablas
–auto-repair :Si una tabla está corrupta ,esta se repara automáticamente.
-C : Chequea sólo las tablas que han cambiado desde la última comprobación.
–debug:  Escribe un log de depuración.
-e  o  –extended : Chequeo extendido
–fast, -F : Chequeo rápido, chequea sólo las tablas que no se han cerrado correctamente.
-medium-check, -m : Es más rapido pero menos exhaustivo que el chequeo extendido.
–optimize, -o: Optimiza tablas.
–quick, -q:  Chequeo rápido.
–repair, -r: Repara todo excepto claves únicas que no son únicas.
–verbose, -v: Modo verbose.

mysqlshow: Información sobre bases de datos

mysqlshow muestra información sobre las bases de datos que existen, sus tablas y columnas, básicamente utiliza el comando sql SHOW para sacar toda la información.

mysqlshow [opciones] [nombreBBDD [nombreTabla [nombreColumna]]]

mysqlbinlog : Examinar el Binary Log

El Binary log como su propio nombre indica está en binario para poder examinarlo en modo texto se utiliza el comando mysqlbinlog

mysqlbinlog [opciones] fichero_de_log

Podemos ejecutar los comandos contenidos en el log con el siguiente comando:

mysqlbinlog  fichero_de_log | mysql

o sacar el contenido a un fichero de texto , modificarlo y luego ejecutar los comandos con mysql.

myisampack: Tablas comprimidas de sólo lectura.

myisampack comprime tablas MyISAM entre un 40%-70%. quedando la tabla en modo de sólo lectura

myisampack [opciones] nombre_fichero ...

Cada nombre de fichero debe ser el nombre de un fichero índice (.MYI) . Si no se encuentra en el directorio de la base de datos, debe especificar la ruta al fichero. Se permite omitir la extensión .MYI .

perror : Información código de Error

perror error1 error2.....
Publicado en mswl-csi, mswl-devtools | Etiquetado , | Deja un comentario

Python básico

Python es un lenguaje  interpretado de alto nivel que soporta orientación a objetos , programación imperativa ,y un poco de programación funcional, tiene tipado dinámico y es multiplataforma, es proporcionado por la Python Software Foundation mediante la licencia Python Software Foundation License compatible con la licencia GPL 2.1.1

1.- Tipos de Datos

1.2.- Numéricos:

  • Floats (type float)
  • Integers (type int)
  • Long integers (type long)
  • Decimal

–  Operaciones numéricas:

– abs(x)  : Valor absoluto de X
– int(x)  : Convierte X a entero.
– long(x) : Convierte X a entero largo.
– float(x) : Convierte X a float.
–  -x  : Negación de X
–  x+y  : Suma de X e Y
–   x-y  : Resta de X e Y
–  x*y  : Producto de X e Y
–  x/y  : División de X entre Y
–  x%y  : X Modulo Y
–  x ** y  : X elevado a Y.

1.3.- Boleanos

– True
– False

Operaciones con boleanos:  and , or,  not

1.4.- Strings

«cadena»
‘cadena’
«» Cadena con saltos de linea dentro»»

– s.capitalize() # Pone en mayúscula la primera letra
– s.count(sub[, start[, end]])   # Devuelve el número de ocurrencias de la cadena sub en la cadena s
– s.decode([encoding[, errors]]) #  Decodifica la cadena
– s.encode([encoding[, errors]]) # Codifica la cadena
– s.expandtabs([tabsize]) # Transforma los tabs en serie de espacios.
– s.find(sub [,start[,end]]) #  Devuelve la posición donde la cadena sub se encuentra en s, devuelve -1 si no encuentra sub.
– s.format(*args, *kwargs) # Formatea s
– s.index(sub[, start[, end]]) # Igual que find pero si no encuentra la cadena lanza una excepción ValueError
– s.isalnum() # Devuelve true si todos los caracteres son alfanuméricos.sino devuelve False
– s.isdigit()  # Devuelve true si todos los caracateres son dígitos, sino devuelve False.
– s.islower() # Devuelve true si todos los caracteres están en minúsculas.
– s.isspace() # Devuelve true si todos los caracteres son espacios en blanco.
– s.isupper() # Devuelve true si todos los caracteres están en mayúsculas.
– separator.join(seq) # Devuelve la concatenación de las cadenas en la secuencia seq. ejemplo:  «;».join([‘1’, ‘2’, ‘3’,’4′]) -> «1;2;3;4»
– s.lower() # Convierte una cadena a minúsculas
– s.replace(old, new[, maxCount =-1]) # Devueve string reemplazando old por new.
– s.rstrip([chars])  # Devuelve string eliminando el caracter indicado del final.
– s.split([ separator[, maxsplit]]) # Devuelve en Lista los elementos de la cadena usando en separador indicado.
– s.rsplit([ separator[, maxsplit]]) # Igual que split pero empieza por el final de la cadena.
– s.strip([chars]) # Devuelve una cadena eliminado los caracteres indocados al principio y al final de la cadena.
– s.swapcase() # Devuelve una copia de la cadena intercambiando mayúsculas por minúsculas y viceversa.
– s.upper() # Devuelve un string todo en maýusculas.

2.- Estructura de Datos

2.1.- Listas

Una Lista es un conjunto «mutable» de datos (de igual o diferente tipo) indexados numéricamente:

lista=[]   # Lista Vacia
lista=[1,2,3,4,5] # Inicializa la lista.
lista.insert(pos,item) # Inserta en la posición indicada un elemento.
lista.append(item) # Añade un elemento a la lista.
lista.index(item)  # Devuelve posición.
lista.remove(item) #Elimina un elemento de la lista.
lista.reverse() # Invierte un elemento de la lista.
lista.sort()   # Ordena la lista.
del lista[0]  # Elimina el primer elemento de la lista.

2.2.- Pilas

Utilización de una lista como si fuera una pila  LIFO

stack = [1, 2, 3] # Inicializa una Pila
stack.append(item)  # Añade un elemento a la lista.
stack.pop() # Saca un elemento de la lista.

2.3.- Colas

La utilización de listas para realizar una Cola FIFO no es eficiente, la mejor opción es utilizar collections.deque

from collections import deque
queue = deque([«A», «B», «C»])
queue.append(item)   # Añade elemento a la Cola
queue.popleft()          # Sale elemento de la Cola

2.4.- Tuplas o Secuencias

Una Tupla o Secuencia es un conjunto «Inmutable» de valores (de igual o diferente tipo) separados por comas:

tupla = 12345, 54321, ‘cadena’
tuplaAnidada= tupla, ( ‘a’,’b’,’c’,’d’,’e’ )
Named Tuples :  En el módulo Collections aparce el tipo «namedtuple»  que utiliza como índices nombres en lugar de números:

2.5.- Sets

Conunto de elemenos únicos no ordenado, esta estructura es muy utilizada cuando se va a necesitar realizar operaciones del tipo : pertenencia a un grupo ,y eliminación de elementos duplicados o la realización de operaciones matemáticas como union, interseccion, diferencia etc.

elementos= [‘A’, ‘B’, ‘A’, ‘D’, ‘E’]
conjunto = set(elementos)       # Crea un conjunto eliminando los elementos duplicados.
Los sets permiten comprobar si un elemento es miembro o no del set de manera muy rápida:
‘B’ in conjunto      # Comprobar si un elemento pertenece al conjunto.

2.6.- Dictionaries

Los diccionarios , hashes o Arrays asociativos son distintos nombres para una misma estructura de datos,  son arrays de datos (de igual o diferente tipo) que en vez de indexarse mediante números lo hacen mediante keys que pueden ser de cualquier tipo «inmutable» , no se pueden usar listas como keys por que estas no son inmutables

hash={}     # Crea un diccionario vacio.
datosPersonales = {‘nombre’: «pablo», ‘telefono’: 323424556}
del datosPersonales[‘telefono’]  # Elimina un elemento.
datosPersonales.keys()   # Devuelve los keys del hash: [‘nombre’,’telefono’]

Recorriendo un diccionario:

for campo,valor in datosPersonales.iteritems():
……print campo,valor

3.- Control de Flujo

Conditional Expressions

if condition:
…….sentence
elif condition:
…….sentence
else:
…….sentence

While Loop

while condition:
…….sentence
else:
…….sentence    # Else opcional , se ejecuta al finalizar el bucle a menos que se ejecute un break dentro.

Bucle Infinito:

while True:
……..sentences

For Loop

for element in sequence:
…….sentence
else:
…….sentence   # Else opcional , se ejecuta al finalizar el bucle a menos que se ejecute un break dentro.

ejemplos:

list=[1,2,3]
for i in list:
……sentencias

for i in (‘a’,’b’,’c’):
……sentencias

Uso de Range para iterar

list=[1,2,3]
for i in range(len(list)):
…..print i, list[i]

break      # Sale inmediatamente del bucle
continue    # Salta a la siguiente iteración del bucle.
pass      #Comando que no hace nada ,se utiliza para rellenar por ejemplo un bucle o una funciona que posteriormente tendrá contenido.

4.- Funciones

En Python el paso de parametros a la función se hace siempre por referencia (como todo son objetos, son referencias a objetos), lo que hace que una variable pueda o no cambiar el valor de un dato pasado como parámetro es si tipo de argumento pasado es mutable o inmutable.

Las funciones siempre devuelve un valor (None en caso de no hacer return), no pueden devolver más de un valor, sin embargo pueden retornar tipos de datos completos como una lista o un tupla.

def nombreFuncion(param1):
……….sentencias
……….return resultado

result=nombreFuncion(«a»)

Publicado en mswl-csi, mswl-devtools | Etiquetado , | Deja un comentario

Firefox 7

El pasado mes de Septiembre Mozilla Foundation ha sacado lo último de Firefox, la versión 7.0, con muchas correcciones de errores, de vulnerabilidades, diversas mejoras y lo más esperado, una mejora considerable de utilización de memoria RAM (hasta un 50%). Entre las mejoras realizadas tenemos:

– Soporte para  W3C Web Timing, una interface que mediante JavaScript permite obtener mediciones en tiempo de ejecución como por ejemplo cuanto ha tardado la página en cargarse y otro tipo de latencias. (https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html)
– WebSocket 8  (WebSocket permite comunicación full-duplex sobre un único socket TCP) (http://dev.w3.org/html5/websockets/)
– MathML mejorado( MathML es un lenguaje de marcado basado en XML para la expresión de fórmulas matemáticas) (http://www.w3.org/Math/)
– Firefox Sync (Para sincronizar tus marcadores entre varias copias de Firefox)
– Telemetria que envia datos sobre el funcionamiento del navegador a Mozilla (es opcional activarlo)
– Render en segundo plano para mejorar rendimiento
– MemShrink: Proyecto de mejora de uso de RAM consiguiendo de un 20% a un 50% de reducción de uso de memoria según el caso (https://wiki.mozilla.org/Performance/MemShrink)

y la solución de muy diversos errores y corrección de varias vulnerabilidades.

Desde que la primera versión de Firefox salió a la luz el 9 de noviembre de 2004, ha ido evoucionando con gran rapidez incorporando grandes mejoras a los navegadores web como restauración de sesiones en caso de salida accidental del navegador, corrector ortrografico , características anti-phising , uso de WebSockets , una larga lista estandares soportados: Video WebM ,CSS, HTML5, XHR, MathML, SVG, SMIL, Canvas  y la posibilidad de añadir una muy larga lista add-ons y plugins realizada por una amplia comunidad de programadores.  Todas estas características y su alto grado de compatibilidad demostrada con los estandares web ha hecho que a dia de hoy Firefox sea con un 26.99% uno de los navegadores más utilizados sólo superado por Internet Explorer con un 36.3% de uso, siendo además utilizado por muchas empresas que han depositado su confianza en él ( haciendo uso también del cliente de correo eléctrónico Thunderbird desarrollado en los mismos términos por la Mozilla Foundation) por su buen funcionamiento y excelentes características teniendo que reconocer que ha cosechado un gran exito (teniendo en cuenta sobre todo que Internet Explorer viene con el sistema operativo Windows) tras muchos años de evolución desde ese inicial proyecto «Mozilla» que parecía inicialmente un fracaso al tardar nada menos que cuatro años en resurgir de las cenizas de Netscape tras la liberación de su código fuente.

Pero esto no esto todo, nuevas versiones de Firefox están ya en desarrollo como la versión 8 que incorpora a Twitter en su barra de búsqueda , es aún más rápido que anteriores versiones , incorpora mejoras en el control de los complementos y trae actualizaciones de WebGL, WebSockets y HTML5. Firefox parece que por el momento va a seguir siendo la opción más utilizada tras Internet Explorer , aunque no tiene que perder de vista a Google Chrome que ronda ya el 20% de utilización en Internet.

Publicado en mswl-intro | Etiquetado | Deja un comentario

Informe sobre la valoración y el conocimiento del Software Libre en países de habla hispana

PortalProgramas.com y Gather Estudios han elaborado un informe encuestando para ello a 2.500 usuarios de 17 paises (de habla hispana)  a los que se les ha realizado una serie de preguntas para saber su grado de conocimiento sobre el software libre. El resultado global es que  hay un buen conocimiento de los fundamentos de este tipo de software aunque hay que matizar algunas cosas, del informe se extrae que:
– 9 de cada 10 personas han oído hablar de este tipo de software.
– La mayoría, el 54% lo asocia con software gratuito.
– El 88% afirma que lo utliza habitualmente
– El 70% piensa que este tipo de software tiene menos funcionalidades que el software propietario.
– El 83% de los usuarios confian en él. entre estos 1 de cada 3 lo hace porque no les ha dado problemas y casi la mitad lo hace porque se actualiza constantemente.
– 8 de cada 10 usuarios afirma que este tipo de software se actualiza con mayor frecuancia que el software propietario.
– El 82% afirma que encuentra fácilmente soporte
– El 80 % piensa que es igual o más seguro que el resto de software.
– Los usuarios de Mac son los más comprometidos con el software libre no utilizando practicamente software propietario.
– La mayoría opina que el software libre no perjudica al software comercial y que fomenta la competencia dado que obliga al software propietario a mejorar sus productos.
– El 73% prefiere software libre al software gratuito.
– En España hay una tendencia muy grande a decantarse por el software libre respecto al software privativo comparado con otros paises de habla hispana, siendo el precio el factor que marca principalmente esa tendencia.

En general según explica el estudio, hay un grupo de usuarios con menos conocimientos que tiende a usar todo lo preinstalado en su ordenador sin investigar otras posibilidades salvando este colectivo el usuario se muestra confiado y satisfecho con el software libre aunque hay que remarcar también que existe una tendencia a que en caso de tener alguna experiencia negativa con este tipo de software se pierda confianza y se vuelva al modelo de software propietario.

Publicado en mswl-intro | Etiquetado | Deja un comentario

Es Android Software Libre?

Richard Stallman en un reciente artículo escrito para el periódico The Guardian (http://www.guardian.co.uk/technology/2011/sep/19/android-free-software-stallman) explica como Google a su parecer y en concreto su sistema Android puede haber llevado a cabo una estrategía comercial en la que presentándose como un desarrollo de software libre ha ido poco a poco incurriendo en una política que puede terminar en un producto de software privativo.

Stallman comenta para empezar que mientras que Linux (y no GNU) que es la base del sistema Android es licenciado bajo GNU GPL v2, el resto del software utiliza la licencia Apache 2.0 que es una licencia muy laxa que no cumple con el estandar CopyLeft y que esta mezcla no es legalmente posible. Incide en el hecho de que Google se niega a liberar el código fuente de su versión 3.0 y que el código liberado de las versiones 1.0 y 2.0 no se corresponde con todo el software del sistema completo.

También hace referencia a que varios de los componenes del teléfono tienen firmware que puede ser actualizado y que es software que permanece oculto y está totalmente fuera del control del usuario.

El articulo finaliza explicando que Android es un gran paso hacia un teléfono que respete la ética y los valores del software libre pero que aún queda un largo camino por recorrer por el problema del firmware y su forma de licenciamiento , aún así Android, explica Stallman, queda muy por encima de Apple o de teléfonos con Windows en cuanto a respeto de las libertades de los usuarios.

Publicado en mswl-ad, mswl-intro, mswl-legal | Etiquetado , , | Deja un comentario

CENATIC propone al Software Libre para el Premio Príncipe de Asturias 2011

Cenatic ha promovido la candidatura para el Premio Principe de Asturias 2011 al Software Libre en la categoría de Cooperación Internacional destacando de este modelo de software su altruismo , colaboración y el fomento de la competencia.

Que es Cenatic?

CENATIC (Centro Nacional de Referencia de Aplicación de las Tecnologías de la Información y la Comunicación basadas en Fuentes Abiertas). Es una  fundación Pública Estatal que está constituida por:
. Ministerio de Industria, Turismo y Comercio del Gobierno de España.
. Junta de Extremadura.
. Junta de Andalucía.
. Gobierno de Aragón.
. Gobierno del Principado de Asturias.
. Gobierno de Cantabria.
. Generalitat de Catalunya.
. Govern de las Illes Balears.
. Gobierno del País Vasco.
. Xunta de Galicia.
Y empresas privadas colaboradoras como
Atos Origin, Telefónica y Grupo Gpex.

y que de manera conjunta han presentado esta candidatura.

Cenatic se crea en 2006 dentro del llamado plan Avanza con el fin de promocionar el software basado en fuentes abiertas, tanto en la empresa privada como en los organismos públicos. Además ha creado una comunidad de desarrolladores de este tipo de software y realiza asesoración técnica y jurídica de software y ayuda a la creación de otras comunidades y asociaciones.

Publicado en mswl-intro | Etiquetado | Deja un comentario

17 de Septiembre: Día Internacional del Software Libre

¿Sabias que hay un día internacional del software libre? Pues si, es el fin de semana de la tercera semana de Septiembre, este año es el Sábado 17 (http://softwarefreedomday.org/) y durante varias semanas se celebran muy variadas reuniones en todo el mundo con el fin de difundir las ventajas que ofrece este tipo de software.

¿Como se celebra el día internacional del software libre? , pues se hacen charlas introductorias sobre que es el software libre , talleres , reuniones en escuelas o universidades , a veces se regalan cds o dvds con software de este tipo .

En la URL: http://www.softwarefreedomday.org/map/index.php?year=2011 podemos ver todas las celebraciones registradas y organizadas para este año.

En España podemos destacar:

Madrid:

http://www.liferay.com/community/user-groups/spain/welcome

Granada:

http://wiki.softwarefreedomday.org/2011/Spain/Granada/Gcubo?highlight=%28\bCategoryTeam2011\b%29

Aragón: http://cesla.info/2011/08/30/dia-del-software-libre-software-freedom-day/

y en muchas otras comunidades autónomas más.

Publicado en mswl-intro | Etiquetado | Deja un comentario