If you're trying to spawn golems for an iron ingot farm, or just want a few more noses to trade with in your local testificate township, then you've come to the right place.
 Video Explanation
Before reading on, you may like to watch the following video which explains the mechanics of villages.
A village is defined by several factors: the village center, radius, number of houses, population (number of villagers), population cap (max. number of villagers, based on housing), number of golems, and golem cap (based on population).
A village needs two things, in order to be a "village." It needs houses (at least one) and villagers (again, at least one.) A "house" is defined simply as a wooden door with an "inside" and an "outside" (see the next section for details.) A village tries to maintain its population above 35% of the number of "houses" (doors.) (See below for details.) The village center is the geometric center point, or "average coordinates" of all the doors. The village radius is the distance from this center point to the furthest door, or 32 blocks, whichever is greater. This means that the radius is always at least 32, no matter what, but it can be more than that if there are any houses further than 32 blocks from the center. If there are any, then the radius is the distance to the furthest one, instead. Both the center point and radius are rounded to whole numbers; It is unclear if they round up, down, or to the nearest integer.
A "house" is defined as a wooden door with an "inside" and an "outside." The "inside" is the side which has more spaces covered by "roof" blocks than the other, within five spaces horizontally of the door in the two directions it faces. A "roof" block is an opaque block at any height that blocks direct sunlight from reaching the spaces below it.
Another way to put it would be to say that an "outside" space has a direct view of the sky, and so has a "SL" (sky light) value of 15. An "inside" space does not have a direct view of the sky (not looking straight up, anyway) and a "SL" value of less than 15. The "inside" is the side which has more "inside spaces" than the "outside" (which, in turn, has more "outside spaces" than the "inside.")
A door is not counted as a house without a "roof," or with the same number of covered spaces on either side.
Example - The door is placed on the wooden planks. The game checks the spaces represented by the light blue wool, to see if they are covered by a "roof" block or not:
The simplest house looks something like this. Just a wooden door, with a dirt block on the ground next to it:
Not much to look at, is it? But it fits the criteria. The dirt blocks the light from reaching the space below it, and so counts as a roof block. There is one "inside" space, covered by a roof block, on the right side of the image (represented by the red wool below) and zero on the left. Since one is more than zero, there are more covered spaces on one side of the door than there are on the other, and so the game counts this as a house:
The following are all examples of houses as well:
It doesn't matter what you build, except for what's directly above the colored wool. Anything to the sides of this can be whatever you want, or nothing at all:
A door is two blocks tall, and this check is performed twice per door, if necessary. If the inital "roof check" (see Fig. 1) fails, then the bottom-most layer is ignored and the check is performed a second time, starting one layer higher. This time, only the spaces above the lime-green wool are checked for roof blocks:
Example - For the door pictured below, the initial roof check finds there are two spaces covered by roof blocks on the left side, and two covered spaces on the right also. With the same number of covered spaces on each side, neither one can be designated the "inside" or the "outside," and so the door is not counted as a house (yet. But but we're not through yet, either.):
Then since the initial check failed, the bottom layer is ignored, and we perform the test again, this time checking for roof blocks only above (not level with) the green wool. This time, only the two spaces on the left-hand side of the image are covered. Since the "roof check" passed on this second try, the door counts as a house, and its "inside" is on the left where the more covered spaces are:
In the next example, the door passes the test on the initial first check. It has one covered space on the left side and two on the right. This makes it a house with the "inside" to the right. The second check would pass as well (with the "inside" on the left this time), but since the first one already passed, we don't even bother testing again. This door counts as a house, with the "inside" on the right:
The covered spaces don't have to be contiguous. The door below is a house, with the "inside" on the right, which has three covered spaces within the 5-space limit, while the left side has only two:
This next door has three covered spaces on each side, and is not a house:
A house is initiated by a nearby villager. Without a villager nearby, it is not considered a "house," just some blocks and a door:
But as soon as that villager shows up, it becomes a house (and a village):
Villagers will recognize a house within sixteen blocks along both horizontal axes, and up to three blocks above or five blocks below the level of the ground the villager is standing on:
 Overlapping boundaries
When two villages' boundaries overlap, they will merge into a single, larger village. A new house that's within (radius + 32) of an existing village would, were it considered a village in its own right, overlap with the existing village and so just becomes a part of that village. This causes a recalculation of the village's radius and center point, which can sometimes cause it to overlap with another already-existing village. When this happens, the game doesn't always handle it correctly right away. It is possible to end up with a situation where two villages overlap and are still treated as separate villages. Fortunately, the fix for this is rather simple. Just quit the game and reload, and it will reevaluate the position of everything, this time seeing only a single large village instead of the two smaller ones overlapping.
The same thing can happen in reverse: if houses are removed from the center of a large village, the remaining ones may constitute two separate, smaller villages whose radii do not overlap, but the game may still treat them as a single, large village until the next restart, at which point it will perform its evaluation again and correctly identify them as separate villages.
When the placing or removal of blocks causes what-was-once-a-house to become no-longer-a-house, the game can fail to update this as well and still treat the door as if it should count as a house. Relogging used to fix this issue, but it may not work every time, and you may actually have to destroy and replace the door itself for it to stop being counted as a valid "house." Also, walking far enough away that the chunks are unloaded from memory will cause a reevaluation upon your return, correctly identifying only whatever houses remain.
 Transparent blocks
It seems there are three kinds of transparent blocks. There are fully transparent blocks such as glass, torches, and fences, and then there are what are call "partially transparent" blocks such as slabs, stairs, and leaves, which are treated as transparent by the rendering engine, and glow stone which is also treated as transparent, although you can not see through any part of it. Semi-transparent blocks still block light from passing through (at least partially, as is the case with leaves or water), so they're still somehow considered opaque to the lighting engine, which appears to be where it counts. These partially transparent blocks will block the sunlight, and so will count as roof blocks. Fully transparent blocks still do not count. Water and lava (both flowing and source blocks) are partially transparent, and will count as roof blocks. Leaves, slabs, and stairs count as roof blocks.
 Cancelling out
There is a rumor going around, that two doors facing within a certain distance of each other will somehow cancel each other out, and neither one of them (or sometimes only one, depending on who you hear it from) will count as "houses." This is not true! It is nothing more than a misconception, a rumor, brought about by a misinterpretation.
The reason the doors on the left do not count as houses is not because they are facing each other, but rather because each one has exactly one space covered by a roof block on either side. So as you can see, it has nothing to do with the fact that they are facing each other!
Here is an image that demonstrates the overlap between the areas checked for roof blocks by each of the two doors. The door on the left checks above the pink blocks, and the door on the right checks above the blue ones (but only in the center row that's inline with the doors, clearly). Purple blocks represent the area where the two zones overlap, and these spaces are checked by both doors:
So looking at the blue door, it has one covered space on the left side, and one also on the right:
And likewise with the pink door:
Since these doors both have the same number of covered spaces on either side, they don't have an "inside" or an "outside," and therefore can't be called "houses." However If you put additional blocks behind these (or just move them back by one space) then they will be 6 blocks away from the far door, too far to be counted, but are still within range of the nearer door, creating the imbalance necessary to call them "houses":
With these additional blocks in place, the doors now are valid houses. This is my understanding, and the Village Info mod agrees!:
 Transporting villagers
Using the gathered information above, there is an easier way to transport villagers, rather than pushing them in a minecart. Firstly find a village, and destroy all wooden doors except one to gather the villagers there. Then you can move the villagers by creating fake houses. As long as these meet the house requirements, the villagers will 'follow' the doors. The easiest way to do this is to place a door with 2 blocks stacked up behind it, removing the old door so that the villagers will follow and continuing the process again and again.
For a visual representation, watch the following video from 1:20 to 3:33.
 Breeding and Population cap
Breeding requires at least two villagers (who can reach each other) to begin with. If you are starting a village from scratch, or if yours was wiped out by zombies and there are no villagers left (or only one), then the only ways to acquire more are hauling them in from another village (such as by minecart, or leading them away at night with a trail of "fake" houses, destroying visited ones along the way to force them onward), curing infected zombie villagers, or using creative mode spawn eggs.
Given a breeding pair, a village's population is maintained above 0.35 times the number of "houses" (defined above.) More specifically, they will breed until the number of adults exceeds the limit, after which any children present will continue to grow up. Villagers breed without player intervention, but there must be at least two adult villagers who can reach each other.
Residents of a village which has not yet reached its population cap will occasionally go into "love mode," indicated by animated hearts above their head (only visible if you have particle effects enabled, but still works even when you can't see it working.) Much like with farm animals, when two villagers are feeling "romantic" and can see each other, they will pathfind towards the other and "kiss" for a few seconds, after which a third, smaller ("baby") villager will spawn next to them. This new villager will be assigned a random profession (indicated by the style and color of its clothing,) not necessarily the same as either parent.
 Curing Zombie Villagers
To cure an infected zombie villager, you must first travel to the nether and collect at least one blaze rod, to craft a brewing stand. Then you need to brew a splash potion of weakness, and craft a golden apple (the "ordinary" one, that takes ingots to craft). When you find a zombie villager, toss the potion of weakness at it, and then right-click it with the golden apple. The zombie will make a loud sizzling sound, emit orange swirly particles, and begin to shake violently. It takes a couple of minutes for them to convert, so go ahead and trap him somewhere, and make sure he won't burn in the sunlight. After a few minutes, he will turn into a regular villager, at which point you can let him out to roam the village or do whatever.
Finding zombie villagers in the first place shouldn't be all that difficult. About every tenth zombie is a villager zombie, so it shouldn't take you too long (only about twenty zombies) to find two of them you can cure back into villagers and get the population booming by more..."natural" means. Additionally, when a villager is attacked by a zombie (any zombie) there is a chance (50% on normal difficulty, and 100% on hard) that they will turn into a villager zombie instead of just being killed. There are also baby villager zombies, which are harder to trap, but can also be cured.
 Breeding indefinitely
There is also a bug or glitch where the villagers can be coaxed to breed indefinitely without regard to the population cap.
Villagers need to be inside a sphere (radius = village radius) around the village center in order to breed. But the village population counts only villagers that are inside a box (width, length = 2x village radius, height: 9 [always!]) around the village center. So with a sphere that can grow to any size, and a box that's always only 9 high, it should be apparent that there are some zones only covered by the sphere (above and below the village center).
You can reproduce/abuse this behavior by building 6 houses on the ground level (enough to set the villager limit to 2), drop 2 (or more) villagers into a 6 blocks deep hole, and leave one villager at the top to keep the houses "alive". The villagers in the hole will breed indefinitely, because they're not counted against the cap.
This nine blocks high is the same height as the range in which a villager can identify a house. I have not confirmed this, but perhaps these two are related -- that is to say that maybe a villager would be counted towards the cap if they are up to three blocks below or five blocks above (or exactly on) the level of the village center point.
 Iron Golems
Golems will spawn near the center of a village if it has at least ten villagers and 21 houses. Additional houses beyond the 21st will make no difference as far as golem spawning is concerned, but you will need 29 of them, at least initially, in order to spawn ten villagers naturally (although after that you can cut them back down to 21 if you want to.) However, having additional villagers beyond the tenth will allow more golems to spawn, in increments of one golem for every ten villagers (so 0-9 villagers allows no golems to spawn, the cap is set at zero; 10-19 raises that cap to one, 20-29 raises it to two, etc.) This cap only limits the number of golems in a village at any one time; as soon as one is killed or leaves the village boundaries, a new one can spawn in its place immediately.
The golem spawning zone is a 16 x 16 x 6 area centered around the center point of the village. As long as all the conditions are met (10 villagers, 21 houses, golem cap not reached,) then each game tick (1/20 of a second) there is a 1/7000 chance the game will try to spawn a golem. Basically it picks a random number between 0 and 6999, and if it picks 0, then up to ten attempts are made to spawn a golem. A random spot is chosen inside the spawning zone, and if that spot contains a solid block with at least 2x2x4 space above it (including liquids -- golems can spawn in water, which is key to the iron farm designs linked below), then a golem is spawned there.
This is repeated up to ten times or until a golem is spawned, whichever comes first. Then, the check is repeated each game tick, until enough golems have been spawned to reach the cap, at which point spawning is put on hold until either a golem is eliminated or the cap is raised. This means that the average expected spawning rate (for an iron farm, for example,) if the golems are killed or flushed outside the village boundary quickly enough so that the cap is never reached and new ones are able to spawn in their place immediately, is roughly 10 golems (30-50 ingots if you're farming them) per hour. So, if you can get the maximum, you can get infinite iron. Nothing else will happen.
 Iron Farm
An iron farm is an artificial village (or several of them, spaced far enough apart to remain separate) in which golems are spawned, removed from the "village area", and either gathered for slaughter or automatically killed. In older versions of Minecraft, it was necessary to either camp at the collection point, or arrange a holding cell for later killing, in order to collect the drops before they despawned. Since version 1.5, the golems can be automatically killed and their loot collected with a Hopper.
There are several ways to build an iron farm, but the most effective versions seem to be the ones that utilize two floors in the central golem-spawning zone, and keep all doors and villagers outside the zone, either above and below the center or in an outer "ring" on the same level. This is in order to maximize the number of available spaces for the golems to spawn in, which in turn will reduce the number of failed attempts, and keep the spawning rate as high as possible. This is much more effective than simply increasing the villager count to raise the golem cap, which only matters for the few seconds between the time when a golem spawns and when it is flushed out or killed, anyway. To further increase your output rate, you can build several separate "modules" and bring the golems or their drops to a central collection area. Since golems are immune to falling or drowning damage, the available killing methods are lava or suffocation.
See the above link for tutorials on how to build an effective iron golem farm.
 Zombie Sieges
Since version 1.4.7, Zombie sieges do not occur, due to an apparent code bug. Given that their exceptional spawning rules make villages unsustainable, they are not expected to be reinstated in their original form. This is sort of made up for with the enhanced tracking range of zombies as well as aggravated zombies spawning in more zombies as of 1.6
At night, there is a chance that a zombie siege might occur. This is when a large number of zombies spawn in or near a village, attacking what villagers they can reach, crowding around and pounding on the doors of those they can't. On hard or hardcore mode, they can actually break down the wooden doors of the villagers' homes (this is true of all zombies, not just during sieges.) A zombie siege requires a village of at least 10 houses and at least 20 villagers.
Zombies in Sieges ignore light levels and the 24-block minimum distance from the player, but other than that, behave absolutely normal (IE, they won't spawn on halfslabs or glowstone or anything like that, need a 2x1x1 minimum space, etc.). They can also spawn INSIDE doors, making Iron Golem farms difficult to build on hard, as zombies beat down doors on hard (they'll attempt to beat them down on other difficulties, but not succeed). However, zombies won't spawn 128 blocks away from you, even though the siege is technically happening in the game code, so you're safe if you build it high up.
 Village designs
A list of the houses and buildings in a village and their respective designs can be found at the Village Blueprints Project page.
 Player-made Village designs
Now that you know all about villages, you can use the following designs to make your own functional village! Remember, you can come up with lots of different unique designs, as long as it follows the conditions of what a house is.
Note that all doors must be wooden; iron doors are not recognized as part of a house. Otherwise, materials hardly matter; in the plans below, feel free to replace logs with planks, wood with stone of any sort, or to use other materials.
 Log Cabin
Incredibly simple, efficient, and quick to build. They can also be expanded or minimized in multiple variations, but requires some work to stack them. Summary: 44.25 logs (including wood for doors); 6 doors; 2.1 villagers 3 width; 5 length; 3 height 21.017 logs per villager; 0.125625 villagers/m2; 0.041875 villagers/m3
|Layer 1||Layer 2||Layer 3|
Bare-bones, high-density design. Summary: 16 logs (including wood for doors); 6 doors; 2.1 villagers; 5 width; 4 length; 3 height; 7.619 logs per villager; 0.105000 villagers/m2; 0.033500 villagers/m3
|Layer 1||Layer 2||Layer 3|
Less miserly variant with more style. Summary: 34.5 logs; 6 doors; 2.1 villagers; 5 width; 4 length; 3 height; 16.429 logs per villager; 0.105000 villagers/m2; 0.035000 villagers/m3
|Layer 1||Layer 2||Layer 3|
 Turbo Scrooge
Based on Scrooge, slightly more efficient. Summary: 20.25 logs; 8 doors; 2.8 villagers; 5 width; 5 length; 3 height; 7.5 logs per villager; 0.112000 villagers/m2; 0.037333 villagers/m3
|Layer 1||Layer 2||Layer 3|
 Simple house
This house is recommended for a newbie because of its simplicity and the fact that it's easy to remember, however, it is very expensive and inefficient. However, it can double as a player's house or stacked and placed in an endless row, like the condo. Villagers per house can be increased by making back doors and side doors. summary: 47.50 logs; 1 door; 0.35 villagers; 5 width; 8 length; 4 height; 16.625 logs per villager; 0.014 villagers/m2; 0.004167 villagers/m3;
|Layer 1||Layer 2||Layer 3|
A small and cramped house, but with some efficiency as it can easily be stacked and placed in an endless row. Logs per villager can be improved by using planks instead of logs, or by excluding the roof over the outside of the door. This will restrict vertical stacking, unless the top condo is reversed so the back of the top condo is the roof over the door of the bottom condo and the back of the bottom condo is the walk way. Vertical stacking will also improve resource efficiency by adding a third shared wall.
Summary(alone): 21.5 logs; 1 doors; 0.35 villagers; 3 width; 4 length; 3 height; 61.43 logs per villager; 0.029166 villagers/m2; 0.009722 villagers/m3
Summary(two shared walls): 12 logs; 1 doors; 0.35 villagers; 3 width; 4 length; 3 height; 34.29 logs per villager; 0.043750 villagers/m2; 0.014583 villagers/m3
|Layer 1||Layer 2||Layer 3|
Can be stacked and placed in a row to make an apartment building. Make sure there is at least one air space between parallel buildings. Summary: 18 logs; 4 doors; 1.4 villagers; 5 width; 6 length; 3 height; 12.857 logs per villager; 0.058 villagers/m2 * floor; 0.0194 villagers/m3
|Layer 1||Layer 2||Layer 3|
 External Links
Village Info mod by trunkz - The mod provides a more detailed look at what's going on with your village. It adds a few lines to your F3 screen indicating if you're in or near a village, and info about its size, population (both current and maximum) number of houses, etc.
Imgur gallery by Derrick - A briefer, more compact visualization of what makes a "house," and a bonus "villager breeding unit" that can support up to 35 villagers in an 11 x 10 or so space (the unit takes up that much space, the villagers themselves wander around outside of it, gettin' freaky in the daylight.)