def get_source_tweet(tweet):
    """
    If the tweet is a retweet or a quote tweet, then retrieve the original tweet.
    :param tweet: a JSON tweet object
    :return: original tweet as a JSON object
    :return: the author's username of the original tweet
    """
    if hasattr(tweet, "quoted_status"):
        quote_tweet = tweet.quoted_status
        if hasattr(quote_tweet, 'user') and quote_tweet.user is not None:
            if hasattr(quote_tweet.user, "screen_name") and quote_tweet.user.screen_name is not None:
                return quote_tweet, quote_tweet.user.screen_name
    elif hasattr(tweet, "retweeted_status"):
        retweet = tweet.retweeted_status
        if hasattr(retweet, 'user') and hasattr(retweet.user, "screen_name") and retweet.user is not None:
            if retweet.user.screen_name is not None:
                return retweet, retweet.user.screen_name
    else:
        return tweet, tweet.user.screen_name