This is a great post. Some of the issues you raise here are similar to your previous posts on family structure and name input. At first glance they seem like simple problems, but very quickly layers and layers of complexity set in.

I’ve worked on visa systems in the past, and country lists are a complex and time consuming part of system definition and testing. For instance one system I worked on had different lists for country of residence, country of passport issuance, country of birth and country of citizenship. The middle two categories have to include countries that are no longer countries (e.g. Netherlands Antilles). The country of issuance includes non-countries (e.g. the UN and agencies) and doesn’t include some countries (e.g. Cook Islands). The final category needs to include an option for ‘stateless’ and other specific categories. That’s before you even get to the mess that is what countries recognise other countries (e.g. South Sudan).

Why does this matter? Well this type of browser list may be used by airlines for checkin system, for financial services in opening or accessing accounts, or for voter registration. It’s very easy for these types of well meaning lists to systematically disenfranchise people from online services.

PS One other issue I’ve noticed with this type of implementation is sort order, especially in translation. One county’s eVisa system decided to sort on ISO country code whilst displaying full name. Hence the United Kingdom appearing between Gabon and Granada!