The problem here is that "compatible" can mean so many things in different contexts and to different people. For instance, it may mean any of the following:
- Can be used with the Arduino IDE without any need for additional board installation of other modifications
- Can be used with the Arduino IDE after modification (boards installed)
- Uses the same (or very similar) API to the Arduino system
- Has the same footprint as an existing official Arduino board
- Is a device which will work with an Arduino board and has software available to operate it
All very different meanings.
Point 1 could be a board that is based on the design of an existing Arduino board (say the Uno) but built into a new form factor, maybe with additional hardware and peripherals added. It is still treated as if it was the board the design was based on though.
Point 2 would be a board that is similar, though not the same, as an existing board. A different board definition may be required to map the IO pins properly, for instance. It could use a slightly different chip in the same supported family. You still use it as an Arduino, but it's not the same as an existing Arduino board.
Point 3 may mean it's based on a completely different chip. The programming environment may be almost the same, but it's hard to get 100% API compatibility. Arduino sketches and libraries may work out of the box, or may not.
Point 4 could be a board that, internally, is completely different to the Arduino, uses a different programming language, IDE, etc, yet the layout of the board is the same as, say, an Arduino Uno. A good example is the Mecanique Firewing - an Uno footprint, but a PIC32 chip instead of an Atmel, and Basic instead of C++. Most Arduino shields would just plug in and work though, software permitting.
Point 5 is from the completely opposite direction. This is a device which "is compatible with" in that "it will work with" and Arduino. That could be on an electrical level (it's a 5V device and will connect to the Arduino) or that it has full software support ("Download our Arduino library..."). It has nothing to do with how the device works or what it is though.
I prefer to use specific terms, respectively:
- Based on the Ardino UNO
- Programmable with the Arduino IDE
- Compatible with the Arduino API
- Footprint compatible with the Arduino UNO
- Suitable for use with Arduino boards
That way it states exactly in what way this device relates to the official Arduino boards.