<div dir="ltr">Michael, it's the same logic behind my now 12 year old Bare game system that did the exact same thing. I am creating a small lPascal ibrary that removes a lot of cruft and depends minimally on SDL for creating windows, managing input, handling sound, threads / mutexes. and move most of the core of what you need into a single unit (Tiny.System). In to browsable and organized uint replaced all string handling with much more efficient and powerful functions (see my FTP client and other socket protocols, my JSON parser, ), I also add in multicast delegates for events, path handling, file handling, file search, stream handling, and better threads (my simple threads were copied into ).<div><div><br></div><div>One of the big problems IMO of the FPC base library, as compared to Delphi, which I have brought up here before, is that in 1995 - 2001 while people were using Delphi, they could learn by reading the source code to SystUtils, Classes, Controls. This is something I found to be invaluable, not only as a much better way of gaining an understanding of what is happening, but also a better way of debugging and painting.  As I have mentioned before, and have received the response that you're not supposed to read the source code with the FPC base library, you're supposed to just already know it. </div><div><br></div><div>Here are some tidbits from one of those past discussions"</div><div><br></div><div>>      "I cannot share code, obviously, but I'll say that the code is a big mess of<br>>     IFDEFS, used in what seems to me an inconsistent manner (if there is any logic, I fail<br>>    to see it). Lazarus has understanding of IFDefs, but the Delphi IDE does<br>>  not (just as it does not understand include files), killing the code<br>>      navigation, making it hard to navigate or understand these unit."<br><br>>  "I normally do not visit these units, so it doesn't harm me, but when I by<br>>       accident ended up there I remarked it...<br>>  I think the problem is more on the poor guys that must maintain it :)"<br>><br>> "These units are not this way for the sake of browsing, but for the sake of <br>> maintainability."<br><br><br>>        "And honestly, I cannot even remember when I had to look up something in<br>>     sysutils or system. I expect experienced people to know these units better<br>>        than the back of their hand. For beginners I think documentation is better<br>>        suited."<br> <br>And lastly:<br><br>>   "In short: the RTL will stay as it is, because it's a proven design without<br>>      better alternatives available."<br><br>Well, here I present one alternative from my own imagination. Maybe some people might see this alternative and find inspiration, where in this alternative most of the stuff you need for your general purpose programming in one unit, and other more specialized functionality in others. For example the the Tiny.Application has window and context creation, base scene and widget, as well as input from mouse, keyboard, joystick, and haptics. The Tiny.Graphics unit defines everything you need for drawing as well as image handling. The Tiny.Physics unit has everything you need for physics simulation. Everything is organized into browsable units, with documentation right above most everything (in the form of comments).<br></div></div><div><br></div><div>Regarding separating the documentation, I am not sure <a href="https://cache.getlazarus.org/images/desktop/bare-documentation.png">if you remember</a> but my Bare library has a really good HTML based help system that is autogenerated from the source code. This Tiny library will use my same HTML help generator when I finish adding in a few more features including converting themes to use SVG theme definition files and a UI designer which uses JSON to store and recall UIs based on the custom widget system. My HTML help generator also relies heavily on both grouping content (via the [group] indicator in comments, but also includes detailed information about each unit).</div><div><br></div><div>Oh and to preempt a side discussion about why also I wrote a widget system (why not just use the LCL controls right?) here is a brief demonstration from the SVG icons playground demo included in this release:</div><div><br></div><div><a href="https://streamable.com/cv137g">https://streamable.com/cv137g</a><br></div><div><br></div><div>I hope you or others here are not offended by either my by my library design or my rational included in this reposne.</div></div>