Learning about communities

Through my experience with developers and open source experts, I found something very curious. In the end, all I have seen are power users. Usually the computer enthusiast is divided by developers and users, however there are so called developers, but they are really users of a language. But (at least in public) they are only users of a language, their open source expertise as far as using Linux as their developer platform doesn’t exceed to the contribution part on not just their favorite language (which will probably be done on a different language) but to other projects built on that language.

The sad reality is that open source enthusiast don’t always grab the concept of a community. Usually community becomes something that is more socially accepted as a user group, even their blogs usually focus on new libraries, technologies and modules to use. Rarely is about a project community where gyrate around a source tree, with a product that is compiled and released on a scheduled manner.

So, for example, Big Joe who is a great FLOSS advocate and use PHP-MySQL for all it’s clients and do it on his GNU/Linux servers and wears a Ubuntu t-shirt and give advices on why everyone should use Linux. He has even gave talks about PHP development techniques, security on the language and gives the green light to trying new modules and frameworks for its development.

Yet Big Joe, however, has never imagine on even getting in touch with the people at PHP.net, has never even compiled the source code of the language, or know how to. He doesn’t even know who build what part of the language. In his head, he might even ridicule the idea of taking time off his clients to dedicate in such a task, as the language is good enough, for his needs.

When confronted, Big Joe admits that his knowledge of PHP would be useless that looking at the source tree is based on another language, C. However given his big and deep knowledge of PHP, he should be able to look elsewhere where PHP is proven to be the language of choice, a project like Drupal, which is a very popular CMS could present somewhere where he should feel more competent to work upon. The Drupal source code is in fact made out of pure PHP code, many hundred of lines of code.

Big Joe now has 2 problems, how will he be able to read all that source code? And where should he start?

Maybe Big Joe would feel Drupal is a waaaay too big of a bone to chew on. So he has other options. Sourceforge has hundred of projects of different size to contribute to. Projects like DokuWiki, or even lesser known projects that could use his help.

So Big Joe found his project where he can read up easily and contribute with his magnificent PHP skills. However there is another problem, Big Joe also doesnt know how to start. And here is where the real learning needs to happen. For all his years of apt-get install and tar -xzvf or unzip -r modules and libraries. He would now need to learn some base new technology.

ImageFirst one will help him communicate with developers, and will prove to be the most used and is called mailman. This help him keep in touch with the whole team of developers, however he will also see other users as he subscribe to the commit list which automagically email him all the changes to the code.

mediawikiThe next piece of technology is the wiki, where most of the documentation to get started, as well as some design pointers are already documented on these places. Is important that he check its out while joining the community to avoid being outcast from acting far from the status quo.

GITFinally the big and more developer-like piece is the code repository where the commits and builds he do himself should be commited and approved. Big Joe will found a new family of activities including:

  • QA, test new patches from others and give follow up.
  • Managing branches, in git this could become an all day task if the project get busy.
  • Verify bugs, evaluating bug reports and finding the issue is another big developer task.
  • Building, having cyclical builds and maintaining the successful build is another task that give some sense of stability, coding bugs might raise some flags, that something somewhere is not really working.
  • Documenting, as a user documentation is important, however as a developer, a good technical documentation can help people do their work more efficiently.

Big Joe found that contributing isn’t as hard as he thought initially, and now he has become someone with a say in a real free software project. Now Big Joe will dedicate some time to encourage people to step into this level of contribution, and maybe he could get his USER group into a real developer group and do cool stuff like a bug hunt, or a development spring.

Big Joe is very well networked withing the community and can now have some real hold on not just promoting FLOSS but actually being part of producing floss.

 

Advertisements

Menos grupos de usuarios y mas grupos de desarrollo

Durante una conversacion en la lista de correo de LinuxCabal empezamos a hablar sobre el nivel de contribucion al software libre:

Sinceramente creo que hay un problema muy grande con la comunidad de software libre en general. Y en eventos como el FLISOL quizas sean un reflejo de esto. Y es que, solo se enfoca en crear usuarios. Realmente nunca se educa en la cultura de la contribucion. Interactuando con comunidades tecnologicas como la de web 2.0 esto se refleja en algo muy sencillo y curioso. Por una parte se consumen muchos Blogs, mucho del trafico de blogs en español vienen de Mexico.

Sin embargo nunca y ni por casualidad se generan comentarios en estos blogs. Esto realmente un fenomeno que tiene mucho que ver con el excelente consumismo que se orienta en Mexico, pero pocas veces se tiene el sentimiento de pertenencia y contribucion a lo que seria un blog, grupo o proyecto.

