In an other thread Steve Davies mentions that Pharo can be a bit overwhelming. Indeed I have had the same feeling.
I was struggling for weeks (not every day, but still) to find out how to change the system to be able to give background color to text. As part of my attempt at understanding the code, I ended up looking at Rubric and its Text morphs. I have been working at building a little tool which can help me get an overview of the objects and how the are connected. Not a static code analysis, but a snapshot view. What I did was I took a root object, and made the transitive object closure from that object, with the following restrictions: - Only Rubric, Morphic and Collections are examined, though Strings are excluded - Only instance variables which has a selector of the same name are included - The same object only appear once in the diagram, but more than one instance of a class can be present (at different places). I build on a tool named PlantUML. When I bring up the morphic halo on a playground and select "inspect morph", and then draw the diagram for that morph, I get this diagram <https://www.plantuml.com/plantuml/svg/ZLfFZzks4h_lfp1oUdieG54aHVNmq6IJea4RTD4jyCvQMzdLYsmPifncltr7iZYS6L7hFHamvpSav_yCzSjfgFhXl6zlRePcQEjDjVdh_FYmxRkshNT_rp-6Brr_VFvFMPQkB4gjRczkkiV_rzjXymu8Hu8_caFzRbETDl2_YgiJxjEFeJwSckuG26pkjRVAkaZuULyzrHDr8CfANIXTQCBjOL-rxUTTVO1JldnijWFmhFeNH3YTErFc1F6-xwkuNkIPCzOOTlhxgg-U-YfkN7ezxgpygvSioB6wVgXtTwEmfYC54cTrcIdA9oqEu-6MPUdvkO2ihnxgcUV7UjlrrT3rU1cL5IhF2otPDzjFtq52lrM7NLiZUPvRwtFZ_MiYBvGj2bLOlIP02n8i7HVCmtDt7Xw65zXiSSZ2gp8hbL4CyNxNzOSzdF5ZSpgsrKiyfSkpJ9VAYnr6jGzL--tJhY7CTUwjpfoY1d84yb-Rm-wl6XXlwuUw_zviKMSQZACq9jUC_TqpMC1sgFiFRRVzXWBBR6P052fz572EvZWqXwSltIxQXFMbjKpZJ7wkp7AjnUtk-sOFHeoQPXh9jNCP75fViw7IUsrqLhYhlcUiTuxf-4FNx-g-th6TdIjDgHX3RWjWJUF9hbktjc1NeAWt-x4VUSC9kPf6vOEyt_TrXPS66bCo2n0E3oSqnfbhPzJEP8Mn2p6dVQai2rTgLrnLIcvL3YQNhVgJCOK7dypVB1fjGU9PvkqYDbryOxDjgzCfXj2iB6Yu-tmurSD5tQXdOvJsJikWlH96HlVtXI8y7vhziQq5Ks_17Dz0G-xnTryTJb-xVl-_PdZ-etg1gC9T8IyLE8-vQd3WCva2DnUUEsMp3nNkR_8yywQWqIpf20QIbJ9BRQS5117CGc2wQd7UALU2s2LXcglFbGTDqi2Ii0qu9fXnocaUXch0A6L1FCxAT7DtxdlOU4nn8AH59BTPNkQ5k-vAESZAAUFLma8l6hYlOWw5U0WUuWkzeBthziVkL9DORyinVRybSfUb0grcYyIO28KcSw2hg_NAI6Co5iBIX4v1ndEiPk4E3oBaYPwP6cZ6-epLHQyPXGUTA1QqKdPU571opvBUdnSpNrOi6hQ7KAYjD8qJAJp03g7EkYfTIFsk04DpL_mBYgJIvdejP-eCXAQqMHFfMAkz8d1OXg11DRSiA6JGr4hRjsShS2KrnkGrfMOsLndtz7ISKTvOiF3LYrfWevay-Rg3h6cKusxzvx4-G02uQxiJ_7oissRV38bApKBjx8j5RITRWEXZSoVmjeIf8C6wmbyJ0TIqKCDxLY6nEqB5aOqzmQgsBRYGfo9QDVMYo0jhYwlnp07BqIMkrpaEQcSk_qiMk--xOzqFJOqc1YMB6sjn8hrNKZwKn4gfh7opHHe3BGml4fBYXcgqrBbwOsOhNGvk3qvzJH15viUOCv5X4xTvbxtR_FJJVxcbCugVDzdjflldKFVJ_w5P2wZOd7IaHwDyOpd8A2Q-0rZmM3eAi4Pmp302h6ytspaRtNIngGkusB9qf9DZrqLrC8hBTOVdkey6SjFHneuoYVx9IIOk1xZS3HKHsnxh5qOXf3rtTd6xa8aIYqn_sEAnqsArm2ZOOL5m51XhDqOn0UjWQ08TTHYZaa1hSbLi6rTD9r8iJ8U0YUcWXmemRBkhlrRdTlYzVjbNnoE4uC-7NVr3iCeZA-nG1QlyTlDrqTUEHDYdqkieleBN6AkxIIMXKLsLGQHOo21qiKaSDgoKSomh6CN4-Vje-TkBwHEmJX-BWZK_5W57USOoMu1pOKy4RQvlROWzOUVDP8aHdb5CDsv5LX1CuirZPI6Ow6JW83oY0EPEJ320spzE6M6QsuohE1QWjvXRDBOyNM4T74yV9qu23wUlINwPJ2eC6-Zk8O-mzKGaYDYuUIow19f60fnCq5tZy85Hh4LhD14cD-nh6CN4uuHTa83hT12WSBqM10YRgFeuZH9iHjk_z8NZy4hWe_N7mOt06w41WhOhoPYWxUtcgHw-r8VpVTSssnV1mKKTXaP3C72GaAUEH22BY9nBU04iBlVk-hkntXTe7-M6Gqk1zxUROnWM2tH9p3wCAGIwf363M8qYEJuqvj9i56fiwkGb2n9fSIOgMMJXyX9Cx6vkfIGKpEvqVjoFnTwbGWbZDRHtd1LsP9QsY2I6BwSY2G6JE1XcAWAU22GuSKjl7fTJcnCmhId2i4_W4xlFypPMVOMEXInVui3vSMexvymNh4Q4aSkuc144TDG70STpnqS5WTOoyqLqdevW59tJ-1acQFJG-4R029Q79c1DFI2MdHIjHzTxciU_0XvFZQC4WOP3dzfcjpYrIT-NGY7MxI58jW9fIP8E_Q50MY5dhCEPjF19Yb6an8Leuh0ujXPegME29la11qC2JNMC1HIlvy8Kcb6ivKZ2GoUSaZBGozeY14NM9k3Z3AEO3h2l-c_JF52WgKk70Q50ZrRMDOSX1OzoYrDx0H_pwlxuN9sQqs_GR4_BeH5YIezFTuo4jqV18jczQNA95AImcEkf2DPfVLCmNFlxPTBpM4auQKrmlYJWkJ1LWYQbD6lD29gMqWGP7IpEwGKI7EnvxTYnYeXZ6G5tmaTm0C1KHNKTAIvLgD0rOK25Fe-P11vata8pTgb2WZqkMhYuicZXS7ZDYbSS2JEAot5bgWn3xPLKYSl9L1d1fEB7no61JrNyOLAUxZVYScft0ewxnpSIWKybwdaEdsmNv28Re626ul4mZ6OPnJAA4pGvE0xA1Lf6SOBEq-v1qJIAe-ipsmwF4OnWUMW2NccmA7gHgGaydZgE7WMSfMe2NKdL54fJDK76I1BVUmHIfkhGUR2H5dwpGWcMxMZ4hemm29OsesW5QNUCooc7862oAmvi1JxX4A5oOflZOnObMDuuOlMALKOi6yHTsWqo-fi_TLYkqLOGdtII1h5SfVFPkJ5alZk_cfBLwOfJSNxVTIt34GUOtzOPRkgKeFBPXWOJWIIFueCMW-Qo9K0Fu_LY-AA1KIoTbg19WCPtJ86MaOQWL-f5YcOzGPWDirFZkmoZI5Iv4KrEZLzH2FIYoetebVX8qVJK6C19YHPUecZfawp3S3JF1e3u4HcZO2KUraJhioEaICsE8fmuFNu79E1IM0HDIbjyBXLeMUCHD8dCuNit0OR0t9yXq8JdZLcohB35hmOuIIA-4lnAuyZmRE0tD-E9EH6QA5cRFp_iOXM7hZ3L6A7pOth7fqv6aQp0i3Hble8VCJAAjTuAtnuGZzzbqJJBCXb-0SOebg8cw9KkWgAfeEVHBRDh_Cw8h2zosSqlzM4tVeZwBm00> . Strangely, I find it useful. I use it as a supplement to the inspector. I hope to be able to pack this tool, and a companion one for generating sequence diagrams based on the execution of a block given as parameter. I see these tools as exploratory tools, not as documentation tools. Best, Kasper,