The JTAG standard is public, and there are many open source implementations.
Formed in 1985 as "Joint Test Action Group", aka "JTAG", the consortium devised a specification for performing boundary-scan hardware testing at the IC level. That was *THE* goal in 1990, and that specification resulted in IEEE 1149.1, a standard that established the details of access to any chip with a so-called JTAG port.
The documentation of the minimal protocol of JTAG as TAP State Machine and the JTAG (minimal) Physical Layer { TCK, TMS, TDI, TDO, TRST(optional) } are all fully publicly available, so it is public knowledge that
- the { TCK, TMS, TRST } input pins drive a 16-state TAP controller state machine
- the TAP controller manages the exchange of data and instructions
- the controller advances to the next state based on the value of the TMS signal at each rising edge of TCK.
All documented, and with the proper wiring, you can test multiple ICs or boards simultaneously! No problem at all here!
However, an external file, known as a Boundary-Scan Description Language, aka "BSDL file" is needed to define the capabilities of any single device’s boundary-scan logic, so when "JTAG" is used as "DEBUG PORT" to debug or mimic a CPU/FPGA/DSP, you start needing to know the "BSDL file" of the target device, and in this case the documentation is not always publicly available.
Things go even worse than that, when for example someone defines the architecture of a CPU, and then different physical CPU manufacturers: you are dealing with the same architecture (e.g. PPC4xx, e500), but you need different BDSL files, not because the CPU core is different, but rather because it happens that for commercial reasons they (e.g. IBM vs Freescale vs AMCC vs others) want to deliberately make the debug port incompatible to sell you the debug software, which ... is usually paired with a licen$e.
So, Jtag is open, if and only if, the "BDSL file" of your target is freely available. In this case, you can add support to OpenOCD or similars OpenSource softwares. Otherwise ... you have to you have to get that "BDSL file" somehow, usually through reverse engineering of a commercial ICE, going to sniff the signals issued by the host side to the Jtag TAP in order to "map" them into working patterns. It's a long and difficult job to do with LA equipment and consumes a lot of time.