Skip navigation.

Posts tagged with "open source"

What if nVidia had an open source driver?

, , , ...

The Free Software and Open Source community is always asking for hardware manufacturers to write free and open source software (from now on called FOSS) drivers. So, let's try to guess what would happen if nVidia decided to release the graphics drivers as FOSS.

This is only a supposition, don't think the information here is true, has happened or is going to happen. (but I guess most of us would love to see it happen)

Day 0: nVidia announces it will be releasing the graphics drivers as FOSS

On this day, nVidia caused a big repercussion on all world. All computer-related news sites comment about this move. Many news sites for the average public also publish this. nVidia homepage is slashdotted and goes down just half hour after the announcement. Many bloggers all around the world also update their blogs to write comments on this subject. Both bloggers and slashdot users are divided into two groups: those who approve this decision, and those who doubt it will actually happen.

Day 70: nVidia releases the first FOSS graphics driver

More than two months later, when many people were thinking it wouldn't happen, nVidia publishes the first FOSS version of its graphics driver. Again, news sites all around the world talk about this. nVidia homepage is slashdotted, again, and nVidia FTP can't handle the number of downloads. Fortunately, many people are already distributing the tarball by bittorrent, unofficial HTTP mirrors and IRC DCC. Two hours after the release, there is already a masked ebuild in Gentoo repository and a copy of the tarball at Gentoo mirrors.

Contrary to what skeptical people thought, this release is an actual Free Software. Note: This is a key point. The driver source-code must not only be viewable, but must be free to be modified and redistributed. (If the driver is not Free Software, then nothing of what is said here is possible)

Someone creates a project at SourceForge.net to host the first fork of nvidia-driver.

Day 91: The community starts to organize the work

By now there are at least five forks of the nVidia driver, plus hundreds of patches floating on many blogs, forums, personal homepages, bug trackers and mailing lists.

Part of the community starts to organize itself and concentrate efforts towards one project. This project may be officially supported by nVidia itself, or it may be a completely thirdy-party fork.

Besides this project, other two or three forks also try to concentrate efforts. Some people also try to join the current nv driver with the new FOSS nvidia-driver. Eventually, at most two or three forks will "survive" in long-term.

nVidia announces it won't support systems which use non-official drivers. (But, hey! Tell me a big company that actually has a good support for users. If you, like me, can't name any of them, then this announcement won't hurt the users so much.)

Day 127: Work starts to generate good results

In this short period of time, hundreds of thousands hackers (i.e., programmers) read, test and modify the code on all types of hardware and software combinations. The amount of people involved surpasses by far the number of programmers nVidia was ever able to hire. The amount of different motherboards, CPUs, memories, operating system versions and X.org versions onto which nvidia cards and drivers were tested is far greater than the number of test computers at nVidia development offices.

Because of this, hundreds bugs are discovered and fixed. Most of them nVidia would never be able to replicate itself, because they only happened on specific hardware/software combinations. Other bugs known by users for months (or years) also get fixed.

