I decided to be very opinionated about this, and my ADHD brain went on a tangent. I have color coded each advice for easy reading.
Time zones matter, and having players with time zones that don't mesh well together can really kill an rp in my experience or making certain players feel alienated compared to the rest. This is especially grating to players when implementing or enforcing deadlines in an rp. It sucks having to restrict an rp in this way, but will ultimately save a lot of heart break. Personally, as a player I hate deadlines. They're not realistic for an adult's hectic schedule, and to be honest role-play is meant to be a hobby anyways. I've found out that I start wanting to post less and less in an rp when it starts to feel like a chore or work. Last I checked, hobbies didn't have deadlines. This is purely situational though, as not all players are like this. I recommend making sure that everyone is on the same page before starting an rp. Maybe take notes from D&D even, and have a "session zero" where you all take a moment to discuss expectations and get a feel for what your players do and don't like. As well as additional check ins.
Don't play favorites. I couldn't tell you how often my voice wasn't heard in favor for another. I've typically have had several GMs in the past choose to consistently run ideas that their closer friends or favorite players created, while my or another players character arcs suffered. It's important that you as a GM make time and space in an rp for everyone. In one instance, I even had an GM allow another player to god mod my own character in their post, and then publicly punished me when I asked the player to change what they wrote. All because he knew the other player personally as a close friend, and gave into their demands when the player threatened to leave.
Make sure you have a back up plan when vital players with important characters leave. That is, in the case that said player tells you that they don't want you using their creative input after they leave regardless of their reasoning. It needs to be respected. It wasn't your intellectual property to begin with even if it was thought up initially for your rp.
Get rid of the "this is my story" mentality. No it isn't. You wouldn't even have a story if it wasn't for the writers who decided to take time out of their own schedule to play in the first place. Your players are going to have characters that have their own stories and npcs. Utilize them to the fullest! They're essentially doing a lot of the work for you, and if they feel like they're getting even an ounce of a bone thrown at them then I think that would make them pretty satisfied. However, its also important to make sure that everyone understands that the story is a collective effort and that the spotlight needs to be shared. Also, keep in mind that these players can leave at a moments notice and that you should have a back up plan just in case (as already mentioned). Not everyone is like this though or is as aggressive in their play style. This circles back to the whole "session zero" idea to make sure what the more passive players would like to see. Some people are happy not having their characters in the spot light, and that's okay. Personally, this is probably a lot easier to do with smaller groups, and I don't think it is too farfetched to say that smaller groups last longer.
This is kind of a just a lot in one! It's important to check in with your players and have an open stream of communication at all times. Just because a player was okay with one thing at the start doesn't mean that they cannot change their mind later, and that is also okay. We're human, we're allowed to change our opinions on things and our tastes change. Secondly, if a player comes to you with complaints, its never for no reason and should be taken seriously. This is a hobby and people role-play FOR FUN. If they're not having fun then it is partly your responsibility to work with them to get to the root of the problem and make changes so that they are felt heard, understood, and ultimately start having fun again. Don't shame them because they're thinking about their own happiness over "the collective". This whole conversation about "collective vs the individual" is bullshit. If a single player isn't having fun then that means that the collective isn't having fun, because they are also a part of that collective. Anyways, If you claim you're going to fix something, then actually do it. Otherwise your player will feel like you won't care enough to put in the effort and will ultimately start lashing out or just leave. As someone already stated though, don't let them walk all over you. It is okay to say no, but make sure you at least explain to them your reasoning behind it. It is also okay to try to work towards a compromise, "You can't do this because of this, but how about this and this instead?". Sometimes, it's also important to step away and ask yourself "Is this the hill that I really want to make a stand on?", will what they want really be so bad for the setting, or unfair to the other players?
For example, lets say you do impose a deadline but a player is struggling to meet it and claim if the deadline was just pushed back for them a little then it would help. Maybe take a moment to really think about it. Would pushing it back a day or two be actually unfair to the other players, or is that a personal bias? Ask the other players if they wouldn't mind even. Maybe instead of making the deadline once week, make it every other week. I find the idea that hard deadlines = active rp to be a misconception. The players who are going to be active are going to be so regardless of a deadline or not. If you pushed the deadline back a little to help another player, then that's just added time to the players who were going to be active regardless. Would that really be so bad? I've yet to personally implement this though, so take it with a grain of salt. Additionally, and more importantly, take a moment to ask the player "Why are you struggling? You were doing fine when we first started, did something change that you are unhappy with? Are you feeling okay?" Open a dialogue and ask questions, make them feel like they're a person. Usually there is an underlying reason why they're not being active, or are being difficult and lashing out even.
To take this example further, maybe they feel like their characters are being under represented or not given enough attention, and as a result they don't feel important to the rp. They don't see the point in being active or are no longer having fun as a result. It's important to get to the root of the problem rather than just saying "nO thAt's UnfAiR tO tHe OTheRs! YoUre BeIng SeLFisH!!" and shutting down or getting defensive over the request or complaint all together. Honestly, I find that language problematic. I don't think its a good idea to use the other players as an excuse to shut down a player who is struggling and asking for some leeway. It can lead to resentment if not handled appropriately, and like I said alienates your player. It ultimately shames your player who is clearly struggling as well, and at the end of the day will make them feel like what they have to say or their needs are not important to you. Which may even cause them to not reach out to you anymore, post even less, or grow to resent you. Regardless, you're a DM, and personal insults or attacks along the lines of "You're being selfish" or similar language should just not be used in any conversation with a player (friend or not). Its unprofessional, and most likely will make your friend/player lash out at you. Not a good look for anyone involved, and nothing will get resolved.
Maybe they're having a hard time with IRL stuff, and if that's the case give them the suggestion of taking a hiatus (regardless of how long it is), while emphasizing that they will be missed and that just because they're not around doesn't make them any less of an important player to you. That they can return whenever regardless for how long they are away. Don't harass them if you see them active somewhere else ((ie; I have ADHD and my focus is always changing. I, and other people like me, have no control over it. For months I'll be gun ho about one rp in particular and then suddenly loose interest (usually temporarily) for something else (another rp, or even a different hobby entirely). It sucks, but the truth of the matter is that people's brains simply just don't work the same way, and that needs to be respected. The door shouldn't be shut in their face for it because you decided to take it personally)). That is just unprofessional, and will make you look bad (I learned this the hard way. Not one of my finest moments.)
You're going to have confrontational players no matter where you go, and if nothing is working (and by this I mean steps are being taken by both you and the player to make it work) then it might be best to let them go, and you can do so gently with out ruining a friendship or making it personal. I've had plenty of GMs make it personal, and its ruined our friendship as a result. Keep in mind that players that are unhappy, players that are giving constructive criticism, and players that are being difficult for sake of simply being difficult (will always be unsatisfied no matter what you do) are not one in the same. They shouldn't be treated as such. Additionally, I know GMing is a lot of work, but, like I said earlier, this is a hobby and you should be having fun too! If you're not having fun, then your players are most likely also not going to have fun. Your happiness is just as important as your players, and it is okay to close down an rp because you're not feeling it anymore. Remove someone who stresses you out (respectfully). Make changes. Not everyone is going to like this, and yes you will loose players and feelings might get hurt, but there will always be an opportunity for them to come back at later date (be open to the idea of second chances) or even find new ones.
Try to ease up! If you're going to micro-manage you're probably going to stress yourself out and make a lot of people unhappy. Take a page from DMs in D&D, nothing will EVER go according to plan. As one of my favorite npcs from Critcial Role once said "Nothing happens for a reason; it's absolute fucking chaos. :)". Roll with it, and try to make fun of the situation regardless! That's just the nature of the game for a DM, and can apply to GMs in role-play too.
Here is one that I don't see GMs try to do, but may save some hassle on your part. Don't make a character for the rp. Act strictly as the GM who guides the players and intertwines their character's stories (like in D&D). Put all of your focus into world building and rping with npcs, and engaging with the players in a more hands off way. I think naturally people want to gravitate towards the GMs characters because the GM is the driving force of an rp (usually), and this can make it difficult to give all your players attention or make everyone happy. You remove this problem if you don't have a character to begin with, and will allow you to put more energy into making sure everyone is getting a little lime-light every now and then. Just a thought. :)
This was all that I can think of off the top of my head. Granted a lot of this is from my own personal experiences and gripes with GMs in the past, but I think a lot of it is also pretty solid advice? I don't really GM anymore (I don't have the time), and I can't exactly say if I was a good one or not (that's semantics). All I know is that I tried my best, and that so long as you're also trying your best (and treating players like a person with needs) then that should be enough. If GMing is something you really enjoy then just keep on keeping on! Eventually through trial and error you'll get the hang of it! ᕙ(`▿´)ᕗ good luck!