Entradas etiquetadas en ‘E-ghost

Vistiendo a WordPress: nunca los themes fueron tan fáciles

11 Comentarios »

Como es costumbre, aquí dejo el material usado en el cursillo del e-ghost+aprendices que he impartido esta semana sobre cómo convertir a nuestro WordPress en una página web y no tanto en un blog y cómo entender a fondo el funcionamiento de las plantillas.

La información está también recogida en el wiki que, por cierto, está de estreno. No porque esté descontenta con wikispaces… pero me gusta más tener mis datos bajo mi paraguas (manías de vieja ;-) ). Poco a poco iré migrando el resto de contenidos allí.

Vistiendo a WordPress

Más presentaciones de Lorena Fernández.

La estructura de WordPress

Internamente WordPress se compone de los siguientes ficheros y carpetas:

  • wp-config.php: fichero de configuración. Aquí está almacenado el usuario y el nombre de la base de datos, así como otros datos de seguridad. Es importante que este fichero no tenga lectura más que por el owner del mismo. Este fichero no se machaca con las actualizaciones de WP.
  • wp-admin y wp-includes: carpetas que guardan los ficheros php que hacen que funcione el blog. Ambas carpetas se machacan con las actualizaciones
  • wp-content: esta carpeta guarda los datos y configuraciones propias del blog. No se toca nada en la actualizaciones de WP. La estructura interna es la siguiente:
    • uploads: todas las imágenes, vídeos y archivos que se suban a la librería de wordpress. Normalmente se organiza por años y luego por meses. Ejemplo: uploads/2009/12.
    • plugins: todos los plugins que tenemos disponibles para el blog (aunque no estén activos).
    • languages: aquí van los ficheros .mo de los idiomas en los que queremos tener WP (tanto la parte visible como la de administración). Para indicar luego que el blog esté en un idioma u otro, habrá que añadir una línea en wp-config.php como la que sigue: define (‘WPLANG’, ‘es_ES’); donde es_ES es el nombre del fichero .mo (tienen que coincidir en nombre).
    • themes: todas las plantillas que tenemos disponibles para “vestir” al blog. Nosotros nos centraremos en esta carpeta.

Como podemos ver, una instalación de WordPress es muy portable. Si nos queremos cambiar de servidor o hosting, bastará con que nos llevemos estas carpetas y la Base de Datos exportada en un simple .sql. No requiere de otras configuraciones más complejas.

La estructura básica de un theme

Las plantillas o themes son la capa de presentación de los blogs o páginas web que se monten. Se puede cambiar esta capa sin que la información se vea afectada. WordPress reconoce automáticamente los siguientes ficheros y los interpreta:

Cuerpo.jpg
  • header.php: aquí se define la cabecera de la página.
  • footer.php: aquí se define el pie de página.
  • sidebar.php: aquí se definen las diferentes barras laterales.
  • index.php: este es el fichero que carga de inicio el site. Desde aquí se invoca la carga de cabecera (get_header();), barras laterales (get_sidebar();) y footer (get_footer();) y en el cuerpo central, se ejecuta el bucle para cargar la información de los posts.
  • single.php: este es el fichero que se interpreta cuando se carga un post concreto.
  • archive.php: igual que single.php pero para las páginas de categorías y etiquetas.
  • category.php: plantilla para las categorías. Cuando un usuario pincha sobre el enlace de una categoría, WordPress prueba si existe el fichero category.php. Si no lo encuentra, carga archive.php. Y si éste tampoco lo encuentra, se va a por el index.php. Más adelante veremos un gráfico con la interpretación jerárquica que hace WordPress.
  • comments.php: plantilla de los comentarios.
  • searchform.php: formulario de búsqueda.
  • search.php: página donde se muestran los resultados de una búsqueda.
  • functions.php: aquí se recogerán funciones propias del theme. Por ejemplo, si queremos registrar varias barras laterales para que aparezcan en la sección de widgets, indicar a WP dónde están los ficheros de idiomas, quitar filtros, …
  • style.css: fichero con los estilos.
  • 404.php: si creamos este fichero, cada vez que algo no se encuentre en el blog, se cargará esta página.

Desde el apartado de administración se podrá configurar la apariencia de una forma muy visual mediante widgets (en el apartado Apariencia –> Widgets). Aquí aparecen las barras laterales definidas y múltiples funcionalidades que se pueden colocar: comentarios recientes, posts recientes, buscador, una caja donde introducir nuestro propio código html, …

También desde el apartado de administración (Ajustes –> Lectura) podemos configurar que la portada que se carga de nuestra web sea una página y no el formato blog de entradas, dándole más carácter de página web.

Podríamos cargar diferentes sidebars con la misma metodología que los headers y los footers (explicada más adelante), pero existe una manera para que generemos un espacio dentro del apartado de los widgets.

Para que aparezcan en la sección de widgets las diferentes sidebars que queramos “alimentar” desde el panel de administración, hay que registrarlas en el fichero functions.php de la siguiente forma:

