Otra vez GNU/Linux y su coste estimado de desarrollo.

Ya hablé hace tiempo del coste estimado de desarrollo de GNU/Linux pero me pareció que los datos que aportaba no eran de suficiente actualidad.

He tardado mucho en publicar esta entrada, la tenía guardada desde hace muchos meses.

Leía poco después en las listas de debian.org un estudio realizado por profesores de la Universidad Politécnica de Madrid y la Universidad Rey Juan Carlos de riguroso interés.
Son 4 páginas de las que resalto algunos detalles interesantes

Los cálculos se han estimado sólo para la rama main (no se ha considerado ni contrib ni nonfree).

La verdad es que los ojos te hacen chirivitas. :shock_tb:

A día 6 de Junio de 2005:

La distribución Debian es producida por el proyecto Debian, un grupo de cerca de 1499 voluntarios.

…hay más de 8,600 paquetes fuente. El release completo comprende cerca de 15,300 paquetes de binarios…

La siguiente tabla de resumen por lenguajes de programación del número de líneas de código de Debian Sarge.

Lenguaje Lineas de código fuente Porcentaje (%)
C   130,847,000 57
C++ 38,602,000 16.8
Shell 20,763,000 9
LISP 6,919,000 3
Perl 6,415,000 2.8
Python 4,129,000 1.8
Java 3,679,000 1.6
FORTRAN 2,724,000 1.2
PHP 2,144,000 0.93
Pascal 1,423,000 0.62
Ada 1,401,000 0.61
Totales 229,496,000 100


Below 0.5% there are some other languages such as Objective C (0.37%), ML (0.31%), Yacc (0.29%), Ruby (0.26%), C# (0.23%) or Lex (0.10%). A number of other languages score less than 0.1%.


COCOMO model are as follows:
Total physical SLOC count: 229.495.824
Estimated effort: 714.440,52 person-months (59.536,71 person-years). Formula: 2,4 * (KSLOC^1,05)
Estimated schedule: 105,84 months (8,82 years). Formula:2.5 * (Effort^0,38)
Estimated cost to develop: 8,043,000,000 USD
To reach these figures, each project was estimated as though it had been developed independently, which is true for nearly all cases.
For calculating the cost estimation, we have used the mean salary for a full-time systems programmer in 2000 according to Computer World – 56,286 USD per year – and an overhead factor of 2.4.

Gráfico. Tamaño de paquetes frente a líneas de código representadas en escala logarítmica para Debian 3.1 Sarge.

Sistema Operativo Lineas de código fuente
Microsoft Windows 3.1 (Abril 1992) 3,000,000
Sun Solaris (Octubre 1998) 7,500,000
Microsoft Windows 95 (Agosto 1995) 15,000,000
Red Hat Linux 6.2 (Marzo 2000) 17,000,000
Microsoft Windows 2000 (Febrero 2000) 29,000,000
Red Hat Linux 7.1 (Abril 2001) 30,000,000
Microsoft Windows XP (2002) 40,000,000
Red Hat Linux 8.0 (Septiembre 2002) 50,000,000
Fedora Core 4 (versión previa; Mayo 2005) 76,000,000
Debian 3.0 (Julio 2002) 105,000,000
Debian 3.1 (Junio 2005) 229,500,000




El número de paquetes continua creciendo y doblándose casi cada dos años

También encontré desde aquel momento a esta parte otra página dedicada a estimaciones de Debian, supongo que del mismo grupo de investigadores.

http://libresoft.dat.escet.urjc.es/debian-counting/
General Statistics for Debian Sarge Code Counting
SLOCCount Web for Debian Sarge: Packages
SLOCCount Web for Debian Sarge: General Graphs

El artículo en formato PDF “Measuring Libre Software Using Debian 3.1 Sarge as a case study”

Algunas de las referencias del artículo:

Y eso que es de hace más de un año. ¿Cómo andará la cosa ahora?

Etiquetas: , , , , ,

Crear imágenes de disquetes

Hoy vamos a crear una imagen de un disquete.

Hoy nos ponemos un poquito retro.
Ahora que las disqueteras no las usa ni su inventor, pues nosotros las sacamos a relucir.

Tan sólo tenemos que tener… todas las herramientas necesarias.

