A lot more typo fixes by Ori Avtalion.
diff --git a/Doc/howto/advocacy.rst b/Doc/howto/advocacy.rst
index 407bf9f..8b5b11c 100644
--- a/Doc/howto/advocacy.rst
+++ b/Doc/howto/advocacy.rst
@@ -276,7 +276,7 @@
product in any way.
* If something goes wrong, you can't sue for damages. Practically all software
- licences contain this condition.
+ licenses contain this condition.
Notice that you don't have to provide source code for anything that contains
Python or is built with it. Also, the Python interpreter and accompanying
diff --git a/Doc/howto/doanddont.rst b/Doc/howto/doanddont.rst
index a350753..e1325f8 100644
--- a/Doc/howto/doanddont.rst
+++ b/Doc/howto/doanddont.rst
@@ -114,7 +114,7 @@
This is a "don't" which is much weaker then the previous "don't"s but is still
something you should not do if you don't have good reasons to do that. The
reason it is usually bad idea is because you suddenly have an object which lives
-in two seperate namespaces. When the binding in one namespace changes, the
+in two separate namespaces. When the binding in one namespace changes, the
binding in the other will not, so there will be a discrepancy between them. This
happens when, for example, one module is reloaded, or changes the definition of
a function at runtime.
diff --git a/Doc/howto/functional.rst b/Doc/howto/functional.rst
index b0b43c0..5dea10e 100644
--- a/Doc/howto/functional.rst
+++ b/Doc/howto/functional.rst
@@ -905,7 +905,7 @@
itertools.izip(['a', 'b', 'c'], (1, 2, 3)) =>
('a', 1), ('b', 2), ('c', 3)
-It's similiar to the built-in :func:`zip` function, but doesn't construct an
+It's similar to the built-in :func:`zip` function, but doesn't construct an
in-memory list and exhaust all the input iterators before returning; instead
tuples are constructed and returned only if they're requested. (The technical
term for this behaviour is `lazy evaluation
diff --git a/Doc/howto/sockets.rst b/Doc/howto/sockets.rst
index dc05d32..0b8db59 100644
--- a/Doc/howto/sockets.rst
+++ b/Doc/howto/sockets.rst
@@ -357,7 +357,7 @@
reason to do otherwise.
In return, you will get three lists. They have the sockets that are actually
-readable, writable and in error. Each of these lists is a subset (possbily
+readable, writable and in error. Each of these lists is a subset (possibly
empty) of the corresponding list you passed in. And if you put a socket in more
than one input list, it will only be (at most) in one output list.
@@ -371,7 +371,7 @@
If you have a "server" socket, put it in the potential_readers list. If it comes
out in the readable list, your ``accept`` will (almost certainly) work. If you
have created a new socket to ``connect`` to someone else, put it in the
-ptoential_writers list. If it shows up in the writable list, you have a decent
+potential_writers list. If it shows up in the writable list, you have a decent
chance that it has connected.
One very nasty problem with ``select``: if somewhere in those input lists of