Skip to content
William Gearty edited this page Mar 6, 2026 · 25 revisions

Welcome to Learning Unlimited's ESP Website Source Code Repository

This site is used to track the code of an open-source web platform used by university students to run educational programs for middle and high school students. The code was originally used just at http://esp.mit.edu, but it has since spread to run many other sites including http://splashchicago.learningu.org and http://www.stanfordesp.org. The source code is licensed under the MIT License.

News

We've been selected for Google Summer of Code 2026! Feel free to take a look at our GSoC Ideas page.

What?? I have a problem and I just need help!

If you are having an issue using the web site (i.e. you need help from us), please feel free to email us at websupport at learningu.org.

I want to get involved!

Great, thanks for your interest in contributing to our project! We are really passionate about it, and we're excited whenever there are other people that are also passionate about web development and/or education outreach. If you want to get involved, please note the following rules:

Rules

  1. Respect all contributors of the project. Specifically, please make sure to follow our Code of Conduct. Remember, contributors include anyone who interacts with this repository, such as issue writers, commenters, committers, reviewers, and maintainers.
    • Please do NOT direct message or email the maintainers, or comment unnecessarily on issues or PRs, unless you have a concrete question. Letting us know that you have submitted a PR, or that the tests are passing, is unnecessary and bogs us down, slowing down our ability to review PRs. Unnecessary tagging of individuals (i.e., using @username) or messages may be considered harassment and may result in a ban.
  2. Request assignment to an issue before working on it. This helps ensure that multiple contributors aren't working on the same task, helps keep track of responsibilities, and also allows the maintainers to provide feedback on suitability for new contributors.
    • You can use the /assign command to get automatically assigned to most issues.
    • New contributors are limited to a maximum of five issue assignments at any given time. This includes issues that have pull requests under review.
    • New contributors are also limited to a maximum of five open pull requests at any given time. If you already have five pull requests open, the others will be ignored until your others have been merged or closed.
  3. All contributions (i.e., pull requests) must be submitted and reviewed by a human (see below for our more detailed AI policy). This ensures that our codebase, which is used in production across the US, remains functional, secure, and maintainable. Further, this helps to promote a friendly environment for new contributors. All reviews require at least one review by a human, who may be assisted by AI tools. AI tools may be used for the development of pull requests, but all code must be checked for accuracy and completeness by the human submitter before the pull request can be reviewed. All AI usage should be disclosed upon submitting a pull request.
    • Note that all of our reviewers and maintainers have full-time jobs and may take a week or longer to respond to pull requests.
  4. We reserve the right to reject low quality pull request submissions. Repeated offences may result in a ban from this repository.
  5. Conversation on an issue should be limited to the scope of the issue. Please use the discussion section for discussions unrelated to specific issues.
    • Do not copy the contents of a pull request to an issue. All of the information for a pull request should remain in the pull request conversation.

Getting started

Our codebase is based on Django, a library for the Python language. In order to contribute to the project, you will most likely need to set up your own local development environment with Docker. Your working copy is on your computer, but it is shared with a virtual machine (VM) which actually renders the site.

Once you have a development server installed on your machine, you can then contribute following these instructions (and the above rules. Roughly, the workflow is as follows:

  1. Identify an issue that you find interesting. We have a whole bunch of them, and they vary by topic and complexity. If you're a new contributor, you may want to filter to just the "Starter", "Small", and/or "Easy" tag(s).
  2. Ask to be assigned to the issue. This makes sure that no one else works on that issue in the meantime.
  3. Make a fork of our repository, then make a new branch for this issue.
  4. Develop a fix for the issue in your local environment.
  5. Push the change and open a pull request. Describe your changes and how they address the issue. Don't forget to mention which issue (by number) you are addressing!
  6. Wait for your pull request to be reviewed by one of our core contributors. In the meantime, why not work on another issue?
  7. Respond to the pull request review and address any requested changes.
  8. Possibly repeat #6 and #7 several times.
  9. Once the reviewer is satisfied with your changes, they will merge your pull request. Celebrate! 🎉

Some resources that may be useful:

AI Policy

The use of generative AI is permitted for most aspects of a pull request submission (e.g., software creation and review, generating documentation and tests).

Required disclosure: All new pull request submissions must include an AI usage disclosure section that clearly states whether generative AI tools were used. This disclosure must include

  • Tool identification: Specify which AI systems and versions were employed, noting exactly where they were applied (code, documentation, manuscript sections).
  • Scope of assistance: Describe the nature of support provided—examples include code generation, refactoring assistance, and testing scaffolding.
  • Human verification confirmation: Contributors must affirm that human team members thoroughly reviewed, modified, and validated all AI-generated content while making primary architectural and design decisions.

Prohibited AI interactions: Conversational use of AI between contributors and reviewers is restricted, except for translation support.

Author accountability: Submitting contributors bear complete responsibility for accuracy, originality, licensing compliance, and ethical/legal standards of submitted materials. Incomplete or inaccurate AI disclosures constitute ethical violations with consequences ranging from rejection to institutional notification.

Who are you? (to be updated)

We are all former student leaders, mostly at the MIT Educational Studies Program. Up until now all developers have been MIT students, but that is likely to change soon as we bring in more new developers. The list of people who have contributed include:

  1. Jason Alonso (MIT '04, G)
  2. Andrew Geng* (MIT '11)
  3. Mike Axiak* (MIT '09)
  4. Catharine Havasi (MIT '03, Brandeis G)
  5. Mike Price* (MIT '08)
  6. Adam Seering* (MIT '09)
  7. Nelson Elhage (MIT '09)
  8. Yuri Lin (MIT '11)
  9. David Benjamin (MIT '12)
  10. Reuben Aronson (MIT '12)
  11. Alex Dehnert* (MIT '12)
  12. Tony Valderrama (MIT '11)
  13. Jordan Moldow* (MIT '14)
  14. Ruth Byers* (MIT '13)
  15. Vishal Dugar* (BITS Pilani '12)
    • They are still contributing

Why are you (over)doing this site?

Since chapters across the country have been relying more and more on our web site, the problem domain associated with the code has become extremely specialized. As such, we feel it could do a great amount of good in helping any other group that wants to run somethingkindoflikeESP. For that reason, we are making this code run as well as we can, and trying to learn from our mistakes over the years. It has served the organization well (albeit with many bugs) for nearly five years now.

How does this work?

This site would not be complete without mentioning Django, which is the framework we use to power this application. This code will make much more sense in the context of that wonderful project.