Amaya writes about the fact that the political process in many countries is extremely flawed and is failing their citizens  (although she doesn’t actually express it in that way). She asks how a revolution can be done right.
If we look at the historical record, after the French Revolution came the Reign of Terror , after the English Civil War Oliver Cromwell  took power – his actions are widely regarded as genocidal, and as for the Chinese and Russian revolutions – it seems that the majority of the population didn’t benefit much (if at all) from them. Generally it seems that the only times that a revolution seems to give a good result is when the situation was really bad before AND when the government failed basic measures such as ensuring food supplies.
The independence for the Indian sub-continent which derived from Gandhi’s work can be used as a counter-example. However the ongoing low-level warfare between India and Pakistan is due to a failure of the process.
It seems to me that the required first step towards changing a rotten political system with a minimum of bloodshed is to improve communications. If the majority of the citizens know what is really happening in their own country, how their standards of living compare with those in other countries, and what deals are made between their government and the governments of other countries then they can attempt to work out the best way to improve things.
The free software community is already doing a good job of facilitating communications. The key areas are to have computers that act on behalf of their users (not using proprietary implementations and Digital Restrictions Management to make them act on behalf of corporations and the state), to support strong encryption with public implementations, to be generally as secure as possible, and to run on the cheapest possible hardware so that everyone gets access.
Update: Corrected the spelling of Gandhi  – thanks Rick Moen.