If anybody is interested in seeing the code, some parts of it are already open source[1]. The most interesting piece is the dialer, as someone in the thread pointed out, setting the caller ID on the outbound is tricky. On Android there are actually APIs that can intercept outbound calls, manipulate the number, and make the call to my gateway and then input the actual number as DTMF codes followed by a terminator. It doesn't always work but in 95% of cases I've never had a problem.
I initiated a port of my primary number a few weeks ago.
I'm not sure if what I'm building is exactly parallel to Google Voice but I believe it's similar. I'm in Canada so I can't get Google Voice. I rarely use my phone's voice or sms functionality so right now I'm just forwarding transcribed voicemails (with mp3 link) to email, and sms's to email as well (replying to an sms with an email that goes to sms is sort of fun). I'm also in the process of building out a simple app to handle this.
While testing, I've noticed the best part is now I'm not tempted to answer a call that most likely doesn't matter. I simply get a notification with an email. And I won't be paying for my voice or text plan which was about half the cost of my previous plan.
If anyone wants to use this you can email me at shawnp at gmail dot com.
Inbound forwarding is easy. Setting caller ID on outbound is where it gets hard in terms of user experience.
This occurred to me when I decided that what I wanted my phone to do was ring forever if I didn't answer. It turns out, twilio gives you a way to do this:
http://stackoverflow.com/questions/22410430/twilio-respond-t...
... and there are a lot of other very interesting things you could do:
https://www.twilio.com/blog/2013/03/building-beyond-google-v...