The code that was in that GSoC branch was eventually merged into ​django-floppyforms and has seen updates there since, so I think it would be best to approach this in terms of a new Django branch copying/merging the desired code from floppyforms.

I think that #15667 (rendering widgets via templates) alone addresses 90+% of the issues people have with customizing markup in Django forms. I think that ticket is much higher priority than this one, presuming the performance issues can be addressed, or the performance cost is deemed acceptable.

Once we have #15667, there are two additional steps that could be taken to resolve this ticket: either a) a straightforward port of the existing .as_ul() and .as_p() methods to render via an overridable template instead of by constructing HTML in Python, or b) a full integration of the extensively customizable form-layouts system that Gregor built for GSoC. To be honest, I am not sure the latter needs to be in Django, I think it works just fine as a third-party add-on (at least until/unless that third-party add-on proves itself as a de facto necessity a la South, which I don't think it has done yet). So I would be in favor of limiting the scope of this ticket to (a), and only even worrying about that once #15667 is fixed.