For a very long time, I thought tabs were the way to go. It provided the most compatible coding style between my languages (Lua, C, Assembly, etc.) The only sticking point was JavaScript, which used spaces. But now that I develop across devices, I'd have to say spaces simply because of encoding issues re: Unicode. Sure, you could ensure your encoding type, but that's an extra step you shouldn't have to do.