The enrollmentStatusHash cookie value was created in commitf0030334as an optimization, in order to determine whether the marketing site needs to refresh the list of a student's enrolled courses with a call to the LMS. To ensure that this value was kept up to date, commitd7a7bcc1reset the user's cookies every time they go to the learner dashboard page (which used to be the next page loaded after you enrolled in a course). This didn't just reset the enrollmentStatusHash though -- it recalculated all the cookie values, as if you had just logged in. A number of things have changed since then: 1. Enrolling in a course now goes to that course's info/navigation page, rather than going to the student dashboard. 2. It doesn't appear that the value of enrollmentStatusHash is actually being examined anywhere -- it's set in a cookie on the LMS and read/written by the edX marketing front end code, but the value is never looked at to make any decisions. 3. The introduction of add_email_marketing_cookies (which triggers off of the CREATE_LOGON_COOKIE signal) has made cookie resets far more expensive, as there is a blocking call to Sailthru if you have that enabled in EmailMarketingConfiguration (which edx.org does). This can add over two seconds to the server processing time for the student dashboard at certain times of day. Given this, I'm removing both the call to resetting the cookie on the student dashboard page, as well as setting the value for enrollmentStatusHash.
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.