if ( function_exists(‘register_sidebars’) )
{
register_sidebar(array(
‘name’ => ‘Barra Lateral Derecha’,
‘before_widget’ => ‘código html que queremos que se cargue al inicio de la barra’,
‘after_widget’ => ‘código html que queremos que se cargue al final de la barra’,
‘before_title’ => ‘código html que queremos que se cargue al inicio del título de la barra’,
‘after_title’ => ‘código html que queremos que se cargue al final del título de la barra’,
));
register_sidebar(array(
‘name’ => ‘Barra Lateral Izquierda’,
‘before_widget’ => ‘código html que queremos que se cargue al inicio de la barra’,
‘after_widget’ => ‘código html que queremos que se cargue al final de la barra’,
‘before_title’ => ‘código html que queremos que se cargue al inicio del título de la barra’,
‘after_title’ => ‘código html que queremos que se cargue al final del título de la barra’,
));
}

Para usarlas posteriormente, la llamada será de la siguiente forma:

<?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(‘Barra Lateral Izquierda’) ) :
echo “El usuario no ha puesto widgets en esta barra”;
endif; ?>

Cabeceras y Footers personalizados

<?php if (is_category(‘Cine’)) {
get_footer(‘Cine’);
} else {
get_footer();
} ?>

De esta forma tan sencilla podemos cargar ficheros php personalizados para mostrar diferentes footers o cabeceras según estemos en una categoría u otra. En el ejemplo, si estamos en la categoría de Cine se cargará footer-cine.php. Si no, se cargará footer.php.

Sería exactamente lo mismo para las cabeceras (header-cine.php vs. header.php):

<?php if (is_category(‘cine’)) {
get_header(‘cine’);
} else {
get_header();
} ?>

Es decir, lo que WordPress busca es el fichero header-slug.php (el slug es el permalink. Es decir, la versión url del nombre: una cadena sin mayúsculas, sin tildes, con guiones en vez de espacios).

Categorías y etiquetas personalizadas

Para cargar diferentes presentaciones dependiendo de la categoría o la etiqueta sobre la que se pinche, podemos crear un php igual que lo hacíamos con las cabeceras, es decir category-slug.php o tag-slug.php o bien con el siguiente formato de nombre category-XX.php o tag-XX.php (donde XX es el id que tiene internamente esa categoría o etiqueta). De esta forma, podríamos ponerle una cabecera, un footer y un sidebar personalizados dependiendo de la categoría o la etiqueta en la que estemos.

Aquí vemos el orden en el que WordPress busca los ficheros y los carga:

Para cualquiera de las vistas que no tenga un archivo de plantilla separado, WordPress usará index.php de manera predeterminada. Si un visitante solicita un artículo individual, WordPress primero buscará un archivo llamado single.php. Si ese archivo existe, será utilizado para presentar el artículo. Si ese archivo no existe, WordPress utilizará index.php.

Templates

Podemos crear plantillas con comportamientos propios a los que luego asignar a cada página. Desde el editor de páginas estáticas hay una opción para aplicar plantillas. Para que un fichero php sea interpretado por WordPress como una template, hay que incluir al inicio del mismo el siguiente código:

/*
Template Name: Nombre-plantilla
*/

The Loop

El bucle es el proceso más importante de WordPress, aquel que nos devuelve y recorre todos los posts que corresponden al fichero desde el que se invoca:

  • Si se le llama desde index.php, nos devuelve los últimos posts que se hayan escrito (tantos como tengamos definidos que deberían formar parte de la portada en el apartado de administración).
  • Si se le llama desde archive.php, nos devuelve los posts de una etiqueta determinada o de una categoría concreta (dependerá de quién haga la llamada a ese fichero).

Por tanto, es en este bucle donde procesaremos la colección de posts.

<?php
get_header();
if (have_posts()) :
while (have_posts()) : the_post();
the_content();
endwhile;
endif;
get_sidebar();
get_footer();
?>

  • wp_query->current_post: nos devuelve el número del post en el que estamos dentro del loop. Un ejemplo de uso en el que mostramos el contenido para los tres primeros posts y sólo el título para el resto:

<?php if (have_posts()) :
while (have_posts()) : the_post();
if ($wp_query->current_post < 3) {
the_content();
}
else {
the_title();
}
endwhile;
endif; ?>

Sin embargo, nosotros también podemos controlar qué posts nos devolverá ese loop mediante la función query_posts. Esa función regenera la consulta y filtra los posts en base a los parámetros que le pongamos:

  • cat=ID: filtra por esa categoría. Si al id se le pone un guión por delante, muestra los posts de todas las categorías menos de esa.
  • tag=slug: filtra por etiqueta. En esta ocasión se le pasa el slug. Si queremos usar el ID de la etiqueta, pondremos el parámetro tag_id.
  • author=ID: filtra por usuario, usando el ID del mismo.
  • order=ASC u order=DESC: indica la ordenación de los resultados, ascendente o descendente.
  • year=año: filtra por año.
  • monthnum=mes: filtra por mes.
  • day=día: filtra por día.
  • posts_per_page=número: número de posts por página

Ejemplo:

<?php
query_posts(‘posts_per_page=5&author=3&tag=discos’);

