If it ain't broke, don't fix it. Also:
Another package with great UI is calfw.
Of course, there were already plenty of great classic packages (e.g. Dired, Calc, Gnus or Eshell) and modes (e.g. AucTeX, SLIME, ESS...). But things are getting really good lately.
ELPA and use-package have also done away with lots of friction points when installing and updating packages.
I do too, but I've had no luck at all with it so far.
Emacs seems to be probably the only one piece of software still in use that can be considered a software runtime for text-oriented applications and UIs. It gives building blocks that strongly favor function and efficiency over form (though one grows to like the minimal, text-based aesthetics). If you write your code correctly, you can get some pretty awesome features for free - like TRAMP, i.e. access to remote files as if they were local, across a variety of protocols and with ability to tunnel through networks.
But my absolute favorite right now is that, unless you purposefully screw it up, your Elisp program will look and work the same way on GUI Emacs frames as it will work on Terminal frames. That is, I get to use it from anywhere, by SSH-ing to my computer and running `emacsclient -t`. A capability I use extensively for programming on the go, and which alone gave my small laptop years of extra useful life.
I love Magit, and I'm excited for more software that's built on Emacs.
Mike Zamansky has a whole range of emacs related youtube videos.
The convention is to name the upstream remote ~origin~. If you follow
this convention, then you have to do nothing else and the remote by
that name is automatically used, provided it exists and regardless of
whether other remotes exist. If it does not exist, then no other
remotes are tried.
If you do not follow the naming convention, then you have to inform
Forge about that by setting the Git variable ~forge.remote~ to the name
that you instead use for upstream remotes. If this variable is set,
then Forge uses the remote by that name, if it exists, the same way
it may have used ~origin~ if the the variable were undefined. I.e. it
does not fall through to try ~origin~ if no remote by your chosen name