Primero hay que crear una imagen vacía. La llamaremos “disquete.img”

usuario@maquina:~$ dd if=/dev/zero of=disquete.img bs=512 count=2880

Ahora hay que preparar la imagen para ser montada como dispositivo loopback.

root@maquina:~$ losetup /dev/loop0 disquete.img

Se crea el sistema de ficheros, por ejemplo como MSDOS.

root@maquina:~$ mkdosfs /dev/loop0

Finalmente se monta en /mnt/midisquetera

root@maquina:~$ mkdir /mnt/midisquetera
root@maquina:~$ mount -t msdos /dev/loop0 /mnt/midisquetera

Etiquetas: , , , , , , , , ,

Cámaras Web. Logitech Quickcam for Notebooks Pro

No ha sido fácil pero tras unos días he conseguido hacer funcionar la cámara en Debian.
Hay que utilizar drivers aún en desarrollo pero la cosa funciona.

Existen por Internet otros drivers denominados pwc que no funcionan con este modelo. Parece ser que funcionan con cámaras anteriores a los últimos modelos de Logitech (ver tabla).

El mayor problema es que para sistemas operativos GNU/Linux no hay mucho mundo en relación a las cámaras web. Esta es la impresión que yo tengo en cuanto al soporte de cámaras web.
Los fabricantes deberían contratar o pagar a todos los desarrolladores de drivers que hay y apuntarse ya al mundo del software libre. Y si no desarrollan sus drivers como software libre, que al menos se den cuenta de una vez de que es un mercado desaprovechado.

El meollo

La documentación digamos que hay que extraerla de la lista de correo del proyecto Linux uvc driver. Le queda mucho como proyecto, pero el driver es estable.
Aunque quizás como proyecto no llegue a tener un sentido completo, porque por lo que he leído lo que quieren es introducir el driver en el kernel Linux. La opción más sensata, así viene de serie con el kernel el soporte.
Se han centrado en V4L2 y no en V4L en su primera versión que ya ha quedado abandonada por. Al menos de momento V4L está descartado.


Linux UVC driver and tools es el proyecto que da soporte, de momento, a:

Identificador de dispositivo Modelo de cámara Fabricante
046d:08c1 Logitech Quickcam Fusion Logitech
046d:08c2 Logitech Quickcam Orbit Logitech
046d:08c3 Logitech Quickcam Pro for Notebooks Logitech
046d:08c5 Logitech Quickcam Pro 5000 Logitech
046d:08c6 Logitech Quickcam OEM Dell Notebook Logitech
046d:08c7 Logitech Quickcam OEM Cisco VT Camera II Logitech


Para hacer funcionar el driver para la cámara Logitech Quickcam for Notebooks Pro la receta consta de descargar, compilar e instalar :

usuario@maquina:~/src/svn/linux-uvc$ svn checkout http://svn.berlios.de/svnroot/repos/linux-uvc/trunk
root@maquina:~/src/svn/linux-uvc$ su
root@maquina:~/src/svn/linux-uvc$ cd trunk/
root@maquina:~/src/svn/linux-uvc$ make
Building USB Video Class driver…
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.17-1-686′
Building modules, stage 2.
MODPOST
CC /PATH/src/svn/linux-uvc/trunk/uvcvideo.mod.o
LD [M] /PATH/src/svn/linux-uvc/trunk/uvcvideo.ko
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.17-1-686′
root@maquina:~/src/svn/linux-uvc$ make install
Installing USB Video Class driver…
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.17-1-686′
INSTALL /PATH/src/svn/linux-uvc/trunk/uvcvideo.ko
DEPMOD 2.6.17-1-686
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.17-1-686′
depmod -ae

Obviamente para compilar serán necesarios los paquetes de cabeceras del núcleo Linux y puede que alguno más que se me pase por ser obvio.

Hay que añadir al(los) usuario(s) al grupo video por los permisos que se asignan al dispositivo que se crea (en mi caso /dev/video0)

root@maquina:/home/user/src/svn/linux-uvc/trunk$ ls -la /dev/video0
crw-rw—- 1 root video 81, 0 2006-08-03 14:03 /dev/video0
root@maquina:~/src/svn/linux-uvc$ adduser USUARIO video

