def join_source_projects_and_users(source_project_df, source_user_df,
    target_user_df):
    """
    Join the source project details, source user details, and target user details.
    :param DataFrame source_project_df: the source project details
    :param DataFrame source_user_df: the source user details
    :param DataFrame target_user_df: the target user details
    :return DataFrame: joined_df
    """
    joined_df = source_project_df.merge(source_user_df, left_on=
        'source_owner_id', right_on='source_owner_id')
    joined_df = joined_df.merge(target_user_df, left_on='source_email',
        right_on='target_email', how='left')
    return joined_df
