Free software for the public good
In the early days of the free software movement, detractors often claimed that the license of a piece of software was irrelevant, the true ethical concern of software was its use and impact.
Those of us in the free software movement can quickly recognize the flaws in this argument. Free software is the baseline for ethical computing because it empowers people to manage their own lives and education, rather than ceding control to third parties. A program that restricts users from studying, modifying, or sharing it is not consistent with an aim to do good and improve the lives of others.
It is understandable that an anti-militarist programmer would feel uneasy discovering her code running the flight navigation system of a Predator drone used to murder civilians, but this doesn't make her any more culpable than steelworkers should feel implicated when the product of their labor is used to build prison bars or the files to cut through them.
An important consideration should also be the impact of a particular tool, both actual and intended. This should not supplant software freedom as a baseline for ethical computing. That a program can be used for unsavory purposes is not an argument for proprietary development.
Ensuring that software is used for good is a technical and cultural issue, and not a legal one. This is why the FSF has refused to certify licenses that mandate software be used for "good, not evil." Restricting users through software licenses runs counter to the aim of doing good. For more on this subject, see Richard Stallman's article "Why programs must not limit the freedom to run them."1 One of the most basic ways to ensure that the software you develop is used for good is to insist on copyleft, which keeps code public and reusable. Using strong copyleft licenses, like the GNU Affero General Public License, ensures that code you write will not be used to restrict user freedom.
The good news is that we are not hard-pressed to find tools that help people and make the world more just and equitable. While avoiding the easy lure of cyber-utopianism, there are many opportunities for software to help people and communities better manage the issues they face. Each fall, the FSF opens nominations for the Award for Projects of Social Benefit, given to projects that put free software and its ideals to good use.2 The list of previous winners includes projects like OpenMRS, which is used by health care providers in developing countries to manage electronic medical records.
Support tools that allow for nonprofits and community groups to more effectively take action, like CiviCRM and Software Freedom Conservancy's nonprofit accounting tool. Or if you're not interested in coding, get involved with the Humanitarian OpenStreetMap Team, which develops cartographic data and tools for aid groups to use in response to disasters and crises. These projects all need your help with documentation, training users, and writing code. Working with them can amplify the positive impact free software already has on the world.