Una vez enchufemos la cámara salen mensajes de este tipo (yo la he enchufado y desenchufado para que se vean un poco todos los mensajes).

usuario@maquina:~$ dmesg | tail -n 14
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c3)
usbcore: registered new driver uvcvideo
USB Video Class driver (v0.1.0)
usb 4-4: USB disconnect, address 5
usb 4-4: new high speed USB device using ehci_hcd and address 6
usb 4-4: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c3)
6:3:1: cannot set freq 0 to ep 0×86
6:3:2: cannot set freq 0 to ep 0×86
6:3:3: cannot get freq at ep 0×86
usb 4-4: USB disconnect, address 6
usb 4-4: new high speed USB device using ehci_hcd and address 7
usb 4-4: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08c3)

El mensaje cannot set freq 0 to ep 0×86 es debido al micrófono incorporado en la cámara, que aún no funciona.

La aplicación luvciew es útil para ver si funciona nuestra cámara.

usuario@maquina:~/src/webcam/$ wget http://mxhaard.free.fr/spca50x/Investigation/uvc/luvcview-20060706.tar.gz
usuario@maquina:~/src/webcam/$ tar -xvf luvcview-20060706.tar.gz
usuario@maquina:~/src/webcam/$ cd luvcview-20060706
usuario@maquina:~/src/webcam/luvcview-20060706$ make
ERRORES debido a la falta de las librerias Simple DirectMedia Layer
usuario@maquina:~/src/webcam/luvcview-20060706$ apt-get install libsdl1.2-dev

Para que funcione la cámara con ekiga es necesario instalar el plugin para V4L2 de las Portable Windows Library.

usuario@maquina:~$ apt-get install libpt-plugins-v4l2


Aplicaciones

Que soportan V4L2

Todas estas las he probado y funcionan:

Aplicaciones en el limbo, es decir, por el momento sin comprobar
  • camorama
  • camE
  • (esto es un comando encontrado en la lista de correo) ffmpeg -vd /dev/video0 -s 640×480 -r 5 -b 5000 -y -vcodec mpeg4 -f avi – | mplayer –
Aplicaciones que NO soportan V4L2, por el momento que yo sepa


Cuestiones

¿Alguien conoce algún otro programa?
¿Me dejo algo?

Otros proyectos y referencias

Versión actual del driver pwc.. Parece dar soporte completo (a alta resolución) con un driver libre. De hecho, en esta versión está basado el paquete pwc-source de Debian .
Versión no mantenida desde hace tiempo de los drivers pwc. Para funcionamiento “completo” requieren del driver binario (y polémico) pwcx.
Linux support for Philips USB webcams (and Linux only). No lo he probado. Creo que tiene que ver con el enlace anterior porque no hay noticias nuevas desde el 2004.

Etiquetas: , , , , , , , , , , , , , , , ,

Warning: "/tmp/vmware-config0/vmnet-only/vmnet.o" failed to load: Not a kernel module, lacks modinfo section

Si usas la última versión del kernel, la 2.6.17 puede que los módulos para vmware no compilen.
Tienen un pequeño problema de carencia de información básica (autor, licencia….) que se suele incluir en los módulos para el kernel linux:

