My experience is that often when I think "I wish my email / browser / calendar / … did X" it turns out be a limitation of the underlying protocol. So even if you build all software yourself, you still have to make compromises when you interact with the outside world.