//The Loop
if ( have_posts() ) : while ( have_posts() ) : the_post();
..
endwhile; else:
..
endif;

//Reset Query
wp_reset_query(); ?>

Funciones

  • the_permalink(): nos dará la url del post que estemos tratando dentro del loop. No tiene parámetros. Con get_permalink() tendremos que mostrarlo nosotros por pantalla con un echo, pero nos permite que, si tenemos el ID del post y se lo pasamos por parámetro, lo usemos fuera del loop: get_permalink($post->ID).
  • the_title($before, $after, $echo): muestra el título del post y también es necesario usarlo dentro del loop. Los parámetros $after y $before nos permite introducir cadenas de texto que irán delante y detrás respectivamente. Por ejemplo, si queremos que el título vaya con las etiquetas html <h3>, podemos hacer la siguiente llamada: the_title(‘<h3>’, ‘</h3>’). El parámetro $echo nos sirve para indicar si queremos que muestre el título por pantalla (si lo ponemos a true) o no para hacer algún tratamiento con ese título (si lo ponemos a false). Con get_the_title(ID) sucede igual que get_permalink pero para el título del post.
  • the_content(): muestra el cuerpo del post.Se usa dentro del loop. Tiene también su versión get_the_content().
  • the_excerpt(): muestra lo que hayamos introducido en el campo Extracto. Se usa dentro del loop. Tiene su versión get_the_excerpt().

<?php if(!empty($post->post_excerpt)) {
// Si tiene extracto, lo muestra
the_excerpt();
} else {
// Si no, muestra el contenido del post
the_content();
} ?>

  • the_time(): muestra la fecha por cada post. Le podemos pasar por parámetro el formato de esa fecha:
    • l = Nombre completo del día de la semana.
    • F = Nombre completo para el mes.
    • j = Día numérico.
    • m = Mes con dos dígitos.
    • Y = Año con cuatro dígitos.
    • y = Año con dos dígitos.
    • Para escapar letras, usaremos la barra \. Por ejemplo, para poner la palabra “de” le pasaremos “\d\e”

<?php the_time(‘l, j \d\e F, Y’); //Nos muestra Martes, 14 de Septiembre, 2010 ?>

  • the_date(): igual que the_time pero muestra la fecha solo en el primer post de un grupo que haya sido publicado el mismo día.
  • Bloginfo: nos ofrece numerosa información de nuestro blog que luego podremos plasmar en otros apartados (tiene se versión get_bloginfo):
    • bloginfo(‘name’): muestra por pantalla el nombre del blog.
    • bloginfo(‘description’): muestra por pantalla el nombre del blog.
    • bloginfo(‘url’): muestra por pantalla la dirección del blog.
    • bloginfo(‘stylesheet_url’): muestra por pantalla la ruta del fichero de estilos (style.css).
    • bloginfo(‘template_url’): muestra por pantalla la ruta del theme.
    • bloginfo(‘rss2_url’): muestra por pantalla la ruta del RSS.

En este ejemplo se muestra el nombre del blog enlazado a su dirección:

<a href=”<?php bloginfo(‘url’); ?>” title=”<?php bloginfo(‘name’); ?>”><?php bloginfo(‘name’); ?></a>

  • the_author(): muestra por pantalla el autor que ha escrito ese post. Tiene su versión sin echo: get_the_author.
  • the_tags( $before, $separator, $after): muestra las etiquetas asociadas a ese post. Por parámetro se le puede pasar el texto que precederá a las etiquetas, los caracteres que queremos que separen las etiquetas y el texto que irá al final. Tiene también su versión get_the_tags que nos devolverá un array con las etiquetas, para que las procesemos nosotros.

<?php the_tags(‘Etiquetas:’, ‘ – ‘, ‘<br />’); ?>

  • posts_nav_link: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.
  • previous_posts_link: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas anteriores. Se usa en el index.php para que se pueda navegar a los contenidos anteriores a los posts que se muestran en la portada.
  • next_posts_link: muestra un enlace con el texto que le pasemos por parámetro a los posts que estén en páginas posteriores. Se usa en el index.php para que se pueda navegar a los contenidos posteriores a los posts que se muestran en la página desde la que se invoca.

<div>
<div><?php previous_posts_link(”,”,’&laquo; Artículos Anteriores’)?></div>
<div><?php next_posts_link(”,’Artículos Siguientes &raquo;’,”)?></div>
</div>

  • in_category($category): nos dice si ese post está en la categoría pasada por parámetro. Se puede pasar el ID de la categoría o bien el slug. Con esto también podemos hacer que tenga comportamientos distintos según la categoría y en un único fichero category.php.

<?php if (in_category(’3′) ){ ?>
<img src=’/images/plant.png’ alt=’a plant’ />
<?php } elseif (in_category(’4′) ){ ?>
<img src=’/images/flower.png’ alt=’a pretty flower’ />
<?php } ?>

Custom fields – Campos personalizados

Cuando estamos creando un post, justo debajo de la caja del texto podemos introducir campos personalizados introduciendo un nombre y un valor:

