(Take note: First published10 October 2016. Written by Ashwin Rangan. No updates yet.)
Universal Acceptance ensures that all domain names and email addresses can be used by all Internet-enabled applications, devices and systems. It is essential for the continued expansion of the domain name system and provides a gateway to the next billion Internet users.
ICANN is supporting an initiative lead by the Internet community – including some of the world’s leading technology firms – to help organizations and software developers update their systems and services to comply with the principles of Universal Acceptance. In order to comply, software must accept, validate, process, store and display all domain names equally, consistently and correctly.
ICANN and other companies involved in this effort are working to set an example for how other organizations might achieve Universal Acceptance compliance and better understand the challenges these organizations will face. The Universal Acceptance Steering Group is publishing documentation and use cases at: http://www.uasg.tech/documents.
Achieving Universal Acceptance Compliance Within ICANN
As of mid-2016, ICANN has 87 different systems and services. Forty-one of these are “off-the-shelf,” meaning that our only means of altering them is by asking the service provider to update their systems, or to find another solution. The remaining 46 systems and services are custom – these are in our control. Every field or line of code in their software that needs to process an email address or URL must be able to accept Unicode as part of a top-level domain.
Universal Acceptance does not need to be a separate project. Efforts can be integrated into normal, ongoing maintenance that companies already undertake to ensure their systems are current.
ICANN is updating its systems and services in an opportunistic manner. We practice agile development, so if we crack open the code to make security updates or add new functionality, we’ll also update the service or system so that it complies with Universal Acceptance principles. Even when we aren’t updating a system, we’re logging stories about Universal Acceptance so our developers will have everything at their fingertips when our roadmap tells us it’s time to make updates. We’re also making off-roadmap updates whenever we have a few free weeks, or when we’re updating systems and software to resolve technology debt.
Plan for Updating Systems
- Step 1: Map Your Systems and Services. Identify whether they are off-the-shelf or custom, and what coding languages they’re built on.
- Step 2: Choose Systems and Services to Pilot. Within the pool of custom systems, select one system from each coding language.
- Step 3: Fix Your Code. For each pilot system, locate all instances in the code that process email addresses or URLs. Update the code to accept Unicode as part of a top-level domain.
- Step 4: Test Your Updates. Develop a testing environment for each pilot system and test each instance identified in Step 3. The testing environment must be able to trap all outgoing emails and DNS queries. Systems managers can determine whether the instances pass or fail the test by reviewing system logs. Continue to test and update until your pilot systems accept all email addresses and URLs. Get test materials.
- Step 5: Update Systems and Services. Follow your roadmap and/or utilize free time to fix and test systems on a rolling basis until all comply with Universal Acceptance principles.
Current Status & Next Steps
ICANN began its Universal Acceptance Compliance initiative in March 2016. We are currently in Step 4: Test Your Updates. Specifically, we have developed a testing environment for systems built on Ruby on Rails and we’re developing the testing environment for Java. This step is crucial because once these environments are built, the amount of time it takes to test and fix each system or service will continually decrease.
We completed updates to https://atlarge.icann.org (Ruby on Rails) in September 2016 and we expect to complete updates to http://whois.icann.org (Java) in October 2016. We hope to begin Step 5 of our plan, updating systems on a rolling basis, by December 2016.