# 8. cschem implementation - ripple annotation

{imp8:0} The back annotation is an optional feature. Cschem supports it, some of the 3rd party software support it and the user may choose to use it. The user is also free to choose the traditional, "tell me what I need to change on the schematics, then I'll forward annotate" method.

{imp8:1} The ripple annotation is just clever use of the back annotation plus some netpatch management. It is probably a good idea to put the schematics, the project file and all patches in the same version control system.

{imp8:2} With such a setup a current snapshot of the VCS and a run of cschem core on it, e.g. as a simple 'make' or 'make pcb' or 'make spice' will produce up-to-date forward annotation packs at any member of the team.

{imp8:3} The advantages of ripple annotations are:

- It lets a non-schematics-editor team member to update the project and the changes may reach other team members without first having to wait for a schematics update
- Provided sufficient 3rd party tool support, every member of the team can make changes to the project, using their tools, from their point of view, without having to learn the cschem GUI or even cschem concepts. For example a PCB designer may agree with the schematics designer that pins can be swapped arbitrarily on a connector; the PCB designer can do this using e.g. pcb-rnd, the wiring diagrams, docs and simulation can be updated even if the schematics editor is on holiday.
- Since changes are collected as an ordered netpatch set, it is always clear if there are outstanding changes. This may make project management easier, there won't be forgotten change requests.
- The netpatch is computer readable - this minimizes the chance of misunderstanding a change request.
- For special projects, like a footprint converter board, it is possible that the PCB happens first, and it is back-annotated against an empty abstract model, then the schematics is created using the netpatch.

{imp8:4} In theory, as an extreme example, one may even use the system without schematics: build a smallish simulation by hand, add the right footprint and pinout attributes, back annotate it against an empty abstract model then forward annotate to PCB layout. This setup bypasses 90% of cschem and (ab)uses cschem core as a tool for collecting netpatches and converting them to different netlist formats.