CookieNameChange allowed the use of the expand-contract pattern for cookies, but the suggested procedure assumed an instantaneous change on the server side. Without that, there would be a brief window of time where servers that had received the newer config would be writing cookies that the servers with old config would not be able to understand. However, the mechanism can be made seamless by using it *twice* in succession, with the first usage in a "no-op" configuration. This allows all the servers to become aware of the new name without using it. The second change flips the configuration and changes the official name of the cookie, and during that window both sets of servers are able to understand both sets of names, even though they're sending a mix of names. This can then be followed by the usual cleanup.
Open edX -------- This is the root package for Open edX. The intent is that all importable code from Open edX will eventually live here, including the code in the lms, cms, and common directories. If you're adding a new Django app, place it in core/djangoapps. If you're adding utilities that require Django, place them in core/djangolib. If you're adding code that defines no Django models or views of its own but is widely useful, put it in core/lib. Note: All new code should be created in this package, and the legacy code will be moved here gradually. For now the code is not structured like this, and hence legacy code will continue to live in a number of different packages.