I don't know why, I felt a desire to post an overview of changes to PartDesign, highlighting the most important differences from user perspective.
First of all, why old PartDesign is rubbish, and why I stopped using it:
1. parametric solid-to-solid relations are prohibited. I find it very natural to have parts in an assembly depend on each other, because they need to mate each other.
2. linear dependency graph is the best way to make parametric links broken
3. Sketches that must be attached to faces (faces are highly specific links prone to breakage), which adds to link instability problem. Yet, it is very often that a sketch is to lie on one of the base planes (XY, XZ, YZ; especially true when designing bodies of revolution).
4. (consequence of 2, 3, and the lack of topo naming) is it very hard to delete or substantially alter a feature in the middle of the history
5. Some pads or pockets can take long time to compute, because of the Boolean operations that are happening in the process. There's no way to postpone these operations (this is a limitation of FreeCAD as a whole, but it is especially a problem of PartDesign, because in Part, one can first design the individual features, and once happy with them, start the fusing process).
6. Pieces can't be moved without a long recomputation of all geometry (clones aside)
What's been changed:
1. Linear dependency graph is no longer enforced, because:
1.1 sketches can be attached to anything, including base planes, and other solids. Same applies to links to external geometry: anything that does not create a loop in dependency graph is allowed.
1.2 individual solids can depend on each other
1.3 Parts can have as many solids as needed
This can solve many link instability problems, by linking cleverly (generally, by linking to the earliest possible state, or by having special skeleton pieces and linking just to them)
2. Part and Body containers have been introduced.Part
keeps together all the stuff related to a part (a set of objects that are to be moved together during assembly). Part can contain PartDesign Bodies, Part-workbench objects, and other stuff.Bodies
keep chains of PartDesign features together. That is, a Body contains a chain of operations to build a single solid shape. As of now, Bodies are not moveable.
Parts and Bodies are made to:
2.1 keep the tree view nice and organized
2.2 features can be easily added into Bodies, and Body will present it's most recent state to the outside (this should solve the situations like "I have made a pocket in my part, why wasn't it's clone updated accordingly?")
2.3 Part can be placed. Everything contained in the Part is translated/rotated, without causing a recompute. The links to outside of Part will be as if the Part is at the origin, so even a forced recompute will not alter the geometry of the Part. (As far as I understand, this is the fundamental difference that was required to make Assembly work.)
3. The new dependent copy creation mechanism should keep the model tree nice and clean, as well as provide some possibility to rip parts off a complex design into a new document. (This is how I understand it, it is about the dialog when linking outside of Part, where there are three options)
4. Lots of new stuff was added to PartDesign:
4.1 Datum planes, lines and points, for use as sketch attachment, mirror planes, revolution axes, and otherwise help construct models.
4.2 Loft, Sweep and Thickness are now in PartDesign. Lofts and Sweeps in PartDesign support creation of pipes in one operation, unlike their Part wb versions.
4.3 Some geometric primitives are now in PartDesign
4.4 Mirrored , Polar Pattern, Linear Pattern and Multitransform now can transform multiple features at once.
4.5 Involute Gear is now attachable, like sketches. This also applies to a multitude of stuff from Draft workbench (to everything that is derived from Part::Part2DObject; it needs some attention).
Now, summarize how the "rubbish" points were improved
1.parametric solid-to-solid relations are prohibited. Allowed!
2. linear dependency graph is the best way to make parametric links broken. Linear dependency graph is no longer enforced!
3. Sketches that must be attached to faces (faces are highly specific links prone to breakage), which adds to link instability problem. Fixed!
4. (consequence of 2, 3, and the lack of topo naming) is it very hard to delete or substantially alter a feature in the middle of the history Still a problem, but much better now, because linear dependency graph is not enforced, and links between solids are allowed
5. Some pads or pockets can take long time to compute, because of the Boolean operations that are happening in the process. Not much improvement here, although now it is possible to split the model into simpler pieces and later merge them with Booleans, just like in Part wb.
6. Pieces can't be moved without a long recomputation of all geometry (clones aside) Fixed!
Feel free to correct me, and add something