Here you will find several texts and/or talks I have presented regarding Free Software. Of course, depending on the target audience, some are written in English, some in Spanish. Even a few of them are bilingual!
Aquí encontrarás varios textos y/o ponencias que he presentado relativos al Software Libre. Por supuesto, dependiendo de la audiencia objetivo, algunos de estos textos están en inglés y algunos en español. Algunos, de hecho, son bilíngües!
I sent this short article for publication at the Software Gurú magazine. It describes the work we do at Debian's pkg-perl group. This is based on my slightly earlier talk Integrating Perl in a wider distribution: The Debian pkg-perl group, shortened and translated to Spanish.
This is only a first approach, and not a presentation I'd like to regard to as finished. I was asked to present this as part of a panel in Linux World Mexico Conference & Expo 2008: A brief introduction to Free Software licensing schemes.
Munin is an easy, rich, configurable, extensible, autodiscovering system- and network- monitoring framework. I explain what it is, how to deploy it and how to implement custom plugins.
Perl modules are very well organized in CPAN: They can usually be easily found and, thanks to tools such as the CPAN shell, they are easy to install and update even by novice users. However, when people start using Perl systems (as opposed to using Perl for writing such systems), asking them to take care of the dependencies or having them worry about different distribution architectures is a pain that should be spared from them.
In my talk, I will describe how Debian (and other Free Software distributions) addresses this problem by packaging a large subset of the CPAN archive, what is the task and scope of Debian pkg-perl team, some of the tools we use - and, most importantly, what is the best way for us to interact with you, the upstream authors' community - regarding our bug tracking systems, regarding module building and dependencies information, etc.
I presented this talk at YAPC::Europe 2007, Vienna, August 2007.
This talk is heavily based on QA in Free Software projects; it has basically been reformatted, rearranged and updated. So yes, if it sounds familiar... it is because it is so.
The Web development framework "Ruby on Rails" has gained adepts with an impressive speed. What brings this success on? Ruby is a very comfortable and expressive language, and clearly a young language. Even being quite a nontypical language at a first look -to say the least-, after not such a long time, it becomes just natural and we start wondering how we managed to go by without it. But Ruby's comfortability is nothing but the first step towards Rails. Rails' complete style keeps in the programmer's mind the best way to go through the easiest path - And I mean long-term easiest path. It is strictly built adhering to the Model-View-Controller pattern. Another fundamental point is that it is defined as strongly opinionated software: Phrases such as "Convention over Configuration", "Don't Repeat Yourself", and others will lead us to understand why Rails has empowered Ruby's growth. With this talk, I want just to present this environment to the audience. I do not show off the typical -and, in my opinion, ridiculous- demonstrations on how complete systems can be built in just minutes, but I will present some of the main points that getting in touch with Rails has most impacted my way of working, both inside Rails and in other languages and frameworks
SmbGate is a little program written in Perl (using the Embperl framework) that allows users to connect to their home directories in a SMB server (be it Samba running on an Unix-like environment or Windows). It implements read-only access, using a Web-based interface.
Beyond what the Debian policy gives us, a highly coherent system in which everything is in its place and works as it should (for what we the system administrators are really thankful for), we can find a great amount of tools for easing the homogeneity in the administration both in the planning of its package management system as in many packages we have at our disposition. We will go through this, as well as the process of creating .deb packages, beyond the basic instructions. This talk was originally prepared for CICOL, June 2006
Almost everybody has faced the need to store a large amount of human-generated information (specifically, extense texts) and later ease the need to search on it. There are many techniques we can use, but we often miss the most powerful ones.
Human spoken or written language is known as natural language. In this talk I present some techniques that allow us to process it to make it easier and simpler its analysis, and make more efficient searching on it, specially based on the Snowball project and its application to databases through PostgreSQL's TSearch2 module.
This talk is basically the result of mixing What is Free Software and Quality Assurance in Free Software projects, emphazising in the knowledge production aspects related to Free Software. This talk was first given at the UNAM Economical Research Institute, April 12, 2005.
How is Quality Assurance handled in Free Software projects? Even more, what does Quality Assurance mean in the Free Software world? The Debian project is analyzed as an example. This talk was prepared to be presented in CLEI2004, Arequipa, PerúForman parte los siguientes archivos:
You might also find interesting the Participation in Free Software projects: Technical and social aspects talk, heavily based on this one, reformatted and updated.
Perl is one of the most popular languages today. Many people, however, do not think it is a good language to do objet-oriented programming, that it is a difficult task to do it or similar things, and leve Perl for tasks that are just too simple. In this tutorial I present an introduction to object-oriented programming in general, and show how to use this technique in Perl.
What social characteristics can define the Free Software developers? Are we really a homogeneous group? Which problems can appear when facing a global project? How can we avoid them? I analize mainly the Debian project, comparing a bit with the OpenBSD and Ximian/Gnome projects.
This talk was prepared for the 2003 GULEV conference.
It is available as:
Copyright (c) 2003, 2005 Gunnar Wolf - gwolf@gwolf.org
I started using mutt as my mail reader a couple of months ago. One of the features I most liked about mutt is that the messages are by default sorted by thread - this really helps following a long conversation in a very active mailing list!
In order to have the threading as complete as possible, I started archiving all my old messages - of course, as mutt users do, I now save each mailing list to a different folder. Life was great.
Life was not perfect, though. After a couple of weeks, some of my mailing lists had too much traffic, and -at over 2000 archived messages- mutt took some time to open them. I am currently using mbox-formatted mailboxes - switching to maildir might have solved the problem for a couple of weeks, but it would happen again. I did not want to artificially cut my mailbox at a specific date, as I would lose all the benefits of my beloved threads.
I came across the fine and overwhelmingly complete Mail::Box Perl module, and I found how easy would it be to move old threads to a different mailbox, instead of moving individual messages.
Usage is quite straightforward - first of all, as usual:
eot -h
will give you a list of EOT's options, all of which are optional (but usually you will want to specify at least -f and -F).
The valid options are:
eot -f <from_mailbox> -t <from_type> -F <to_mailbox> -T <to_type> -p <period> All arguments are optional. opt description default ====================================================================== -f Which source mailbox to use mailbox -t What format is this mailbox in (mbox, maildir, mh) mbox -F Which destination mailbox to use mailbox.arch -T What format is this mailbox in (mbox, maildir, mh) mbox -p Period of time to declare a thread as old, in days 7 -v Whether to report work statistics to STDOUT 0
-f and -F refer to a mailbox - either to a file (if it is a mbox mailbox) or to a directory (if it is a maildir or MH mailbox) in the local directory, or the full (or relative) path to the mailbox in question.
-t and -T refer to the kind of mailbox to open - mbox, maildir or mh.
-p indicates how old (in days) should the last message in a thread be for the whole thread to be considered inactive.
If -v is not specified, EOT will run quietly. If -v is specified, a short summary will be reported after running.
EOT is licensed under the GNU GPL version 2 or higher, at your option.
The full text of the GNU GPL can be found here.
EOT is written in Perl, and therefore requires Perl (version 5 or higher) to be installed. Additionally, EOT requires the following Perl
modules:
Mail::Box (tested with 2.038)
Date::Parse - part of TimeDate (tested with 1.1400)
You can find them at the CPAN. If you use a Debian system, they are resepctively in the libmail-box-perl and libtimedate-perl packages.
EOT was created by Gunnar Wolf (gwolf@gwolf.org) in May 2003. You
can use it freely for whatever you want as long as you abide by the
GNU GPL license.
Ok, so I got you interested? ;-)
You can download version 1.1 of EOT here.
A system I wrote while working for FES Iztacala. It helps a network administrator on his tough job relating MAC and IP addresses, generating configurations for the DHCP server and for ARP.
Several years later, already working at IIIEc UNAM, I practically re-wrote it from scratch, cleaner, with an object-oriented layer, using the Template Toolkit for the presentation, and as an Apache module (with mod_perl). Both versions are useful and usable - here you have both. Both are, however, in a "snapshot" state, lacking smaller bits of functionality and documentation.
IPManage (2003, CGI-oriented edition)
IPManage (2007, OOP, mod_perl-driven edition)
Free Software has many advantages against propietary software in many areas. However, when we talk about the government, this goes soon beyond convenience - It is necessary that, if a government dependency hires or carries a given development, it should demand that the license it is made on is free and it is built over a free infrastructure. I gave this talk in Mexico city's Government's Encuentro de Informática de Otoño 2003, explaining the reasons for these demenads.
OpenBSD is a stable, robust and secure operating system. Systems administrators running OpenBSD tend to be also more security conscious than administrators running other operating systems. Nevertheless, patching an OpenBSD system can be a tedious process for many people. If a person manages multiple OpenBSD servers, patching each of them can be a long and repetitive task, ideal for automatization.
Tepatche will periodically check the FTP site we indicate it to, and if there is a new patch to be applied, downloads, applies, builds and installs it. Tepatche mantains a small status database to know in what is the status of each of the system's patches.
Tepatche consists of one program file (/usr/local/sbin/tepatche), a configuration file (/etc/tepatche.conf) and a data directory (/var/db/tepatche/). The configuration file has the following fields:
With this file in place, Tepatche can be run simply with no arguments, just /usr/local/sbin/tepatche. I suggest you to run it from your crontab (see man crontab(5)). I suggest running it once a day, at most once an hour - please don't flood ftp.openbsd.org with requests every minute ;-)
Tepatche keeps the information it needs about the state of the system in the 'statusfile' (by default, located at /var/db/tepatche/statusfile). This is a plain-text file following the format:
<descriptor>::<status>
Where 'descriptor' is an alphanumeric string, and 'status' is a valid status number. Valid status numbers are:
The descriptor is usually in the form <arch>/<num>_<description>.patch - It states the architecture for which it was created, the consecutive patch number, a very short description on what it does, and the '.patch' suffix. This is the standard nomenclature followed by the OpenBSD team. a sample name would be:
common/001_sshafs.patch
This shows that the patch will be applied to all architectures (common), it is the first patch produced for this release (001), and it fixes a problem related to 'sshafs'.
If you want to modify this file (of course, always AT YOUR VERY OWN RISK), you can follow this conventions to let Tepatche know the new status of the patch. For example, in the 3.1 release a very dangerous bug appeared in OpenSSH. The OpenBSD team advised to upgrade to OpenSSH 3.4, overwriting the /usr/src/usr.bin/ssh directory. Later, they published a patch (common/006_sshpreauth.patch) to fix the vulnerability for people who prefered not to upgrade. Many people already have the 3.4 tree installed, and the patch files to be applied. You should then edit /var/db/tepatche/statusfile and replace
common/006_sshpreauth.patch::10
by
common/006_sshpreauth.patch::4</pre> <h3>TO DO</h3> At least: <ul> <li>Make output more friendly (half-done)</li> <li>Handle error cases more reliably (half-done)</li> <li>Add a <i>non-paranoic</i> option (maybe?)</li> <li>Add some more levels to the statusfile, explaining the reasons for a failure</li> <li>Add a tool to easily edit the statusfile from the command line (maybe?)</li> <li>Add some extra accepted commands for the builder (checking them with regexes)</li> <li>Re-sync this page with the Spanish translation :)</li> <li>Handle different transfer protocols (i.e., CVS over SSH)</li> <li>Test, test,test</li> </ul> <h3>DOWNLOAD</h3> You can get your Tepatche (currently at version 0.85) <a href="/files/tepatche-0.85.tar_.gz">right here.</a> If you are interested in reading the article I wrote on it for the <a href="http://www.samag.com/articles/2003/0312/">December 2003 issue of Sysadmin</a>, you can find it <a href="/files/tepatche_sysadmin.txt">here</a>. <h3>WHY TEPATCHE?</h3> Tepache is a popular, slightly alcoholic drink in Mexico, where I live and where this program was devised. Tepache is the result of fermenting pineapple in water. Quoting from <a href="http://www.fao.org/docrep/x0560e/x0560e09.htm" title="http://www.fao.org/docrep/x0560e/x0560e09.htm">http://www.fao.org/docrep/x0560e/x0560e09.htm</a> : <cite>Tepache is a light, refreshing beverage prepared and consumed throughout Mexico. In the past, tepache was prepared from maize, but nowadays various fruits such as pineapple, apple and orange are used. The pulp and juice of the fruit are allowed to ferment for one or two days in water with some added brown sugar. The mixture is contained in a lidless wooden barrel called a "tepachera", which is covered with cheese cloth. After a day or two, the tepache is a sweet and refreshing beverage. If fermentation is allowed to proceed longer, it turns into an alcoholic beverage and later into vinegar. The microorganisms associated with the product include Bacillus subtilis, B. graveolus and the yeasts, Torulopsis insconspicna, Saccharomyces cerevisiae and Candida queretana (Aidoo, 1986). </cite> If you are curious, you can find recipes to prepare tepache (in Spanish) at <a href="http://www.chi.itesm.mx/chihuahua/arte_cultura/cocina/bebidas/tepache.html" title="http://www.chi.itesm.mx/chihuahua/arte_cultura/cocina/bebidas/tepache.html">http://www.chi.itesm.mx/chihuahua/arte_cultura/cocina/bebidas/tepache.ht...</a> and <a href="http://mexico.udg.mx/cocina/bebidas/tepache.html</p> <p>I" title="http://mexico.udg.mx/cocina/bebidas/tepache.html</p> <p>I">http://mexico.udg.mx/cocina/bebidas/tepache.html</p> <p>I</a> found a recipe in German (I cannot tell if it is right or not ;-) ) at: <a href="http://www.mexiko-lindo.de/rezepte/getraenke.htm</p> <p><h3>THANKS</h3></p> <p>First" title="http://www.mexiko-lindo.de/rezepte/getraenke.htm</p> <p><h3>THANKS</h3></p> <p>First">http://www.mexiko-lindo.de/rezepte/getraenke.htm</p> <p><h3>THANKS</h3></p> <p>First</a> and foremost, I want to thank the OpenBSD team for the incredible amount of work they have thrown into this great project. On a smaller scale, Tepatche would not have been possible without the help of <a href="http://www.openbsd.org.mx/">OpenBSD México</a>. In this specific project, I recieved great help from <a href="http://www.openbsd.org.mx/%7Ealex/">Alex Juárez</a>, <a href="http://www.openbsd.org.mx/%7Ecesar/">César Yáñez</a> and <a href="http://www.openbsd.org.mx/%7Eheinz/">Karl Heinz Holtschmit</a>. Of course, I want to thank my workplace, <a href="http://www.iztacala.unam.mx/"> UNAM FES Iztacala</a>, for granting me time to work in security and Free Software for already three years - and I expect many more.
I have given this talk on a number of places. It answers a couple of very important questions, that for many people seem to be obvious: What is Free Software? What lies behind our movement? What implications does it have?
Of course, I try to give it a different emphasis, ellaborating on Free Knowledge, on software being an expression of science.
A presentation prepared for Días de Software Libre, confernce organized by Melix at CUCEI (Guadalajara, May 2002). Here I talk about what are package management systems, why are they needed in modern operating systems, the main characteristics
for the main package management systems, and briefly explain how to create .deb (Debian) packages.
This talk is available as:
A little tutorial I gave at Talleres de Linux en la UPN in August 2002, trying to teach the main elements of Perl programming.
Este tutorial fue escrito originalmente por Gunnar Wolf. Las versiones ampliadas o actualizadas del mismo serán publicadas en http://www.gwolf.org/soft/curso-perl
El texto, parcial o completo, de este tutorial puede ser copiado, modificado, redistribuído, incluído en otras obras o utilizado de cualquier manera siempre y cuando se reproduzca este aviso.
El autor no se responsabiliza de la veracidad, aplicabilidad, utilidad, ni de ninguna consecuencia derivada directamente o indirectamente de este texto.
Dar un panorama general del lenguaje de programación Perl para quien aún no lo conoce, mostrando sus principales características y las tareas para las que más frecuentemente es utilizado.
if <i>expr</i> { (...) } elsif <i>expr</i> { (...) } else { (...) }
(...) if <i>expr</i>unless<i>expr</i> and (...)<i>expr</i> or (...)<i>expr</i> ? (...) : (...)
while (<i>expr</i>) { (...) }
until (<i>expr</i>) { (...) }
do { (...) }while/until
for (<i>expr1</i> ; <i>expr2</i> ; <i>expr3</i>) { (...) }
foreach <i>$var</i> (<i>lista</i>) { (...) }
lastnextdieredocontinuemap {} ()grep {} ()sort {} ()undef'...', q(...)"...", qq(...)`...`, qx(...)qw(...), qr(...)
use vars, ourlocal)my)&funcion(), funcion(), &funcion, funcion@_ y por quéreturnmy $func = sub {...}open estilo tradicional
open (FILE, expr) (entre otras...)IO::File
open y de sysopen, permisos)print ARCH 'algo';'.pl'. Por ejemplo:require 'biblioteca';.pm, y traduce '::' por '/' en la búsqueda del archivo.
1; use módulo lista, donde módulo necesariamente es un bareword, y lista es la lista de símbolos a importar.BEGIN {require módulo; import módulo lista}Mayor información:
perldoc perlmodlibperldoc -f requireperldoc -f useuse pragma, pero a diferencia de los módulos, pueden ser desactivados con no pragma.constant, diagnostics, integer, lib, vars, warningsMayor información:
perldoc perlmodlibstrict
vars: Evitar variables no declaradas, sin ámbito o sin calificación de espacio de nombres completa.local - únicamente con use vars, our, my, o nombre completo ($main::var)refs: Evitar referencias simbólicas - Por ejemplo:
$var = 'valor'; print $$var; # Si no usamos strict, imprime $valor
subs: No permite el uso de barewords (palabras sueltas) - exige que las llamadas a funciones se expliciten, ya sea anteponiendo el signo & o especificando una lista de parámetros entre paréntesis (aunque esté vacía).perldoc perlsecBEGINENDDESTROY
In this presentation, I explain what is Debian GNU/Linux, and what makes it be what it is. I presented it for Departamento de Seguridad en Cómputo's GASU seminar, May 2002.
The following files are very old, dating from the 2002 seminar I gave this talk at. Anyway, in case you are interested:
This talk was prepared for Congreso GNU/Linux 2002, prepared by GULEV in Veracruz, December 2002. Here I talk about the process leading to the creation of this new version of Perl, and the main changes we can expect for this language.
I wrote the presentation in Magicpoint; you can download the source Magicpoint file, or if you prefer, open the presentation converted to HTML.
Tutorial (not completely finished) I gave together with Rodrigo Galladro at Congreso Nacional de Software Libre (CONSOL 2002). There are many aspects in this tutorial that are just outlined, but I hope you find it useful.
You can grab the source LyX document; it is available also translated to HTML and as a PDF document.
As a complement, you might be interested also in the advanced Bash tutorial outline I prepared for a talk in late 2007; it is based on Octavio Ruiz (Tacvbo)'s tutorial. It only mentions the points I went over, but still, it can be a useful compendia.