So when using the Wire library you need to manually hook up a pull-up resistor. I was playing around with the digital lines trying to use the internal pullup resistors and get the I2C communication going myself. I could never even get the first ACK.
Why is the Wire library on the analog lines? Is there something I am missing in regards to the complexity of communication over an I2C interface with arduino?
I2C requires the external pull up resistors. Its not a Arduino thing.
I'd advise against trying to do I2C manually. Its not simple especially when compared with SPI.
I2C uses the analog pins because thats just where the required hardware is.
The analog pins are actually normal digital pins with analog functionality. Elsewhere on these forums explains how to use them as digital I/O.