pbstream’s name
I hate naming things. I’m starting to realize that pbstream is outgrowing its name. That’s the one thing I always thought was brilliant about the iPod’s name. When the iPod started playing video it was no problem — it’s a pod! Why shouldn’t a pod play video? There’s no way to outgrow the name “iPod.” Brilliant.
I had no such luck with pbstream. The tagline is currently:
pbstream - a stream-oriented implementation of protocol buffers.
It’s true that offering streaming semantics is one distinguishing feature of my implementation, but the way it’s growing it’s no longer really “stream-oriented.” It will offer both stream-oriented and structure-oriented semantics. Both will be equally supported/encouraged — it will be a matter of what best suits your needs.
If anything, the number one distinguishing feature of my implementation is that it is minimal. It gives you a set of tools to use whatever paradigm is the right trade-off for you. It gives you building blocks to assemble as you see fit. There are never “riders” — things like memory management that you have to take along with the parts you really want.
So what’s in a name? Desired characteristics:
- Unique, reasonably Googleable.
- Communicates that it is a protobuf implementation, and if possible communicates the philosophy described above.
- The name (or a reasonable abbreviation thereof) makes for a nice prefix that can be appended to all my identifiers. Right now it’s
pbstream_thisandpbstream_that.
Originally I just called it “pb” but that was a tad bit too generic. I slightly like “pblab” (communicates that it gives you building blocks for forging your own strategies), but I dislike the connotation that it is unfinished, unpolished, not production quality.
Perhaps I could give it a name, but keep using “pb_” in my identifiers. It could also help me organize the names of the different parts. I could use names like:
pb_stream_parser_*for the stream parser.pb_struct_*for the code that defines an in-memory structure.
I kind of like that. But I still need a name for the package itself that is better than “pb”. Ideas?
Some suggestions:
pblib – taken, alas
llpb – low-level protobuf lib
buflib
pbufstuff
bufferbase
minpb
pbj (j for josh or jelly)
Buffer the Streampire Killer
My pic would be upb (u meaning micro). It’s short to be used as identifiers prefix, it’s general, it denotes is a PB implementation and it denotes it is minimal.
The only drawback is googleability, there are 365000 hits to upb, but even not being perfect, is not that bad either =)
BTW, your comment preview is broken, it shows the single and double quotes escaped:
‘ -> \’
” -> \”
Ooh, I think we may have a winner. I really like “upb”!
Thanks everyone for your suggestions.
Yes, it’s annoying that preview doesn’t work correctly on this blog. Sorry about that. I think it’s a bug in the style I’m using, but I’ve never taken the time to really dive in and figure out what’s wrong.
Josh! How could you ignore Phil’s amazing suggestion of “Buffer the Streampire Killer”?? Inconceivable.
Whenever I see prefixes like “pbstream_this and pbstream_that” in C++ code, I wounder why the author didn’t used namespaces for this purpose??
Jack: C doesn’t have namespaces, and pbstream/upb is written in pure C (not C++).