Google Talk and Google Hangout are good obvious alternatives. If you insist on running your own solution, I've had very good experiences with using Elastix. It has everything built in to one package that takes advantage of Asterisk VOIP. I've set it up for multiple companies as their corporate phone system, including some that used it in fairly large call centers. It's also free and has a decent community behind it. They're pretty helpful, and when I was starting out with it I got a lot of good advice on their IRC channel. VOIP, IM, Videoconferencing, and it has good hardware support for all of the telephony devices.