Free Will is a being's ability to have control over its environment, future, and "destiny". A human being (presumably) has free will, and can therefore decide what to do; a rock does not have free will, and is a slave to the blind forces of physics.
Omniscience and Free Will
God is said to be omniscient, and this poses a special problem for free will: if God knows the future, that means that the future is predictable and immutable. This, in turn, means that our actions are predetermined. We may have pondered long and hard over which action to take, but the very act of pondering is as predictable as the execution of a complex computer program.
Note that this reasoning also applies to God: if God is omniscient, then he knows what he will do, and must inevitably do what he already knows he will do.
Christianity and Free Will
Many Christian sects, such as Calvinism, hold that it has already been decided at or before your birth whether you will wind up in heaven and hell. Your actions do not change your final destination; through your actions, you can only demonstrate which fate has been chosen for you. Many Calvinists do not believe in free will.
Compatibilism is a philosophical position that holds that determinism and free will are compatible.
Free will can be defined as the ability to choose an action. But how do we define "choose"?
Consider the way a human mind works: it takes input from the senses, processes it, and sends nerve impulses to muscles to direct the actions of the body. We do not know exactly how this happens, but it is nonetheless useful to think of the mind as choosing actions based on sensory data and memory.
This process of choosing may be deterministic, flowing ineluctably from the initial state of the universe and the laws of physics.
As an analogy, consider that many computer games have computer-controlled players. These use artificial intelligence (AI) to guide their actions and reactions to other players in their environment. Imagine a very sophisticated version of such a game, where the AI players can explore their environment, seek out other players, make long- and short-term plans, and so forth --- all just using conventional programming.
In the source code, there will be a function, or some chunk of code, that determines the player's actions based on data from the game environment, and "memory" from earlier points in time. Assuming that this code does not use a true random number generator, it is deterministic, in that its behavior can in principle be predicted a priori, given sufficient knowledge of the state of the program.
In practice, however, it cannot necessarily be predicted very far in advance: any error in measurement will tend to be magnified over time, so that any long-term prediction is bound to do no better than chance.
- Daniel Dennett, Elbow Room: the Varieties of Free Will Worth Wanting, MIT Press, 1984 (Amazon.com)