And why would all of these people work for free? Because they want to use the computer. Let's suppose one of these people finds a bug, and this bug is annoying or severe enough to disrupt his own work, so he can't use the computer the way he should. Then this guy can try to fix the bug himself, or at least track down the bug. Whatever he does about this it, he shares what he finds with other people (the "community"). This way, other people can help him to fix the bug, and, when it is finally is fixed, everyone benefits from work. Thus, the end-product of this process should be a better, more robust and less buggy software. And with a less buggy software, all people (both those who are technically-skilled and those who don't know what a graphics driver is) can use computers with less problems.

Of course, there are more advantages. If needed, the free driver can be ported to other operating systems, including those which nVidia does not officially support (like OpenBSD and NetBSD). With a free driver, people can also compile support for only for the actual GPU on system, resulting on a smaller driver and a smaller kernel, which could be important on some situations.

Day 150: nVidia sales have grown

Even when nvidia-driver was closed source, many people preferred to buy nVidia cards over ATI cards because nvidia-driver worked better than ATI's, at least on Linux.

With all the fuss about FOSS nvidia-driver, nVidia sales have increased and it is now dominant on video card market.

ATI, worried about losing more market share, starts to think about making its driver free too.

Day 160: Cross-operating system driver

One of the forks try to keep an unified core, common to all operating systems (Windows, Linux, *BSDs, ...), and make wrappers for each one.

Note: I guess (or I hope) this is roughly how nVidia develops its driver.

Day 224: The stable driver

After long testing and development, the new FOSS nvidia-driver (or the most successful fork of it) is now much less buggy than what nvidia-driver originally was. But the development goes on.

Until now, many people have burnt their video cards by testing/developing the driver or by overclocking it.

Gentoo marks this new FOSS nvidia-driver as stable on its repository.

Day 240: Ubuntu live-cds

The so famous and ubiquitous Ubuntu distribution adds the FOSS nvidia-driver to its repository. It is also announced that next live-cds will already come with FOSS nvidia-driver pre-installed, allowing people to enjoy Ubuntu and 3D desktop (either with Compiz, Beryl, Compiz/Beryl fusion, or whatever is available in that time) without even installing it.

Day 999: Debian repository

The first FOSS nvidia-driver reaches the "stable" Debian distribution.

Note: I'm not sure if this date is underestimated.

Day ???: Other hardware drivers

Other hardware manufacturers also follow the nVidia decision and release FOSS of their drivers.


Final considerations

I'm not saying FOSS is a magic solution that will magically make all software better. Actually, I believe this is going to work with nVidia drivers because that software is already in a good state and because many people "need" to use it, so many people will test and modify it.

A manufacturer of a very specific or less-known hardware pieces should also release the drivers as FOSS, because, then, it will be possible to improve or fix these drivers whenever needed. Of course, releasing a badly-written driver as FOSS is not good.

Finally, let's take a look on winmodem (softmodem) drivers for Linux and learn why manufacturers must not release only closed-source drivers. Some (or many?) of these modem drivers are closed-source and were compiled for kernel-2.4 with gcc-2.9. This means the user won't ever be able to upgrade his system, or install one of the newest distros, else his modem won't work. The user can't also fix the modem driver, because the driver is not free.

Computer world changes very fast. Software changes at a blazing speed. Even though hardware changes too, hardware must be bought, can't be just updated like software. After some time, it always happens that new software runs on old hardware. This is how things work, manufacturers can't change it and they must not try to change it.

Manufacturers don't update drivers for old hardware. In my opinion, that's ok, they have to worry about new hardware and they can't focus on updating all old software. But, if the software is free, then the users can (and will) update the drivers as needed.

Again, Free Software is not a miraculous solution to all software problems. But the world would be a better place if all hardware had open drivers.

Kombi é open-source

, , ,

This is a Portuguese post, more interesting (maybe only interesting) to people living in Brazil, specially in Rio de Janeiro.

Se você mora no Rio, pode pular este parágrafo. Se você não mora, gastarei algumas linhas explicando o contexto. Aqui, há centenas ou milhares de Kombis e vans fazendo transporte "alternativo". Muitas delas fazem linhas parecidas (ou iguais) às linhas de ônibus. Outras, no entanto, fazem itinerários que nenhum outro ônibus faz. Na maior parte das vezes, a tarifa de kombis e vans é mais barata e o tempo de viagem é menor (por diversos motivos, entre eles cortar caminho para evitar congestionamentos). Apesar de quatro pessoas num banco de Kombi ser um pouco apertado, ainda é mais confortável do que ônibus lotado, ou ônibus com bancos tão próximos que não cabem sua perna (caso você seja alto).

Meu objetivo neste "post" não é defender ou atacar as Kombis, nem apontar seus defeitos ou vantagens. Meu objetivo é abordar as diversas características que tenho observado que me fazem concluir que as Kombis são open-source.

Patches

Se você costuma viajar de Kombi, vai perceber que cada motorista ou dono fez algum tipo de modificação diferente. Dificilmente você encontrará duas Kombis diferentes que sejam completamente iguais por dentro e por fora.

Podemos comparar essas modificações com as configurações e patches que cada usuário Linux/Unix/BSD faz com seu sistema.

Kernel patch

Dentre todos os patches existentes para Kombis, sem dúvida nenhuma o mais popular é o gas-natural-kit.tar.gz. Dificilmente você encontrará alguma Kombi rodando sem este patch. Seu objetivo é diminuir o consumo de recursos, de modo que o motorista (usuário) possa utilizar melhor os recursos que possui, separando fatias maiores para outros processos. E isto tudo consegue ser feito sem perda significativa de desempenho.

Este patch na verdade é um kit formado por um pequeno patch aplicado diretamente ao kernel, e uma grande área de armazenamento deixada em user-level. A porção user-level comunica-se com o kernel através de um pequeno tubo. Além disso, ainda é adicionado um software de monitoralmento no painel do veículo (praticamente um módulo extra para o gkrellm).

Muitos usuários se preocupam com a diminuição do espaço livre para user-level, mas a solução mais comum é deixar esta área de armazenamento num lugar pouco acessado, normamente embaixo do banco. Deste modo, a perda de espaço livre existe, mas é insignificante.

Este patch é tão popular que existe para diversos sistemas, embora usuários de Táxis e Kombis sejam a maioria dentre os usuários deste patch. Vale notar que, devido a uma limitação do kernel Clio, produzido pela Renault, este patch não pode ser aplicado a ele.

Além disso, devido à grande popularidade, a fabricante das Kombis anunciou que lançará versões com esse patch pré-aplicado de fábrica, mas manterá ainda versões sem o patch, para usuários que assim prefiram.

Os patches mais populares

Depois do kernel patch citado acima, há diversos patches extremamente populares.

Sem dúvida, o mais popular é aquele deixa a kombi com dois bancos atrás e um banco de 2 lugares na frente (fora o banco do motorista), totalizando 10 passageiros. É tão popular que é impossível encontrar uma Kombi de transporte alternativo sem este patch, ou alguma variação deste patch (como aplicá-lo parcialmente, mantendo apenas 1 lugar para passageiro na frente, ou deixar um dos bancos de trás virado de costas).

A seguir, na lista de popularidade, temos o itinerário-speaker.tar.gz, o porta-automática.tar.gz e o luz-interna.tar.gz. Considero-os empatados em termos de popularidade.

O patch itinerário-speaker.tar.gz não toma praticamente nenhum espaço útil do usuário ou dos passageiros. Ele é praticamente invisível, exceto por um pequeno painel de 6 botões que o motorista usa para controlar o funcionamento do patch. Este painel lembra os dockapps WMButton, wmappl e minidock. Apesar de ser pouco vísivel, sua característica é adicionar sons à Kombi, para informar o intinerário a passageiros que estejam a vários metros de distância.

Infelizmente, este patch também pode ser usado para causar um ataque Denial Of Service, quando mais de uma Kombi fica produzindo sons repetidamente, o que impede qualquer passageiro de compreender a mensagem falada.

O porta-automática.tar.gz ocupa muito mais espaço, cerca de dez a vinte centímetros logo acima da porta da Kombi. Composto basicamente de um motor, uma corrente, um pequeno pedaço de metal que é aplicado à porta e um revestimento plástico, este conjunto de patches permite ao motorista controlar a abertura e fechamento da porta de maneira prática, sem necessidade de força nem a colaboração de passageiros. Também evita o barulho muito alto quando se fecha a porta de maneira muito bruta.

Devido ao fato de o patch ocupar bastante espaço visível, seus fabricantes aproveitam para incluir, no revestimento de plástico, o logotipo e telefone para contato. Existem dois fabricantes para este patch: Automatic Panther e Seu Prafrente Atualização: no final de 2006 já existem pelo menos 4 fabricantes. Embora seus patches sejam diferentes entre si, seu funcionamento é equivalente.

Vale notar também que o patch fornecido por estes dois fabricantes só é válido para Kombis versão 2 (ou NG - New Generation). As Kombis versão 1 possuem um sistema de portas diferente, incompatível com a versão 2. Mesmo assim, há patches para implementar uma funcionalidade parecida na versão 1. Neste caso, o patch é formado por um conjunto de barras metálicas que funcionam como alavancas e permitem abrir uma das portas através do movimento de apenas uma alavanca, posicionada perto do motorista. Infelizmente, este patch, apesar de bastante engenhoso, permite abrir apenas uma das portas, exigindo ainda colaboração do passageiro para abrir e fechar a segunda porta.

Alguns usuários não possuem condições ou não querem aplicar o patch porta-automática.tar.gz em suas Kombis versão 2. Mesmo assim, muitos desses usuários desenvolveram um workaround (quase um patch, está mais para shell script) que envolve usar uma corda para fechar a porta. A abertura continua manual, no entanto. Alguns usuários adicionam uma ou mais polias (roldanas) além da corda, tornando este workaround mais sofisticado. Cheguei a ver um usuário que aplicou 4 roldanas e passou uma corda por todas elas, formando um retângulo no perímetro interno da Kombi. Desta forma, a corda ficava sempre esticada e ele podia abrir e fechar a porta (embora ainda fosse necessário usar a maçaneta manualmente).

Por fim, o luz-interna.tar.gz está disponível em diversos modelos. Normalmente o próprio usuário consegue adicionar o patch sozinho. Há modelos com uma pequena luz incandescente ou com luz fluorescente (este fornecido em diversas cores). Algumas vezes os passageiros conseguem notar o source-code desse patch ainda visível, como fios soltos ou passando perto do teto.

Personalização da aparência

Quase todas as Kombis possuem algum tipo de indicação externa de seu itinerário, ou do número da linha:
  • faixas coloridas aplicadas à carroceria, cujas cores indicam regiões diferentes da cidade;
  • indicador luminoso de origem e destino da linha;
  • indicador luminoso do número da linha;
  • indicador luminoso do itinerário inteiro;
  • itinerário e/ou número da linha colado no pára-brisas como plástico ou um papel plastificado...
Algumas incluem também o preço da tarifa no pára-brisas.

Alguns usuários gostam de colar uma faixa de papel Contact ® (todos os direitos reservados) nas portas dianteiras, perto do vidro. Segundo eles, o objetivo é proteger a porta quando tanto passageiros como o próprio motorista apóiam o braço nela.

Outros usuários preferem adicionar enfeites ao espaco interno. É praticamente como trocar o wallpaper do seu desktop. O enfeite mais comum são adesivos (stickers). Alguns preferem colar no máximo 5 adesivos, mas há quem coloque adesivos no teto inteiro. Dentre os diversos tipos de adesivos, destacam-se os de desenho animado e os evangélicos, assim como letras soltas que são usadas para formar pequenas frases ou avisos (como "Cuidado com a cabeça").

Outro tipo de enfeite menos comum são estrelas, luas, ou figuras quaisquer feitas de plástico que brilha no escuro ou que reage à luz negra.

E falando de aparência de Kombis, não posso deixar de mencionar uma Kombi em especial, da linha 780. Externamente, possui diversos adesivos grandes que lembram a bandeira do Brasil, e outro adesivo com o nome "O Coroa". Possui também diversas luzes extras, uma em cada canto do teto e ainda uma na ponta da antena (esta Kombi até me lembra aqueles carrinhos de brinquedo, cheios de luzes). Internamente, possui diversos adesivos, figuras plásticas como as mencionadas acima, e até mesmo um esqueleto de dinossauro (que brilha no escuro) atrás do último banco. Isso tudo iluminado por luz negra, ou luz violeta. O painel também é repleto de adesivos, inclusive uma estrela de plástico (que brilha no escuro) colada em cima do indicador de alerta (a estrela não é opaca, o alerta ainda é bem visível mesmo com essa estrela colada).

Como se isso tudo não bastasse, a Kombi ainda é bem educada, e agradece quando um passageiro sai. Graças ao itinerário-speaker.tar.gz, o motorista aperta um botão e a Kombi fala "Obrigado! Vai com Deus!"

Patches portados para vans

Alguns dos patches mencionados acima foram portados para vans, que, embora sejam usadas para objetivos similares às Kombis, possuem uma arquitetura diferente.

O itinerário-speaker.tar.gz foi desenvolvido de modo que não precisa de nenhum recurso especial de uma arquitetura que não esteja disponível em outra, então é facilmente portável.

O porta-automática.tar.gz, por outro lado, depende muito da forma como sistema (em especial, o subsistema de portas) funciona. Mesmo assim, há versões para vans produzidas pela Panther (não sei informar sobre o fabricante Seu Prafrente).

Já o patch luz-interna.tar.gz muitas vezes não é necessário, pois a própria van já possui esta funcionalidade implementada. Nada impede, no entanto, que algum usuário resolva aplicar o patch mesmo assim, embora são poucos (ou talvez nenhum) que o façam.

Conclusões

Notam-se grandes semelhanças entre Kombis e softwares open-source. Em ambos, é muito fácil e é até comum aplicar patches para corrigir ou expandir as funcionalidades do software (da Kombi). Boa parte dos usuários (motoristas) de Kombi mexem ou já mexeram alguma vez no source-code. Além disso, o funcionalmento de Kombis parece seguir a filosofia KISS (Keep It Simple, Stupid), filosofia também adotada em diversos softwares open-source.

Por fim, em muitas Kombis o "source" está visível. (Exemplo: já tentou olhar embaixo dos pedais do motorista? Dá para ver o chão.)

E boa viagem!

What is for you the most important feature in an opensource/free software game?

, , ,

The Linux Game Tome is holding the following poll:

What is for you the most important feature in an opensource/free software game?
  • graphics
  • gameplay
  • music
  • originality
  • multiplayer
  • licence
  • little details

Unfortunately, it is not possible to select more than one answer.

I think there is no one most important feature. All of them (or most of them) are equally important. A good game is not made only of good graphics. A very good gameplay is wasted without other elements.

One answer not listed is customizability. By this neologism I mean the ability to customize the game. Many open-source games allow users/players to easily add more levels, or change themes (graphics and/or sounds), or expand the game in some way. This feature is less likely to be found in closed-source games.

Let's look at some examples (all links point to happypenguin page of each game, from where you can follow to game homepage):

Njam
Njam is a pacman clone with multiplayer support. At most 2 players can play at same time on same computer, and at most 4 players using multiplayer feature (2 players per computer).

Njam is nicely done, the gameplay is good, the idea is more or less original (the styles "coop" and "duel" are original, although pacman-style is far from original). There are good musics and even good sounds. However, the graphics are really bad. Some of the graphics look like "hand-drawn-using-mouse-inside-Windows-Paint". The other graphics aren't pretty, and really don't fit with the rest of game.

There are also some details that I really miss from Njam, and, if present, would enhance a lot the overall quality of the game:
  • no joystick support
  • no keyboard configuration (remap keys)
  • no mouse support in level editor
  • no central server for multiplayer (it would let players find other players much easier)
  • the game can be played in fullscreen or windowed mode, but cannot change this after game was started
In overall, a good game, but still needs work until can be called an excellent game.

SuperTux
SuperTux is a super mario clone. Like most platform games (and most, if not all, super mario clones), it features no multiplayer.

Being a single-player-only game, it does have "save slots", a "world map" to select levels, and even "bonus worlds" (called bonus islands) with extra levels. These extra levels were done by SuperTux players.

Gameplay is excellent. Remembers a lot Super Mario. Both graphics, sounds and music are very good, and they all contribute to game ambience.

There is a built-in level editor (not perfect, not full-featured, but is a good editor). There is also an external level editor called Flexlay that is more featured and can make levels for SuperTux.

SuperTux has also some details that make it a better game:
  • Support for SDL-only or OpenGL graphics (improves a lot the game speed if you have 3D acceleration)
  • Has support for keyboard and joystick (with configurable keyboard keys)
In overall, one excellent game. I think one of the best open-source platform games.

LBreakout2
Lbreakout2 is a breakout/arkanoid clone. And I must say: one of the best clones.

Lbreakout2 features mouse or keyboard control (I don't know if it supports joystick), excellent graphics and sounds, no music, built-in level editor...

There are extra levels and graphics themes available for download (and you can make one using some image editor, like Gimp). The level editor, although not very intuitive, is complete, and you don't need any external tools to finish or finetune your level (like you need in SuperTux).

Talking about levels, LBreakout2 allows you to play "levelsets", or play in "FREAKOUT" mode, where you play all levels available, in random order.

The LBreakout2 options menus allows you to modify various aspects of the game. There is also a quick built-in help (What does each item do? What are the key shortcuts?). There is also a multiplayer (network) support, but I can't say anything about it, because I never played it this way.

At end, it looks like the developer(s) took care of every detail in LBreakout2, which results in a really high-quality game.

Battle for Wesnoth
Battle for Wesnoth is a fantasy turn-based strategy games. It features elves, trolls, dwarves, griffons, humans...

Although I prefer realtime strategy games, I must admit Battle for Wesnoth is one excellent game. The graphics, sounds and music are excellent, even though characters aren't really "animated" (looks like there are only one frame for each "state" of the character).

In Battle for Wesnoth, each unit is unique. Each unit has a name, a slightly different graphic and specific "traits" (like strong, intelligent, quick). After each level in a campaign, all remaining units can be "recalled" in the next level.

The gameplay and the interface are very good. There are also customizable keyboard keys for each "action" in game. The game has also been translated to many languages (even though some translations are not completed yet).

To have sucess when playing it, the player must think a lot in strategy. Each unit has advantages and disadvantages depending on terrain, on opponent, on attack type, and also on time of the day (yes, Battle for Wesnoth features day and night). Units can also heal themselves when they are in "villages", or when they are "resting" (i.e., they don't move or attack or get attacked in a turn), or when they are next to a healer unit. Units can also advance a level and become stronger, so unlike most realtime strategy games, it is recommended to not let (many) units die, since they will be stronger if they can survive.

Old Battle for Wesnoth versions had very awful graphics, compared with latest versions. This also shows that open-source games can evolve with time (if there are developers working on them).

Battle for Wesnoth features a simple level editor, but will require an external program (like a text editor or a more featured editor) to make campaigns or maps with "special features". There are also lots of user-made levels and campaigns available for download, some of them only in forums, while others can be downloaded inside game menu.

Multiplayer lobby shows map preview (like a thumbnail) for each game in server. This helps the player to take a look at map before joining someone's game. The level is automatically transferred for all players in a multiplayer game (this causes no overhead, since level files are very small). Spectation of a game is also supported, as well as transfering the "command" to another player.

Battle for Wesnoth is another good example of what open-source games can be.
January 2010
S M T W T F S
December 2009February 2010
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30