outreachy / website

Code for the Outreachy website, based on Python, Django, and Bootstrap.
https://www.outreachy.org
GNU General Public License v3.0
234 stars 234 forks source link

Email templates with feedback instructions and reminders don't reflect our current policies and terminology #569

Open contraexemplo opened 3 months ago

contraexemplo commented 3 months ago

If you're interested in the bigger context around this issue, I published a longer, more detailed report about it on my blog.

Context

Outreachy used to collect feedback from mentors and interns 3 times during the internship until a couple of cohorts ago:

With the introduction of a fourth feedback cycle, we started referring to feedback cycles as Feedback 1-4 and we've established that only Feedback 1 and Feedback 3 are tied to stipend payment authorizations.

Issue at hand

Outreachy organizers often send automated emails to mentors and coordinators via organizer dashboard. Currently, when an Outreachy organizer sends an automated email to remind mentors to submit Feedback 4, they're sending an email based on the following template (home/templates/home/email/final-feedback-reminder.txt):

[URGENT] Mentor feedback required for final payment to {{ intern_selection.applicant.applicant.public_name }}

Please provide feedback on your intern through the Outreachy website. Their final feedback was due on {{ intern_selection.final_feedback_due|date:"M d, Y" }}. Their final ${{ current_round.finalpayment }} payment will be delayed until you provide feedback:

Causes

We have 4 email template files on home/templates/home/email referencing Feedback 4:

The organizer dashboard is still using home/templates/home/email/final-feedback-reminder.txt as a template to remind mentors to submit Feedback 4, according to dashboard.py:

class FinalFeedbackInstructions(FeedbackInstructions):
    """
    Send final feedback instructions to mentors and interns.

    When: When final feedback forms open, and again if feedback is missing.
          Emails may be sent with an URGENT subject if feedback is late.
          Emails may be sent multiple times if there is a internship extension.

    Templates: home/templates/home/email/final-feedback-reminder.txt
               home/templates/home/email/final-feedback-instructions.txt
    """
    description = 'Final Feedback Reminder'
    slug = 'final-feedback-instructions'

    @staticmethod
    def due_date(current_round):
        return current_round.finalfeedback

    def generate_messages(self, current_round, connection):
        if not self.request.user.is_staff:
            raise PermissionDenied("You are not authorized to send reminder emails.")

        # Only get interns that are in good standing and
        # where a mentor or intern hasn't submitted feedback.
        interns = current_round.get_interns_with_open_final_feedback()

        for i in interns:
            email.feedback_email(i, self.request, "final", i.is_final_feedback_on_intern_past_due(), connection=connection)

Code in email.py makes it clear why that happens:

def feedback_email(intern_selection, request, stage, past_due, **kwargs):
    emails = []
    if past_due:
        emails.append(organizers)
        for m in intern_selection.mentors.all():
            emails.append(m.mentor.email_address())
        emails = emails + intern_selection.project.project_round.community.get_coordinator_email_list()
        template = 'home/email/' + stage + '-feedback-reminder.txt'

Possible solutions

Short term

Editing home/templates/home/email/final-feedback-reminder.txt. It should use the same language used on home/templates/home/email/feedback4-feedback-reminder.txt.

Long term

While trying to find the cause of this problem, I noticed that language around feedback cycles is quite convoluted. We often use old expressions such as "initial", "midpoint", and "final feedback". We need to reach an agreement on what terminology should be used, and update our code, website, and processes accordingly.

contraexemplo commented 3 months ago

Upon further inspection of other email templates related to feedback instructions and reminders, I realized all of our templates have issues with inconsistent wording and terminology:

contraexemplo commented 3 months ago

Sage and I agree that changing that terminology across our codebase will take a huge refactor. Here are the more pressing issues for now:

contraexemplo commented 3 months ago

Our Internship Guide refers to the stipends as "$3000 stipend" and "$4000 stipend". My proposed solution is to use "Mentor feedback [1 or 3] required for stipend payment to [Public name]" on the subject line and use ${{ current_round.initialpayment }} and ${{ current_round.finalpayment }} on the actual message.