Llevo 10 años en el proyecto de OpenOffice.org Español y puedo hablar que en ese tiempo he recibido muchos correos que quieren participar en el proyecto de OpenOffice.org. La gran mayoria ha venido de Venezuela, España y Argentina y en menor grado de Chile y Perú, sin embargo de México ha ocurrido solo 3 veces en 10 años.

Cuando llevo este tópico a la discusión recibo las excusas que en México somos muy pobres para preocuparnos de contribuir, y que debemos primero sobrevivir y excusas muy atípicas y que realmente no tiene mucho que ver con la pregunta original. Cabe señalar que muchos de los voluntarios rara ves son informáticos, la mayoría son profesores de primaria, bibliotecarios, vendedores, y gente podríamos decir común y corriente que son tecnologos por aficion mas que por dedicación. Me pregunto si esto tiene que ver con la apreciación de que no se esta regalando su producto.

Son datos importantes que quizás den mucha perspectiva a cual es el estatus de Mexico en el contexto iberoamericano de uso y participación del software libre.

Que podemos hacer?

No tengo una respuesta definitiva, pero hay algunas cosas que se pueden tomar en cuenta. Una es cambiar el mensaje de solo usar Linux y SL a contribuir. hay mucha gente que ya son usuarios de anios, esa gente, hay que empezar a invitarla a contribuir. Lo otro es saber uno mismo como contribuir. Esto se hace acercandose a las comunidades y preguntarle como contribuir.

Hay muchas comunidades que tienen su paginas de “how to contribute”. Desde Mozilla, KDE, OpenOffice.org, Gnome, Drupal, Joomla, hasta comunidades mas pequeñas como los proyectos mas pequenios en Sourceforge, Google Code y FedoraHosted.

En OpenOffice.org (y otras) aparte de la participacion en el producto, se puede participar en cosas como extensiones que son micro proyectos dentro del proyecto de OOo. Ahi hay mucho para contribuir, tanto en funcionalidad como en desarrollo. En México por ejemplo el unico iberoamericano que he visto que ha contribuido otra cosa que no sea diccionarios, ha sido Eduardo Moreno el cual ha metido algunas extensiones de conversion de numero a  letra, mejoramiento de la paleta de colores, etc.
http://extensions.services.openoffice.org/en/search/node/Tokonhu

El es un amigo de muchos años en la comunidad, y empezo con una extension y ahora podras ver la cantidad de extensiones con las cuales a contribuido.

Una actividad que se le debe de dedicar tiempo sobretodo para programadores noveles, es a destripar programas y leer su codigo. Cuando un programa es orientado a objetos existen muchas clases y funciones que son como mini programas que se pueden replicar, entonces la construccion de software se vuelve 60% reutilizar clases y 40% escribir codigo. Lo de mas se puede copy-pastear…

Para eso necesitas entender que hace la funcion, y tener el criterio para sacarle el beneficio a esta. Una vez que entendiste que utiliza la funcion, y como lo hace, podras  aislarla e incorporarla a tu codigo. Viendo la gran cantidad de codigo que existe, se podria tener una conversacion mas especifica sobre como se pueden aportar codigos o librearias de codigo que automatizen el proceso.

En ese momento tu comunidad paso de de ser una comunidad de usuarios a una comunidad de desarrollo. Por que pasaste de preguntarse como usar linux, a como podemos resolver este problema en particular.

Eso si, hay un problema de fondo y de cultura y es que aun el programador tradicional no es muy colaborativo, la mayoria de gente que veo que desarrolla, casi no habla de su codigo ni de como resuelve procesos. De hecho el muestra el producto, pero casi nunca el proceso. Esto se debe cambiar.

Actualizacion: Este articulo causo reacciones en Facebook donde me apuntaron a este articulo donde habla de la contribución en general. (en ingles).

Mi respuesta es que simplemente son dos visiones completamente opuestas, el autor se enfoca que el crecimiento de usuarios dejara a los geeks en la minoria. Mi pensar no tiene que ver con la popularidad y el uso del software. Tiene que ver con la comunicacion que se esta dando en la actualidad, y cuantos de estos grupos estan llevando su mensaje “al siguiente nivel”. Esto me recuerda a una presentación que di en Valencia sobre el ciclo del usuario libre.

New talk on Drupal on WizIQ

If you are here you obviously know drupal, however the best part of joining this talk is that you can help the topic develop and become worth it for other people too. Learn from other developers and actually speak to them on this virtual classroom.Join to this free talk available to everyone who want to join in this comming Monday on WizIQ. Join Now!!.