I'm in the middle of a blog post of what it's like to work 9 time zones from the rest of your colleagues. There are lots of good things, but there are also a lot of challenges.

If the entire team is distributed, a lot of those challenges are mitigated. If only a few people are distributed, then you can get problems like unequal access to information, or unequal access to people. Even though my team is used to remote workers and is very conscientious, it is not unusual to have things change direction without anyone thinking to inform me. The "everybody knows" problem is pervasive.

Access to people is even more difficult. When you are working locally, it is easy to brainstorm with someone while walking to the store to buy lunch, for instance. You have a certain amount of influence on the team because conversations are low cost. Remotely, you have to come up with the idea on your own, then send an email, wait for a response, etc, etc. It is not spontaneous, which means that by and large remote workers have much less influence than local workers. Even with hangouts, IRC and slack, it's hard to generate the same banter that you would have locally (especially when you are separated by 9 timezones).

If there is anyone local who is keen on political machinations, you pretty much have to be happy with letting them have their way. You will be outmaneuvered at every turn. This places a much higher requirement for trust on remote workers. You have to trust that people will tell you about things, and then ask for your input and then wait for your reply -- rather than just doing what they wanted to do in the first place.

As I said, if you are a fully remote team, this is less of an issue. However, there are still lots of challenges in this scenario. One of the biggest surprises that I had when I moved from local to remote on my present team was how my attitude towards my team mates changed. When I was local, I went out for drinks with people, and chatted about sports and basically hung out with them. When I was remote, most of my interaction centred around code.

In the local situation, if I was pissed off about a technical issue, or something that somebody did, then my attitude towards the person was tempered by my general good feelings about them as a person. In the remote situation, my interface with people is almost entirely technical, so when someone does something I don't like, I tend to feel badly about the person as well as the issue. This is something that I need to constantly remind myself about -- they are good people doing things I don't like. It is much easier to forget this when you are working remotely, I find.

There are many other challenges as well. It's not that these challenges are insurmountable, though. You need to build a culture where people operate in the way that works for your team. It sounds like you have done that on your team. On our team as well, I don't think there is anyone remote who would rather be local, so from that perspective it works well. There are people on our team who would much rather be local and I can understand their feeling. I suspect there may be one or two people who would rather that there weren't any remote people on the team because it interferes with how they would prefer to work. I respect that too and always try to accommodate my team mates. It's a balancing act.