El Nombre será el identificador de nuestro campo personalizado y el Valor lo que queremos mostrar. Obtendremos el valor de ese campo dentro del loop con la siguiente llamada get_post_custom_values:

<?php $valor_custom_field = get_post_custom_values(“nombre-del-custom-field”); ?>

O también con la función get_post_meta:

<?php $valor_custom_field = get_post_meta($post->ID, nombre-del-custom-field); ?>

Estos custom fields son los metadatos extra de cada post (que se suman a los ya típicos autor, fecha, etiquetas, categorías, etc…). Así podría ser la canción que está escuchando el autor cuando escribió el post o su estado de ánimo, el precio (si usamos el blog como tienda virtual), etc…

Panel de administración del theme

Para crear un apartado de administración de nuestro theme, debemos incluir la siguiente llamada en functions.php (en este ejemplo estamos poniendo un textarea para que se almacene nuestro código de Google Analytics):

/* Meter código de Google Analytics */
function nombredeltheme_theme() {
if(isset($_POST['submitted']) and $_POST['submitted'] == ‘yes’) :
update_option(“google_analytics”, stripslashes($_POST['google_analytics']));
endif;
?>
<form method=”post” name=”update_form” target=”_self”>
<h1>Google Analytics</h1>
<table>
<tr>
<th>Google Analytics:</th>
<td><textarea name=”google_analytics” style=”width: 95%;” rows=”10″ />
<?php echo get_option(‘google_analytics’); ?></textarea><br />Copia el código Google Analytics aquí.</td>
</tr>
</table>
<p id=”jump_submit”>
<input name=”submitted” type=”hidden” value=”yes” />
<input type=”submit” name=”Submit” value=”Save Changes” />
</form>
<?php
}
function nombredeltheme_options() {
add_menu_page(‘Opciones del Theme’, __(‘Opciones del Theme’, ‘default’), ‘edit_themes’, __FILE__, ‘nombredeltheme_theme’);
}
add_action(‘admin_menu’, ‘nombredeltheme_options’);

Luego ponemos en el footer.php:

<?php echo get_option(‘google_analytics’); ?>

De esta forma se cargará en el footer lo que el usuario alimente desde el panel de administración.

Enlaces de interés

  • Nuestra nueva biblia: Codex WordPress.
  • El gran repositorio de WordPress de plantillas, para que seleccionemos una como base para la modificación.

Septiembre, el mes de WordPress

7 Comentarios »

Septiembre es el mes de la vuelta. De la vuelta de vacaciones, de la vuelta al cole (y los corticoles), a la rutina, al malvado a la par que olvidado despertador, …

Pero este año, gracias al e-ghost y aprendices vamos a convertirlo también en el mes de WordPress.

Si estás interesado/a en este gestor de contenidos cada día más completo, apúntate estas fechas en rojo:

  • 10 de septiembre de 15:00 a 19:00 en la sala de videoconferencias de la Facultad de Ingeniería de la Universidad de Deusto: Iniciación a WordPress: este evento no es realmente una charla, sino un taller o ‘desconferencia’ en la que varios Aprendices pondremos en común lo que sabemos.
    El objetivo es hablar sobre lo siguiente:
    • ¿Qué es WordPress?
    • Cómo abrir un blog en wordpress.com
    • Breve repaso a funcionalidades básicas.
    • Comparación con otros sistemas de creación de blogs.
  • 13 y 14 de septiembre de 18:00 a 20:00 en la Facultad de Ingeniería de la Universidad de Deusto: Cómo usar WordPress para montar una página web sin que parezca un blog: Curso para conocer a fondo el funcionamiento del sistema de plantillas de WordPress y conseguir así presentar este CMS como algo más que un gestor de blogs. Se aprenderá la estructura y el funcionamiento de los themes, cómo cambiar la forma de mostrar la información, crear un widget propio, etc… Éste sí que lo imparto yo de una manera clásica y ¡¡ATENCIÓN!! Es necesario inscribirse (aunque sea gratuito). Como requisito previo serán necesarias unas nociones básicas de PHP.
  • 17 de septiembre de 15:00 a 19:00 en la sala de videoconferencias de la Facultad de Ingeniería de la Universidad de Deusto: Plugins, WordPress MU y BuddyPress. Al igual que el de introducción, se trata de una desconferencia en la que cada aprendiz pondrá sobre la mesa sus experiencias. Se hablará sobre:
    • Qué es un plugin y para qué sirve.
    • Repaso de plugins útiles.
    • Qué es WP MU y para qué sirve. Cómo instalar. Repaso funcionalidades básicas.
    • Qué es BuddyPress y para qué sirve. Cómo instalar. Repaso funcionalidades básicas.

Y por supuesto, no te pierdas el resto de cursos que organiza el e-ghost durante septiembre. Al final no va a ser tan mal mes ;-) .

Imagen de dannyrobinson (CC-by)


Web 2.0 y Software Libre: una relación de amor-odio

7 Comentarios »

