Here I mean the type of software, not particular brands and names.
We had a remote developer in our team and quite often we needed more than just email or voice call. Sometimes we shared screens for a some sort of peer programming, sometimes we needed to draw diagrams and discuss them. Planning and design discussions required the broadest functionality.
Bug tracking, wiki and other software like that was not sufficient for us. However there are many examples of successful open source projects where teams used only source control system, and discussion lists.
So I admit that our process of development could be not perfect and want to here from you which collaborative functionality is mostly needed in your work. How do you communicate in case of distributed teams?