  We introduce a very general model of an inhomogenous random graph with
independence between the edges, which scales so that the number of edges is
linear in the number of vertices. This scaling corresponds to the p=c/n scaling
for G(n,p) used to study the phase transition; also, it seems to be a property
of many large real-world graphs. Our model includes as special cases many
models previously studied.
  We show that under one very weak assumption (that the expected number of
edges is `what it should be'), many properties of the model can be determined,
in particular the critical point of the phase transition, and the size of the
giant component above the transition. We do this by relating our random graphs
to branching processes, which are much easier to analyze.
  We also consider other properties of the model, showing, for example, that
when there is a giant component, it is `stable': for a typical random graph, no
matter how we add or delete o(n) edges, the size of the giant component does
not change by more than o(n).