El miércoles pasado, en la semana paréntesis de mis vacaciones, di la charla “Web 2.0 y Software Libre. Una relación de amor-odio“, dentro de los cursillos de julio del e-ghost. Las sensaciones tras la misma fueron muy positivas, dado que hubo un interesante debate entre los asistentes (Mario, muchas gracias por tu activa participación :D ).

Como siempre, aquí tenéis la presentación y un poco de letra para que se entienda:

Arrancamos poniendo cara a cara a dos de los baluartes de ambos mundos: Tim O’Reilly por la web 2.0 y Richard Stallman por el mundo del software libre, con dos posiciones bastante diferenciadas y extremistas.

Por un lado Tim, que en la única conferencia en la que le he visto en directo, preguntó al auditorio si usaba software libre. Se trataba de un evento organizado por Empresa Digitala y los asistentes eran de lo más variopinto, así que pocos fueron los que levantaron la mano. Justo después preguntó quién usaba google para hacer búsquedas. Ahí sí se levantaron todas las manos. Entonces, dijo Tim, todos usáis software libre, porque los servidores de google están montados con herramientas libres. Es un planteamiento cogido con pinzas (es como decir que tú ayudas a los indígenas del Amazonas porque compras un producto que destina el 1% de sus ventas a ayudarles), pero viene genial para analizar las tripas de la Red. Por ejemplo, si miramos las estadísticas de netcraft de junio de 2009, vemos como Apache sigue siendo el servidor web más usado (a pesar de que, desde 2006, momento en que Goddady decidió cambiar sus servidores apache por IIS, no ha dejado de bajar).

Y en el otro polo tenemos a Richard Stallman, que en septiembre de 2008, hizo unas declaraciones para The Guardian en las que indicaba:

[...] “Una razón por la cual no deberían usar aplicaciones web es porque se pierde el control. Es tan malo como usar software propietario. Haz tu trabajo en tu propio ordenador con un programa que respete tus libertades. Si utilizas un software propietario o el servicio web de otra persona, estás sin defensas. Estás en las manos de la persona que desarrolló ese software.”

Como decía antes, una posición un poco extremista pero no falta de razón (como indicó Mario, en ocasiones, necesitamos este tipo de tirones de orejas, que aunque son un poco alejados del realismo, nos hacen plantearnos cosas).

Está claro que estamos ya metidos en el ciclón del cloud computing y es muy difícil salir de él. Nos reporta tremendas ventajas: acceso a nuestros datos desde cualquier parte, necesitando sólo una conexión a Internet y un navegador, usando servicios que son más fiables que nuestro propio ordenador (con su propio sistema de backups y mayor disponibilidad)… O al menos eso creemos, porque luego suceden casos como el de Magnolia, un sistema de marcadores sociales que hizo crack y perdió todos los datos de sus usuarios, dando de lado a los que tenían cuenta gratuita y devolviendo el dinero a los de pago (pero… ¿cómo se recompensa el tiempo y el conocimiento generado hasta entonces?). Además, siempre hablamos de cajas negras (nadie sabe cuál es el código fuente de google ni qué hace por debajo… igual que sucede con windows). Tampoco conocemos quiénes son los administradores de una plataforma ni cuáles son sus intenciones. Yo, como bofh de Nireblog, tengo acceso a los usuarios y contraseñas y estoy convencida de que más del 50% de ellos usarán ese mismo login y password en otros sitios. Por tanto, nadie nos puede asegurar que se monte una plataforma-trampa para recoger esos datos. Tampoco podemos cambiar esas plataformas y amoldarlas a nuestras necesidades (una de las razones que hicieron a Richard Stallman ponerse en pie de guerra e iniciar el proyecto GNU). La única libertad es la que nos otorgan las APIs. Por tanto, cada vez somos más esclavos de las plataformas: ¿y si cierran? ¿y si cambian de manos y por tanto, de filosofía? ¿y si pierden nuestros datos? ¿y si cambian las condiciones de uso? (bueno, de algunas plataformas, no hace falta que cambien porque ya hemos aceptado términos abusivos desde el inicio). No hay más que echar un vistazo a Twitter cuando se cae GMail para ser conscientes de nuestro nivel de dependencia. De hecho, es la mejor forma de ilustrar la diferencia de significado de la palabra inglesa free. El software libre es free como la libertad de expresión. La web 2.0 es free como la cerveza gratis. Aunque lo que es indudable es que ambos tienen la misma filosofía por detrás: la de generar conocimiento abierto y compartir con la comunidad.

