Emacs is not complex and bloated by the standards of recent decades. To address the "complex" point, yes, there are a lot of lines of source code in the Emacs tarball -- not nearly as many as in Firefox's source-code tarball or Chrome/Chromium's, but certainly at least an order of magnitude more than, e.g., Bash's tarball -- but the vast majority of those lines of code will never run on your machine unless you make a conscious decision to do so. E.g., the tarball contains at least 9000 lines of Emacs Lisp specific to the Ada programming language (code that indents code written in Ada, code that applies Ada-specific syntax coloring / highlighting, etc), but unless you explicitly load the files containing the 9000 lines or you open a file with the extension ".ada", those 9000 lines will (unless I'm really missing something) never run.
Emacs does have a steep learning curve.
E.g., what Emacs calls a frame, everyone else calls a window; what Emacs calls a window, everyone on Windows, Mac, etc, calls a pane (and the decorations around Emacs's panes, er, windows, look nothing like those around most of the panes on the OS on which the Emacs is running.)
E.g., Control-U in Emacs does not mean what it means in most Unix programs (delete to start of the line).
There's a lot of those kinds of differences, and it is understandable that a lot of people don't want to learn those differences.
But please don't just say "complex" (or "bloated") when you mean that it has a steep learning curve or that it has its own set of conventions that differ from most modern software.