“What realistic and community-driven steps could we take to grow the Lazarus / Free Pascal ecosystem and make it more welcoming to new developers?”
I think that's the right question to ask.
Amazingly, I agree with Thaddy's take on this one.
A hard core killer app written in FPC. An app that would attract hard core programmers towards Pascal. That's not easy to create.
From the viewpoint of someone continuously peeking into Windows internals, removing some problems would be enormously helpful (not only to me but to anyone else who likes peeking into the internals.) Among other things:
1. turn off FPC's assumptions that "var" means an input value. That often causes hundreds of worthless messages to be emitted by the compiler that get in the way of noticing important messages. That one is the biggest _continuous_ FPC annoyance.
2. Sensible and complete way of aligning records and their fields. What FPC provides, pretending it works (I've never figured out how that stuff is supposed to work, again, presuming it does) is the most counter intuitive facility I've seen in any programming language (it's trivial to do it in C, why isn't it as simple and easy in FPC ????)
3. A complete, _accurate_ and polished set of API definitions. That's a BIG problem for programmers that walk away from C/C++ because the ONLY set of API definitions that is reasonably complete and accurate are those provided by MS and, not surprisingly, they are C headers. For someone like me, it means continuously updating the API definitions in order to have a usable set for what I do (Windows internals.) Corollary of that, include undocumented functions (they don't hurt anything nor anyone.) Many programmers are aware of Process Hacker/System informer because it provides the most complete set of definitions of undocumented APIs.
4. For the love of common sense, add a sensible keyword to define static variables. It is _embarrassing_ to "explain" to someone interested in Pascal that static variables are "writable constants". If there ever was a way of making a first BAD impression, that is probably it.
5. FPC is "rather loose" in some areas. I won't elaborate because I've already done so in the past and FPC users seem more interested in protecting their beloved compiler than logical and mathematical accuracy. That is significant problem because many programmers are not inclined to deal with the resulting nonsense not to mention the programming problems those things create. I feel that I owe at least one example: in many cases FPC makes assumptions about the values that variable may have based on its type _and_ if the programmer adds code to _ensure_ the variable's value is in the proper range, the compiler flags the code as "unreachable". You can place an invalid value into a variable and have code that checks the range and what happens is: the invalid value is accepted and the code that verifies there are no invalid values is discarded (just what a programmer needs!)
Back to the positive stuff...
Yes, a hard core killer app would definitely help. I got one in the back of my mind that I occasionally work on but, other people who have done that app have taken over 30 years to develop it and/or benefit from having a team of superbly knowledgeable and qualified people working on it. That's tough to match and tougher to exceed. Not going to happen but, it's my pipe dream and it's free, what's unfortunate is, it's rather unlikely I'll provide the helpful killer app.