Y entonces, ¿cuál es la solución ante esto? Sólo hay una salida: los estándares abiertos que nos permitan la portabilidad de nuestros datos de un lugar a otro. De esta forma, seremos capaces de movernos de una plataforma a otra, sin tener ese yugo. Para hablar de esa portabilidad, tenemos que diferenciar entre tres tipos de información que generamos en la Red: los contenidos propiamente dichos, la identidad con la que nos autenticamos en los lugares y las interacciones o relaciones que establecemos. Aunque pudiera parecer que los tres nos pertenecen, casos como el de Robert Scoble nos alertan de lo contrario. A este conocido bloguero americano le cerraron su cuenta en Facebook por intentar exportar los nombres, emails y cumpleaños de SUS contactos a plaxo mediante un script. En un alegato a la incoherencia, Facebook puede rastrear la libreta de direcciones de tu cuenta de correo para buscar contactos pero te prohíbe que los saques de allí (es lo que se conoce como walled garden o jardín cerrado). Y es que el mejor truco del ilusionista 2.0 es hacernos creer que nuestros datos nos pertenecen. Por ejemplo, diariamente alimento mi cuenta de last.fm con las canciones que escucho, participando en una base de conocimiento global que ayudará a otros usuarios a descubrir grupos relacionados. Hasta ahora, todo muy bonito y con un lazo rosa. Pero, ¿puedo obtener mis datos para, por ejemplo, pasárselos a Amazon y que me muestre esos discos y así poder comprarlos? NO.

DataPortability

Se trata de una plataforma que trata de plantear una serie de estándares abiertos para generar redes sociales abiertas:

  • OpenID: sistema de autenticación descentralizada. Ya en un post anterior contaba los pros y contras de esta tecnología que nos evita volver a introducir nuestros datos cada vez que nos queremos dar de alta en un servicio.
  • OAuth: protocolo de autorización. Una aplicación web puede acceder a la información de un usuario en otra sin tener que informarle del login y contraseña. Twitter, recientemente, ha adoptado oauth para comunicarse con otras plataformas que usan su api. De esta manera, podemos usar servicios como el de twitterfeed sin pasarle nuestra contraseña de Twitter.
  • OPML: formato xml para esquemas que nos permite exportar colecciones de RSS. Por ejemplo, podemos exportar todos los blogs a los que estamos suscritos en nuestro bloglines y luego importar ese fichero a Google Reader.
  • APML: mapa de intereses de un usuario. Es decir, una forma de almacenar todo lo que nos resulta interesante en una web: una canción en blip.fm, un estado en facebook, un enlace en del.icio.us, …
  • Microformatos: agregando significado semántico a los contenidos. Una forma de que las máquinas puedan interpretar como lo haría una persona. Ejemplos: hCard, XFN, …

Existen otras tecnologías como OpenSocial que, aunque en su nombre lleva la parte de Open, no nos puede llevar al engaño, puesto que no es un protocolo de comunicación entre redes, sino un estándar para el diseño de gadgets, de forma que si se crea uno, pueda funcionar en Google, LinkedIn, MySpace, Plaxo, Yahoo, … Pero como comentaba antes, lo de open lo limita luego cada plataforma. Por ejemplo, en LinkedIn se reservan el derecho de admisión de gadgets hechos con OpenSocial (por ahora sólo permiten una serie de aplicaciones).

En la línea de la interoperabilidad también está el open cloud manifesto, firmado por grandes nombres como AMD, eyeOS, Sourceforge, Sun, IBM, … pero sin el apoyo de Google, Microsoft, Amazon, … Y es que el gigante Google suele darnos cal y arena. Está claro que lo que hace, lo hace muy bien. Y su aportación al mundo del software libre no se puede desdeñar: su navegador google chrome basado en chromium (licencias BSD y CC-by 2.5), el sistema operativo para móviles android (apache license 2.0 y GPLv2) y muchas otras aplicaciones que podemos encontrar en google code (gears, jaiku, …). Por no hablar del próximo tsunami de Internet: Google Wave, que nos indican que será libre (cualquiera lo podrá instalar en su servidor), usará un protocolo libre (cualquiera podrá hablar con él) y tendrá una api abierta para desarrollar gadgets usando OpenSocial. De hecho, harán una apuesta arriesgada apostando por el HTML5 (que ahora mismo no funciona en Internet Explorer). Pero a pesar de todos estos regalos que nos hacen los chicos de Mountain View, tenemos que ser conscientes de que un único dueño y señor de Internet es nefasto.

Licencias en la web

  • GPL: es una licencia copyleft que está más pensada para el mundo del software que para el de la web. Lo que se cree derivado de algo con GPL tiene que mantener la misma licencia. Sin embargo, se pueden hacer modificaciones y no ponerlas a disposición del mundo, dado que al usuario final, lo que le llega es el código HTML. Paquetes con esta licencia: WordPress, MediaWiki, Drupal, Joomla, …
  • Affero Public License (AGPL): a diferencia de la GPL, todas las modificaciones que se hagan deben ser puestas a disposición de todo el mundo. Es curioso como Google tiene vetada esta licencia en Google Code (cada uno ate sus cabos ;-) ).
  • Apache License: es la que utiliza la Apache Foundation. No es copyleft (los productos derivados no tienen por qué tener esa licencia) y es mucho más laxa que las anteriores. Las obras se pueden modificar, se pueden redistribuir y se puede usar para cualquier propósito. Productos con esta licencia: Lucene, Android, …
  • MIT, BSD, … : licencias aún más laxas que permiten usar, copiar, modificar, integrar con otro software y sublicenciar.

Alternativas web libres

Excelentes enlaces recibidos a través de Twitter sobre el tema (gracias @txipi y @gallir :D ):


Web 2.0 y software libre, una relación de amor-odio: cursillos de julio del e-ghost

