I have this project in my head, I want to work on it but I always lack the time. In order to go forward, I thought I could write about it, at least it would let me clarify my ideas and the core goals. So here I am, I will present you Librement (I have registered the alioth project but it’s empty).
The core goal is to make it easy for every user to contribute to free software in some way. I will now present the main features that I envision.
Defining skills and interests
In order to propose tasks that the user can do, we must have an idea of his skills. So on the first run (and later through a preferences menu) the user will be invited to define his skills:
- his native languages (multiple allowed)
- other languages he can understand
- programming languages he knows
- version control systems he can use
- markup language he knows (HTML, DocBook, Wiki-like formats, etc.)
- etc.
Maybe we can also ask which skills he would like to learn. Because contributing to free software is a nice opportunity to learn new skills!
We should also find out what the user is interested in. What are his favorite free software projects? What kind of contributions would he like to do (documentation, translation, coding, bug fixing, bug triaging, creating artwork, donations, etc.)?
Choose activities and pick concrete tasks
Based on the user’s skills and his interests, the software shows a list of possible activities. The user can then sort that list, from the most interesting one to those that he doesn’t want to do.
Each activity can generate concrete tasks. For example, the activity “Do translation for Debian” could generate a task “Translate strings in debconf/fr.po” or “Review translations in partman/fr.po”.
Work on tasks
When the user decides to work on a task, a step-by-step assistant helps him/her. It can automate some steps and provide explanations for the remaining ones, for example in the case of a translation for Debian:
- grab the PO file (from a VCS, from an HTTP URL, from a translation server, etc.);
- select and install a software to work with PO file (if not already done);
- edit the PO file with the preferred program;
- check the PO file (is it complete? is there no mistakes like missing substitutions?);
- send back the completed PO file in a mail to the Debian bugtracking system.
If the tasks is not completed in one go, the user can resume it the next time.
Each free software project must provide some meta-information describing the various workflows involved for contributing to the different parts of the project. If necessary the project can also provide new plugins to support new operations that are not available in the default library.
Setting goals
In order to keep the user motivated, the software could track how much time he spent contributing to free software and it could verify if the user reached the goals he picked up for himself. Maybe it can also hook into the OMG Trophy Awarding System.
The sky is the limit
I hope that you now have a clearer idea of what this desktop application is supposed to be. There are literally hundreds of ways to contribute to free software and I like the idea that we can streamline the process for most users.
All the plugins implementing activities can use local information (list of packages installed with their versions, configuration settings, etc.) to propose tasks targetted to the user and highly beneficial for the corresponding free software projects. For example, a bug tagged unreproducible might benefit from a few more users trying to reproduce it. The software could direct the user to this bug report if it detects that he/she runs the same version on the same architecture and that this software is regularly run on the system.
Many projects have created “operations” or “events” to encourage people to contribute, they could all be implemented as dedicated activities in Librement. I’m thinking of stuff like Gnome Love, Ubuntu’s 5-a-day, Ubuntu’s 100 papercuts, etc.
Even for people who have no time to contribute, the application can still be useful by referencing the various ways to donate money (or material) to projects that they are using.
Feedback welcome
I’m excited by the potential of such an application, but it’s normal since it’s my idea. Do you believe it can be useful and popular? Do you have ideas of exciting activities that such a framework can offer?
PS: If you wonder how I came up with the name “Librement”, here’s the explanation. It’s a French word which means “freely”. And users who want to give back are trying to live up to the principles of free software, which I sum up by “they are trying to live freely”.
Follow me on Identi.ca, Twitter and Facebook. Or subscribe to this blog by RSS or by email.
Iñigo says
Hello,
The contributors Vs task relationship sounds interesting.
Always I’ve proposed something on IRC or whatever way, or wen you talk about code practices, or about worse hardware support for a machine in squeeze than 3 previous releases, or when you detect a lack of a feature, etc.. I’ve been pointed to use the bug-tracker. I’ve not used the bug-tracker, so contribution is loosed.
IMHO, a dedicated application, could be more easy to use, and more focused, than a full-featured bug tracker. BUT, should you abandon the tools you have, to create new simple tools, or should you improve the tools you have and use ?
A final user, can make his own wrapper around bugtracker to get tasks filtered etc… a Debian Developer, should touch core more than make wrappers (IMHO again).
There is not only a bug tracker, there is a wiki too. “The Tool” for this kind of organization. But most Debian _users_ does not use the wiki (neither the bugtracker) as a daily tool, and lot of things go to external wikis/blogs instead to simply put it at Debian wiki if does not exist.
In the years I’m using Debian, every… weeks? I listen to someone “I want to contribute to Debian”, from people that wants to translate to native language, to people h4X0r. Where are they being pointed? How many of the ones that are pointed to manuals/channels/intro_steps follow what is written, and how many take out trying to contribute at the second day/week/month ?
The same all weeks I listen to someone asking for a updated reference or security manual… Maybe the wiki should have a “handbook” section, MoinMoin can export to lot of formats. But this paragraph is a little off topic.
For collaboration on translations, there are many tools. But developing Debian is more than packaging/translating, there is quality control, security tracking, themes, upstreams, downstreams, glue, etc etc.
Which type of contributions is loosing Debian currently? translations? or possible upstream patches ? or possible new features ? or documentation improvements, just for avoid bureaucracy (as bug reports) ?
From my view point (external to the project) all the efforts should be focussed on improve the bug-tracker, wiki and shipped documentation. I wish that if new tools are created, are not web2.0 karma ego meters, but more things related to solve/improve Debian. I.E. I could prefer a easy desktop app a for bugtracker and other to edit/sync to the wiki, and see reference+security manuals updated with each release I get.
I make my Debian modifications locally, and don’t contribute back too much changes but on IRC helping others to reach the same goals following the same modifications. To help contributors to go near daily Debian bug solving, at a side of the bugtracker, I wish:
1) No sid needed to contribute, always backport all sid needed tools (versions) for each team, to stable (and to testing could be a plus for some users).
2) Instead of a Atalssian JIRA fork (or free instance, like apache does), provide to contributors something like launchpad. Convince our Canonical friends to run a launchpad instance dedicated to Debian. 🙂
Greetings
Kushal Kumaran says
Sounds a lot like OpenHatch. Have you taken a look at it? https://openhatch.org/
Raphaël Hertzog says
Yeah I know about OpenHatch, in fact I setup the dpkg entry on that website. There’s probably room for collaboration but the approach is still different.
I like that we can drive the user towards his first contribution without much human handholding, because we are all busy and it’s hard work to mentor someone. The current contributors should ideally only be involved in the review of the work and not in helping the new contributor to learn how to use the tools and so on.
Stéphane Péchard says
Very nice post! I had the same kind of idea a few years ago, but it was more generic. Unlike Iñigo who ideas are very Debian-centric, I was thinking to something way broader than only contributions to software projects. For example, I would add projects like OpenStreetMap in this “thing”. I say thing because for me, it was more a website than a desktop application. Of all your items, only ‘Work on tasks’ is not doable with such a website, and Librement would not be an IDE to develop with (ok, tracking user activity and knowing its installation are tricky tasks with a website). The benefits of a website would be:
* a visibility of what you do, and you know that contributing to FLOSS is also a matter of community motivation and personal satisfaction ;
* a better collaboration between participants, once you picked a task, it is marked as currently in progress and should not be picked again ;
* an easier portability amongst OS, after all, why a Windows user could not use it to contribute to his pet free project once in a while?
* an easier collaboration with existing tools like bug trackers (not sure of this one) ;
* an easier construction of the system, for example, if new task assistants are not written on day 1, you don’t need to wait for new versions propagation to make them available to every user.
Of course, it’s not a perfect solution as it supposes an online infrastructure, but it’s just an idea. You maybe also thought of something more Debian-oriented. Plus, it is maybe way too ambitious to be very feasible, but I like to dream sometimes 🙂
Cheers,
PS: a bit off-topic, but your PO example reminds me of another idea I had. Does it exist an online tool for collaborating on translations? You will find I’m obsessed with web services, but every arguments I developed for my vision of Librement would be valid here. I think it would ease the translation and the complex organisation needed to manage many translators.
My 2 web-cents 🙂
Raphaël Hertzog says
Stéphane, OpenStreetMap could perfectly provide some activities. A web infrastructure could complement the software but it can’t replace it entirely as you noted. And there are privacy issues.
And if you think through it, if you don’t have the part “Work on tasks” then all the services you list are already implemented in Launchpad. So the big feature of my proposal is the part where the user is trained and assisted in doing the task.
NB: Collaborating on translations is already possible online thanks to tools like Transifex or Launchpad Rosetta.
Stéphane Péchard says
@Kushal: the first page of OpenHatch is very promising (and is close to what I thought of actually), but when you look to the page of a project (say [1]), it is desperately empty and not very task-oriented. It is more a Q&A forum. Globally, it lacks strong link with the projects they want to help.
I’ll look at it closely though.
Stéphane
[1] https://openhatch.org/+projects/Debian%20GNU/Linux
Mackenzie says
The trouble with the Debian link you’re pointing to is that its bug tracker hasn’t been imported. For example: https://openhatch.org/+projects/GNOME-Do on the right there is a link to “volunteer opportunities” — this’ll take you to https://openhatch.org/search/?project=GNOME-Do which lists small tasks for new contributors to try out.
someone says
Have you seen Ubuntu’s Harvest tool?
Raphaël Hertzog says
I read about Harvest recently but did not give it a deep look. It also has the goal to provide a list of tasks to do but it’s not very user-friendly and there’s no assistance of the user. But it has the same spirit of being a central place where you can look for tasks and it has a clear API to import new tasks.
gregoa says
Yeah, I think it’s a good idea to provide an easy way for users of free software to contribute a tiny bit which is easy for them (like translations or reproducing bugs). I guess there are many people who would be willing to do this if it’s easy, and that could be a valuable help.