I let the library do the heavy lifting(BOLS2) these days. I want to contribute to it but hadn't mastered the many features of the library just yet.
Some of the features I used:
* Attachment & align. I can attach things to faces and I can align things to edges as needed.I wasn't super clear on how it work in the class, but I found that doing a simple exercise of aligning objects around the face of a cube increase my knowledge how it all work and my confidence.
* Chamfer. I am aware of some sort of fillet feature or rounding features but I mostly stick to chamfering my design for now.
* Teardrop shape. Mostly because I need it due to the constraint in FDM 3D printing.
* Some simple shorthand like right, left, up, down for when I don't want to use translate([x,y,z]).
* Constants and directions such as FRONT, BACK, LEFT, RIGHT, and so on, which can be applied to basic shapes.
* Diff. It works differently than openscad's standard difference and as far as I can tell very powerful if you understand how it goes together. I have difficulty in the past in figuring out how to use it, but once it does work, it's very cool. I planned to do an exercise so that I can better understand how it all works.
BOLS2 as far as I can tell is a very deep library so there's lot to learn. I would love to start contributing to it.
Anyway, a lot of OpenSCAD's flaws could be attributed to a lack of library development. I handrolled my own library to use in different projects before I realized that BOLS2 did everything that I could do but better.
Have you ever used a modern CAD tool like Fusion or onshape and done constraint based modeling?
Yep. I am no stranger to using Fusion 360 and OnShape. Not really an expert, however.
Now, in the course of using it, I have issues with these tools as well. A lot of it is just getting used to the interface and the overwhelming complexity. They are not intuitive at all to use. Messing up required debugging why I am in a particular state. It's hard to figure out where the things I need are located. I am fairly certain that I would be real good at it if I stick at it long enough, but I invested more time and energy into OpenSCAD.
I am uncertain as to what you mean by constraint based modeling. I know I used it in these programs, but I don't really need these features nor do I need to do a lot of math in OpenSCAD that I would have need to use without a library. Maybe BOLS2 does do a lot of constraint modeling for me, but the documentation never talked about that with me. All I know is that I don't need to do as much math as I used to.
Rather, my complaint about OpenSCAD is legibility of objects and barebone UI features. Sometime, I don't know which is the front or back of the object, or maybe I want to know certain parameters of the objects unless you do the work beforehand. I want to know something like object.x and object.y for example, or the final compounded object width. Being able to pass information from one object to another is useful but that is lacking in some aspect of the language.
Just being able to label things in OpenSCAD would be tremendously useful for me.
Now, you can program in OpenSCAD with python, which seems to be a gamechanger. However, I have no idea on how it would interact with BOLS2, so I am kind reluctant to try it, but it would make objects in OpenSCAD much more legible to use.
The functional nature of openscad felt like a straitjacket at time but it did force me to get very familiar with recursion and all sort of ways on how to manipulate arrays. So I credited OpenSCAD for stretching my capability as a programmer. I still don't like recursion.
That said, despite the challenge of learning how to use BOLS2 for OpenSCAD, I am loving it especially when I finally grasped how a part of the library work.