2 Comentarios »

love & hateOtro año más (y ya van diez), alumnos y profesores de la Universidad de Deusto amantes del software libre se arremangan para preparar unos jugosos cursillos gratuitos (Google Web Toolkit, Gimp, OpenVPN, Asterisk, …).

Este año participaré dando una charla: “Web 2.0 y software libre: una relación de amor-odio“. Será el 22 de julio a las 16:00. La manida web 2.0 y el software libre tienen una relación un tanto curiosa: por un lado, muchos servicios sociales funcionan gracias al open source y el espíritu colaborativo que se respira recuerda mucho al que siempre ha impregnado a la comunidad del software libre. Por otro, muchas son las voces que claman contra la computación en la nube, la pérdida de protagonismo de las aplicaciones de escritorio abiertas donde sabíamos a ciencia cierta qué hacían y los peligros que tiene frente a nuestras libertades la web 2.0. Intentaré mostrar ambos lados de la moneda.

Para asistir, no tenéis más que inscribiros aquí. ¿Nos vemos?

Foto de Francis Storr (CC by-sa)

Charlas del e-ghost para inaugurar el curso

No Comentarios »

e-ghost
Ha comenzado el curso y, como no podía ser de otra manera, el e-ghost empieza su actividad divulgadora del Software Libre.

Este mes de noviembre tendremos cinco charlas a las que puede asistir todo el que lo desee, sin necesidad de registrarse en ninguna parte y por supuesto, sin pertenecer al e-ghost o a la Universidad de Deusto (y además gratis ;-) ).

12 de noviembre, Lunes: Introducción al Software Libre
De la mano de Txipi y Etox descubriremos qué es esa cosa rara del Software Libre, las licencias libres, no tan libres y privativas, etc. Idónea para iniciarte en este mundillo.

15 de noviembre, Jueves: Install-Party
Si hasta el momento no te habías atrevido a instalar GNU/Linux por lo que pudiera pasar, en este taller Unai y Saghul te echarán una mano y guiarán en el proceso. Todo de forma práctica, porque hacer es aprender.

20 de noviembre, Viernes: GNU/Linux en sistemas raros
GNU/Linux es tan sumamente flexible que se puede embeber en muchísimos dispositivos (XBOX, PS3, Nintendo DS, etc.). En esta charla Sergio (aKa G-kar) y Pepone te mostrarán que no sólo de ordenadores vive el hombre (se rumorea que lo intentarán hasta en una tostadora ;-) ).

29 de noviembre, Jueves: Introducción a VoIP y Asterisk
¿Te vas de ERASMUS? Uno de los principales gastos es la posterior comunicación con la familia, amigos, novio/a, etc. Pues gracias a la VoIP, ese gasto se puede minimizar y Saghul te muestra cómo.

3 de diciembre, Lunes: GNU/Linux desde la línea de comandos (bash scripting)
Una de esas cosas que por una lado asusta a muchos y por otro, atrae a otros, es la línea de comandos. Txipi y Fermat nos entrenarán en el kung-foo de la shell.

Más información, en el wiki del e-ghost.


Cursillos de Julio en la Universidad de Deusto

10 Comentarios »

cursillos
Ya se ha abierto el plazo de inscripción para los cursillos de julio organizados por el e-ghost (con la colaboración del Dot Net Group y del Tecnológico Fundación Deusto). Ya os hablé de estos cursos el año pasado (¡y es que van ya por la octava edición!).

Contenido:

  • Introducción a Python
  • Introducción a GNU/Linux para no-informáticos
  • Desarrollo de aplicaciones con Eclipse
  • XHTML y CSS para torpes
  • Introducción a OpenGL Multiplataforma
  • Desarrollo de Rich Internet Aplications con OpenLaszlo y Google Web Toolkit
  • Introducción a PHP
  • Voz sobre IP y Asterisk: The Open Source PBX
  • Introducción a GNU/Linux para informáticos
  • Programación Orientada a Aspectos con AspectJ
  • Geodatos libres con Open Street Maps

Para las charlas no es necesario apuntarse (la entrada es libre), aunque sí recomendable para que los ponentes se hagan una idea de a cuánta masa se van a dirigir ;-) :

  • XAML, la nueva forma de programar para Windows Vista
  • Lockpicking, hackeando el metal
  • Grid Computing y Virtualización
  • Data Mining, problemas de clasificación con Weka
  • Actualidad de los lenguajes xbase
  • Seguridad en redes WiFi
  • Web Semántica con minúsculas
  • Seguridad en VoIP
  • Rediseñando el Hardware

Además, si te queda un poco mal Bilbao y prefieres Donosti, este año también se han lanzado a la aventura con unas jornadas de software libre:

  • Introducción al software libre
  • Licencias del software
  • Primeros pasos en Ubuntu
  • Joomla! ezagutuz
  • Conociendo Joomla!
  • Conociendo Inkscape
  • Conociendo Gimp
  • Analizando datos con R
  • Analizando datos con Gretl

Y recordad que aquí los alumnos toman el poder y cambian su rol por el de profesores.


