There are some considerations that I believe should be made when choosing witnesses. I am not certain some of the information that would help with this is EASILY available. If it is not then we should work towards making it so. Why? There are some other important considerations in voting for witnesses that I've only recently begun to consider.
I've had people say "you should be a witness" and while yes I do have a network engineering background and I likely would be a good fit, this is not something I wish to do at this point. I believe we have plenty of good people willing to take on that task for the moment. Though depending upon how things fare, or what I learn I may change my mind. In fact, I am potentially considering that in the future.
For now though let us consider the beauty of the blockchain. We know it is protected from censorship and take down largely due to it being a decentralized file system. This means it is replicated across the witnesses. If these witnesses are spread across multiple countries, states, etc then it makes takedown even more difficult. Currently there are 19 active witnesses and many more backup witnesses. The witness voting section lists the top 50. This makes our blockchain rather ressilient IF we are smart about our witnesses.
One very important piece of information when it comes to witness nodes is "Where is the node actually being hosted?" and this is not information that is easily obtained (to my knowledge). Yet, in thinking of attack vectors to take down or censor our blockchain it is one of the most important pieces of information.
If our nodes are widely distributed then that makes us less vulnerable. What I realized today is that there is a potential that a large number of the nodes are AWS (Amazon) or Azure (Microsoft). If a significant number of our witnesses or potentially ALL were on the cloud through those providers due to us not really being aware then there may actually be 19 active witnesses. If they all are running on those clouds then theoretically the ability to take down the blockchain could drop to being done by only getting those two companies to go along with it.
Having some nodes hosted in these locations makes total sense. It also makes sense to do front end websites at such locations. For the most indestructible version of our blockchain though we would want a significant number of witnesses that were NOT being hosted in the same clouds as the other witnesses.
This also would be nice information to know when voting for witnesses. If they could show something like an IP address and mask the most significant octet then at least we could do a whois when voting and make sure we are not sticking too many of our eggs in the same proverbial baskets. Some people may indicate knowing the IP could reveal too much and make the witnesses (people) themselves vulnerable. Not really if we conceal the significant digits. For example: 192.168.x.x is a local network and wouldn't EVER be the IP of importance for a witness. Yet x.x do not need to be shared. In this case the 192.168 is significant enough to identify this class of network. (not even touching IPv6 here) Yet we could determine country, we could see if they were using IPs belonging to Amazon, Microsoft, etc. It would help us in making sure we are actually spreading our witnesses around as much as we actually think we are.
