Home > upb > pbstream’s name

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_this and pbstream_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?

Categories: upb Tags:
  1. Brian Slesinsky
    May 3rd, 2009 at 19:43 | #1

    Some suggestions:

    pblib – taken, alas
    llpb – low-level protobuf lib
    buflib
    pbufstuff
    bufferbase

  2. Aaron Leiby
    May 3rd, 2009 at 22:53 | #2

    minpb
    pbj (j for josh or jelly)

  3. Phil
    May 4th, 2009 at 08:51 | #3

    Buffer the Streampire Killer

  4. Luca
    May 4th, 2009 at 10:09 | #4

    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 =)

  5. Luca
    May 4th, 2009 at 10:10 | #5

    BTW, your comment preview is broken, it shows the single and double quotes escaped:
    ‘ -> \’
    ” -> \”

  6. josh
    May 4th, 2009 at 12:09 | #6

    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.

  7. Catherine
    May 5th, 2009 at 00:17 | #7

    Josh! How could you ignore Phil’s amazing suggestion of “Buffer the Streampire Killer”?? Inconceivable.

  8. Jack
    May 6th, 2009 at 08:05 | #8

    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??

  9. josh
    May 6th, 2009 at 08:57 | #9

    Jack: C doesn’t have namespaces, and pbstream/upb is written in pure C (not C++).

  1. No trackbacks yet.