*** Warning: "/tmp/vmware-config0/vmnet-only/vmnet.o" failed to load: Not a kernel module, lacks modinfo section
make[2]: *** [__modpost] Error 1
make[1]: *** [modules] Error 2
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.17-1-686'
make: *** [vmnet.ko] Error 2
make: se sale del directorio `/tmp/vmware-config0/vmnet-only'
Unable to build the vmnet module.

Para resolverlo hay dos opciones.

Opción 1

root@einstein:/usr/lib/vmware/modules/source$ tar -xvf vmnet.tar

Añadimos MODULE_AUTHOR(“VMWare”); al archivo driver.c antes de la línea #ifdef VMW_HAVE_SK_ALLOC_WITH_PROTO

root@einstein:/usr/lib/vmware/modules/source$ emacs vmnet-only/driver.c
root@einstein:/usr/lib/vmware/modules/source$ ll
total 1387
-rw-r--r-- 1 root root 1003520 2006-07-04 17:59 vmmon.tar
drwxr-xr-x 2 root root    1528 2006-07-29 16:41 vmnet-only
-rw-r--r-- 1 root root  358400 2006-07-04 17:59 vmnet.tar
-r--r--r-- 1 root root   51200 2006-07-04 17:55 vmppuser.tar
root@einstein:/usr/lib/vmware/modules/source$ mv vmnet.tar vmnet.tar.old
root@einstein:/usr/lib/vmware/modules/source$ tar cvf vmnet.tar vmnet-only/
root@einstein:/usr/lib/vmware/modules/source$ ll
total 1787
-rw-r--r-- 1 root root 1003520 2006-07-04 17:59 vmmon.tar
drwxr-xr-x 2 root root    1528 2006-07-29 16:41 vmnet-only
-rw-r--r-- 1 root root  409600 2006-07-29 16:42 vmnet.tar
-rw-r--r-- 1 root root  358400 2006-07-04 17:59 vmnet.tar.old
-r--r--r-- 1 root root   51200 2006-07-04 17:55 vmppuser.tar
root@einstein:/usr/lib/vmware/modules/source$ rm -rf vmnet-only/

Tras esto volvemos a compilar/configurar el vmware con el comando destinado a tal efecto y listo.

root@einstein:/usr/lib/vmware/modules/source$ vmware-config.pl
...
Building the vmnet module.

Building for VMware Workstation 5.5.x.
Using 2.6.x kernel build system.
make: se ingresa al directorio `/tmp/vmware-config2/vmnet-only'
make -C /lib/modules/2.6.17-1-686/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.17-1-686'
  CC [M]  /tmp/vmware-config2/vmnet-only/driver.o
  CC [M]  /tmp/vmware-config2/vmnet-only/hub.o
  CC [M]  /tmp/vmware-config2/vmnet-only/userif.o
  CC [M]  /tmp/vmware-config2/vmnet-only/netif.o
  CC [M]  /tmp/vmware-config2/vmnet-only/bridge.o
  CC [M]  /tmp/vmware-config2/vmnet-only/procfs.o
  CC [M]  /tmp/vmware-config2/vmnet-only/smac_compat.o
  CC [M]  /tmp/vmware-config2/vmnet-only/smac_linux.x386.o
  LD [M]  /tmp/vmware-config2/vmnet-only/vmnet.o
  Building modules, stage 2.
  MODPOST
  CC      /tmp/vmware-config2/vmnet-only/vmnet.mod.o
  LD [M]  /tmp/vmware-config2/vmnet-only/vmnet.ko
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.17-1-686'
cp -f vmnet.ko ./../vmnet.o
make: se sale del directorio `/tmp/vmware-config2/vmnet-only'
The module loads perfectly in the running kernel.
...

Opción 2
La otra opción es aplicar la última actualización de los parches de la serie any any. No se quién los realiza. Pero resuelven cualquier problema para poder compilar los módulos de vmware con las últimas versiones del kernel linux al poco de liberarse.

Siempre se puede encontrar la última versión aquí:
Directorio donde encontrar la úlitma versión de vmware-any-any. A fecha de hoy el archivo se llama vmware-any-any-update113.tar.gz

También dejo un enlace para la mula:
vmware-any-any-update102.tar.gz (Enlace tipo ed2k)
vmware-any-any-update104.tar.gz (Enlace tipo ed2k)
vmware-any-any-update113.tar.gz (Enlace tipo ed2k)

Se aplica en tres sencillos pasos:

tar xzf vmware-any-any-update113.tar.gz
cd vmware-any-any-update113
./runme.pl
Referencias:

Can’t compile vmnet.ko on (Debian) Linux kernel 2.6.17

Etiquetas: , , , , , , , , ,

network manager …. (Connection ":1.XX" is not allowed to own the service)

El network manager es una maravilla de la ciencia del software libre que permite acercar a un más a la comodidad y a la simplicidad la configuración de nuestros dispositivos de red.

Concretamente para configurar nuestros dispositivos de conexión wifi es la bomba, con un solo clic te lista todas las redes wireless detectadas en ese momento.

Si aparece un error como el siguiente es porque los usurarios que quiera utilizar el applet han de pertenecer al grupo “netdev“:

** (nm-applet:23088): WARNING **: &lt;WARNING&gt;      nma_dbus_init (): nma_dbus_init() could not acquire its service.  dbus_bus_acquire_service() says: 'Connection ":1.16" is not allowed to own the service "org.freedesktop.NetworkManagerInfo" due to security policies in the configuration file'

A veces es tán útil leer:

io@einstein:~$ less file:///usr/share/doc/network-manager/README.Debian

Para añadir el usuario al grupo o herramienta gráfica o línea de comandos y para aplicar los cambios reiniciar el dbus.

io@einstein:~$ adduser USUARIO netdev
io@einstein:~$ /etc/init.d/dbus reload

BiblioRed:
Página principal del proyecto network manager

Etiquetas: , , ,

Guadec-es y Guadec 2006.

guadec 2006 en cataluña, del 24 al 30 de junio

Se celebra desde este fin de semana.
No he podido ir finalmente. Una pena. Hubiera estado ir con mi apañero en lo del trabajao.
Habrá que conformarse con ir leyendo las presentaciones y escuchando y viendo los videos en directo.
Este fin de semana pasado la guadec hispana.

Muchos bueno.

Etiquetas: , , , , ,

La catedral y el bazar

Despues de ver el documental sobre el laboratorio 03, de emocionarme, de motivarme, me he dado una vuelta por algunas de los proyectos alojados en sindominio.net, que no son pocos.
He llegado sin darme cuenta a “La catedral y el bazar” y fíjate, me he dado cuenta de que no lo había leído.

El tío de las pistolas. Así es como se conoce a Eric Raymond desde la gente más extremista del software libre.
Eric Raymond es un tipo que defiende su libertad. Su libertad para llevar un arma y poder defenderse. Y el tipo lo ve perfecto.
Además de todo esto es el creador de la corriente código abierto, que visto desde lejos es casi lo mismo que el software libre, pero que visto de cerca claramente no tiene nada que ver.
Pues escribió en su momento un, como llamarlo, un escrito. La catedral y el bazar.
Es un texto conocido por todos aquellos que andan liados en temas filosofales del software libre. Una referencia.

En un primer vistazo rápido he descubierto perlas cómo las “leyes de” :

…no se entiende cabalmente un problema hasta que se implementa la primera solución…

Cualquier informático da fe.

…”con muchas miradas, todos los errores saltarán a la vista”. A esto lo he bautizado como la Ley de Linus

Cualquiera persona da fe.

…la opinión promedio de un número grande de observadores igualmente expertos (o igualmente ignorantes) es más confiable de predecir que la de uno de los observadores seleccionado al azar. A esto se le conoce como el efecto Delphi…

Cualquiera persona da fe.

…Fred Brooks, Capítulo 11: “Muéstreme su código y esconda sus estructuras de datos, y continuaré intrigado. Muéstreme sus estructuras de datos y generalmente no necesitaré ver su código; resultará evidente.”…

Cualquier informático da fe.

Lo tengo que leer detenidamente, porque a pesar de ser del de las pistolas, tiene cosas buenísimas de las que uno ve continuamente pero no se para a reflexionar. Te llaman loco. Cuando las ves escritas por otro dices, “eeeh, mola tío”.
Referencias:
[sindominio.net] La catedral y el bazar (versión HTML)
[elastico.net] La catedral y el bazar (versión PDF)
[eldemonionegro.com] La catedral y el bazar (versión PDF)

Etiquetas: , , , , ,

snd_pcm_hw_params_set_rate_near version ALSA_0.9.0rc4 not defined

Se asumen ciertos riesgos cuando trabajas con la rama inestable.
Te puede desaparecer el sonido por una actualizanción de librerías. En este caso al pasar a la librería libasound en su versión 1.0.11-5.

El Informe de seguimiento del bug número 369222

Este era el error:

esd: relocation error: /usr/lib/libesd.so.0: symbol
snd_pcm_hw_params_set_rate_near, version ALSA_0.9.0rc4
not defined in file libasound.so.2 with link time reference

Volver a una versión anterior de libasound (1.0.11-3) y libasound-dev (1.0.11-3) ha sido la solución.

Etiquetas: , , ,