Let me start with an example: I wanted to build a graphical bitmap of a font 
with the basic ASCII characters for some retro testing development. Still 
learning Nim so these projects are easy and fun to work on.

I wanted to use a specific mono spaced font, so I downloaded a TTF and wanted 
to render it on a bitmap. In C++, I used stb_truetype, so I went on and did 
    
    
    $ nimble install stb_truetype
    
    Run

expecting it to give me recognizable functionality.

But all the functions I wanted to use, are not yet implemented. The developer 
says so himself: <https://github.com/guzba/stb_truetype> -> These bindings are 
not complete. Contributions are welcome!

Luckily, I saw that there is a fork. This fork has the functionality I want to 
use, but that developer gives the same message. But this library is not on the 
official nimble list, so can I trust it? (in this case, I am quite certain that 
I can, but that's not the point) I got it to work with this library, but it has 
some weird quirks. For example: the getCodepointBitmapBox proc returns a 
cstring, while the original C code of that function does not return anything. 
If I inspect this string, it is always empty on my set of calls. I don't know 
why it returns the cstring and what it should contain in what case. No problem, 
I just add discard before the call and ignore it.

Why was this code base forked anyway? Why were these added functionalities not 
contributed to the official package?

But... more and more, this feels like something dirty: I have to use an 
unofficial nimble package, which is incomplete and has quirky code. I could go 
and write my own implementation (I need to learn this first, but definitely 
want to - more and more), but this should not be the way, right?

I assume what I am describing is happening to lots of packages, official or not.

So how do you guys handle this? 

Reply via email to