Desafío terminado: Ubuntu ganó de calle

10 Comentarios »


Instalando Windows Instalando Ubuntu Gente en el Desafío 2.0
aktor y loretahur Comenzando el reto El público


Final del duelo y un claro vencedor: el software libre. Todo fue vigilado por las atentas miradas de los comisarios y se desarrolló con total normalidad. Txipi puso todo su empeño en la victoria aunque sabía que contaba con pocas posibilidades de antemano puesto que los PC’s eran Pentium IV y van bastante mejor para una Ubuntu (quizás con un PC con peores prestaciones otro gallo hubiese cantado).

Sin embargo, 15 minutos fueron la diferencia. Se instaló el Sistema Operativo, codecs para visualizar un divx, se editó un documento en PDF, se conectó un dispositivo USB y la guinda final elegida por el público asistente: se instaló una webcam.

La diferencia más sustancial radicó en que cuando tú instalas una Ubuntu ya lo haces con muchos programas (cosa que no sucede con un Windows) y esto supuso una gran ventaja.

La conclusión obtenida: instalar GNU/Linux cada vez es más sencillo y debemos animar a todo el mundo a aventurarse en el software libre. Realmente el esfuerzo merece la pena. Fue toda una fiesta que se espera repetir el año que viene y con más tiempo, incluyendo a un Maquero en el litigio.

Wiki que recoge más detalles.
Fotos del evento.
Vídeos en youtube editados por shriek.


Desafío 2.0 – The real Operating System deal v. 0.1

12 Comentarios »

reto
Mañana me toca cubrir mi primer evento como periodista blogger. Se trata de un reto de lo más atípico: Software libre vs Software privativo (o lo que es lo mismo GNU/Linux vs Windows). Los representantes por cada parte serán Aktor (también conocido como hippie melenudo) y Txipi (alias privativo-man) respectivamente.

A ambos les tocará llevar a cabo una serie de tareas informáticas (instalar un ordenador, reproducir un divx, escribir un documento en PDF, conectar un dispositivo USB…) en el menor tiempo posible pero cada uno con una plataforma diferente. Con esto quedarán inaugurados los cursillos de verano de la Universidad de Deusto.

Allí estaré retransmitiendo en vivo y en directo a partir de las 16:30 todo lo que suceda. Próximas noticias en el blog de Lady Pain y aquí.

Hagan sus apuestas señores.


Cursillos y Charlas de Julio

8 Comentarios »

¡Ya están aquí! ¡Ya han llegado! Todo el año esperando y por fin podemos inscribirnos en los cursillos y charlas que organiza la Facultad de Ingeniería de la Universidad de Deusto en julio.

Tanto los cursillos como las charlas serán impartidos de forma voluntaria por alumnos pertenecientes al Grupo de Software Libre e-GHOST, a DotNetGroup, a la Cátedra de Telefónica Móviles España, y a MIRA (Grupo de Multimedia, Internet, Realidad Virtual y Accesibilidad).

La preinscripción empezó ayer mismo (16 de junio), y la inscripción definitiva tendrá lugar a finales de mes. Los cursillos y charlas tendrán lugar del 3 al 28 de julio por un precio de 0 €.

¿Quiénes se pueden apuntar? Los estudiantes, profesores, y ex-estudiantes de la Universidad de Deusto, así como las personas ajenas a la Universidad. Pero, en el caso de que se agoten las plazas de un cursillo, el número de inscripciones de personas ajenas se limitará a cinco.

¿Dónde se impartirán? En las aulas 113 y 114 de ESIDE (Universidad de Deusto)

Cursillos:

  • Introducción a GNU/Linux para informáticos
  • Programación de aplicaciones gráficas y juegos en J2ME
  • Voz sobre IP y Asterisk: The Open Source PBX
  • Zope3
  • Reflectividad en C++
  • XHTML y CSS para torpes
  • Introducción a Plone
  • Criptografía y certificación: GPG y OpenSSL
  • Introducción a la programación 3D con OpenGL bajo GNU/Linux
  • Ruby on Rails
  • Diseño gráfico con software libre 1
  • C#
  • Introducción a J2ME
  • Introducción a la manipulación del kernel de linux
  • Web Semántica Práctica
  • Edición de documentos con software libre
  • Introducción a GNU/Linux para no-informáticos
  • Introducción a la programación con Bluetooth en JAVA
  • Introducción a Python
  • Introducción a Mono
  • PHP para torpes
  • AJAX (JavaSript & XML asíncrono) con Mono y PHP
  • Windows Communication Foundation (Indigo)

Charlas:

  • Introducción a OSGI mediante KnopflerFish
  • Vim
  • Introducción al cracking en GNU/Linux
  • Introducción a la programación funcional en Haskell
  • Nuevas Perspectivas en Lenguajes de Programación: Teoría de Tipos y Seguridad de Tipos

Dentro de esos cursillos, también está enmarcado nuestro Taller de Blogs. Espero veros en alguno de los cursos o en el taller ;-)

Tablas con horarios de cursillos (PDF)

Related Posts Plugin for WordPress, Blogger...