Honestly, there is little I would change in the OS and hardware, but I would work on building up their system redundancy, as well as fallback plans for when BIS goes down. I think the best way to do this would be to make the system hierarchical. RIM would maintain the top of the tree with a group of servers, while each mobile provider would operate their own servers that service just their customers. This would help to balance the load, and also would provide the needed redundancy. In this setup, a user's device would primarily interact with the BIS at their provider's datacenter. If that BIS went down, the device would interact with the one at RIM, and then attach to the one at the provider level once service was restored. To make this work, the provider-level BIS would replicate databases to the one at RIM, and the BIS at RIM would replicate required patches, policies, etc. down to the ones at the provider level. When a roaming device attached to a given network, the request would simply be forwarded to the RIM BIS for processing, and the device would attach there, or they could build in a method to allow the device to attach to its home provider's BIS. Essentially, this would look like a BES setup but at the carrier level. I believe this would allow for faster transmissions and also provide the needed redundancy for a growing customer base. Of course items like BlackBerry Messages and PIN messages would still have to transit the RIM core in the above design, but the the load on the core would still be drastically reduced.
I h8 txtspk.