Different approaches to forcing There are many different approaches to the forcing method, and I am looking for all known such approaches. So my question is:

Question 1. Which different approaches to set theoretic forcing are available, and who first introduced them. 

Giving (original) references for each approach is appreciated. 
On the other hand it seems the approach to forcing using posets is more comfortable in forcing arguments. So my second question is:

Question 2. What are the benefits of using each of these approaches with respect to other approaches?

 A: At the risk of making things worse rather than better, let me point out that what appears to be one approach, say the Scott-Solovay version using complete Boolean algebras, is really a whole family of approaches, according to what universes you extend and how you extend them. Once you've defined a particular Boolean algebra $B$, you can do (at least) any of the following: (1) Build a cumulative hierarchy of $B$-valued sets, extending the usual cumulative hierarchy of ordinary (2-valued) sets.  (2) Give a syntactic $B$-valued interpretation of ZFC in ZFC. [Intuitively, this is "the same" as (1), but technically it's a way of getting finitary proofs of relative consistency.]  (3) Start with a countable transitive model $M$ of ZFC, interpret the definition of $B$ within $M$ to get an $M$-complete Boolean algebra $B^M\in M$, choose an $M$-generic ultrafilter $G$ in $B^M$, and form the countable transitive model $M[G]$, the smallest transitive model that includes $M$ and contains $G$. (4) Start with any model $M$ of ZFC (not necessarily well-founded), interpret the definition of $B$ in $M$ to get $B^M$, choose any ultrafilter $G$ in $B^M$ (not necessarily generic), and use it to form a 2-valued quotient $M^{(B^M)}/G$ of the Boolean-valued model $M^{(B^M)}$. 
