Probably you want all of them to be as simple and small as possible, especially if you want to use it to work on itself. Smaller codebases are (generally) easier to work with.
Sometimes smaller software has the harder codebase.
Sometimes smaller software has the harder codebase.