Shelve and Shelveset: What do you think?

In my most recent blog article, Selecting Great UI Text, I suggest that one of the most important things you can do to ensure that you’ve chosen a great UI text string is,

“5. Solicit Feedback
Ask your teammates. Ask your customers. The more eyeballs, the better.”

Now, I’m going to put my money where my mouth is and ask you–customers, competitors, friends, partners, and co-conspirators–for your thoughts on two important pieces of UI text that will appear in the as-yet unreleased Microsoft Visual Studio Team Foundation: Shelve and Shelveset. My notes on Shelve follow.  Please feel free to weigh in on these terms in the comments attending this post.

In Visual Studio Team Foundation, the Shelve command sets aside a set of pending changes in the local workspace, as well as any associated work items and comments, on the server. You can use Shelve to share your changes with another developer when job assignments change or to temporarily set aside your in-progress changes to a set of files or folders in order to work on hotfix or other workspace-altering project.  Shelve is a sanity-saver.

Shelve Pros

  • visually descriptive, which is important in the source/version control domain

  • one word (unlike check in)

  • easy to conjugate: shelved, shelving, shelves

  • easy to negate: unshelve

  • not overloaded (like ‘object’, for instance)

  • consistent with the source control Library metaphor ala check out and check in

Shelve Cons

  • Localization is problematic. “To shelve” in many languages connotes ‘stepping down’ rather than “to place on a shelf”. Think, continental shelves.

  • Hard to nominalize (make into a noun).

    • Do you think users will refer to the thing they create during a shelve operation as “a shelf”? For example, “Mike, check out the Beta 1 shelf and fix that sorting bug.”

    • What do we call it? A shelved changeset? A shelved set of revisions? A shelveset?

Potential Alternatives

  • Reserve or Preserve

    • Pros: one word, easy to conjugate, both preserve and reserve have good environmental connotations and a preserve is a sweet sticky substance that sits on a shelf until you need it .

    • Cons: not as visually descriptive as shelve, overloaded in everyday speech, overloaded technically (could be confused with ‘reserved checkout’, which is a lock), cannot be negated in English, and it’s too tempting to replace Reserve, which is goodness, with ‘Place in Reserve’, which is not.

    • Note: Clearcase has a Reserve keyword. Not sure about other source control providers.

  • Store

    • Pros: one word, easily negated (restore), easy to conjugate, neutral connotations (grain store, shop in stores), easy to localize

    • Cons: overloaded in all contexts, not as visually descriptive as shelve,

  • Pend

    • Pros: good sense of time, one word, easy to negate and conjugate, not overloaded, builds on Pending Checkin, fairly easy to localize, connotes suspension (sus-pend) which is an interesting way to think about

    • Cons: not exactly self-documenting (lowest common denominator might not get it), hard to nominalize, in the Pending Checkin window, the similarity between Pending and Pend could lead a novice user to believe that they should Pend rather than Check In, not as visually descriptive as shelve.

  • Note: could be combined with Check In as “Pend Check-in” (yes, I’m still playing chicken with the checkin decision. I’ll be in the check-out line momentarily. Check-in vs Checkin is a tough one.)

Bad alternatives I considered: archive, sideline, set aside, pause, abey, suspend, escrow


Comments (62)

  1. Anonymous Aussie says:

    Library Desk metaphor… when you have books or papers that you put aside to look at later, you Pile them, and Unpile them. Lends itself to multiplicity, you can have multiple Piles waiting for you to Unpile them.




    These are very visual, activity-oriented words.

  2. I like "shelve" best. Good name for a cool feature :).

  3. Anonymous says:

    Snap? Snapshot? Clip? Draft? File? Store? Deposit? Check-in (private)?

    You don’t elaborate on "Shelveset", but I don’t like whatever it is already…

  4. Peter Coleman says:


  5. Gavin Greig says:

    These might be way too colloquial, but have you considered "mothball" and "back boiler"? I think "back boiler" is an immediate candidate for addition to your "Bad alternatives" list, but I wonder whether "mothball" might have more potential?

    I think it conjugates (mothballed, mothballing, mothballs) and could nominalise (a mothball), although I don’t think the way to negate it is immediately obvious. It’s one word, and it’s not overloaded. It’s used in a similar sense in other industries for putting something (often machinery) aside in safe storage for possible future use.

    I find it more immediately evocative and understandable than "shelve", but it could be obscure and it might not localise well.

  6. Chris_S says:

    I like ‘Park’. Also what about ‘Stash’?

  7. Greg Hurlman says:

    I’m also a fan of ‘Pile’… goodness knows that I’ve already got several on my desk that are, to say the least, pending.

  8. Mark Mullin says:

    What happens if I ‘shelve’ something, and then pick it up again in 6 months, after a lot of mainline revisions have happened in the source tree ?

    I like the idea of not either discarding work (undoing checkouts) or flying solo (copy the source somewhere and hope for the best later) but I think for this to work it has to recognize it’s part of a branch sequence.

    Hence I’d propose (with some tongue in cheek, my main concern is simply how this integrates with branching and changes in the baseline source while the software is collecting dust and bitrot)

    prune – undo all my local workspace changes and make me some managed ‘package’ so I don’t just loose em

    graft – take the package generated by a previous prune operation and try and bring it back into the mainline – I like graft because you’re either going to graft a branch, even if that means cutting off the tree at the root and jamming the pruned package on it

    Anyway, I’d be curious as to how this mechanism would relate to reintegration with ongoing development – otherwise, it’s just a one way operation ‘package my changes and pull em out of my workspace’

  9. Shelve is good. Business folks use that term all the time to describe something that needs to be dealt with, but not right now – "let’s shelve this until Q3".

    I say roll with it.

  10. Steve Hiner says:

    Park and Stash are my favorites so far.

    If you were looking into the whole branching metaphore you could use Sprout or Plant though Plant might have a too-permanent conotation for this feature. Metaphorically I like Sprout since it conotates a small branch in the code. I’m not so sure that it negates nicely though. Unsprout? Desprout? The more I think about it the less I like it.

  11. Chris_S says:

    More on stash:

    Verb: "I am going to stash my files"

    Noun: "Let’s have a look at my stash"


    Either "Let me unstash my files" (hmm…?)

    or "Let me grab back my stash"

    or "Let me get back my stashed files"

  12. David Laribee says:

    In keeping with the funiture metaphor, we use the terms "Table" and "Tabled" (the parliamentary definition).

  13. Chris says:

    Steve: Park does have a nice ring to it – though it has a similar set of problems as shelve. It needs a good noun for the set of ‘parked items’, and it may be prone to incorrect context when it comes to international use (e.g. parking space, Central Park).

    Stash being the noun and the verb is both nice and problematic – if I want to see the sets of stashed items, would I run "h stash /show" or something, instead of a separate command like "h shelvesets" as we’re currently planning?

    David: Tabled does have a strong connotation with what we’re doing, but we’d still need to solve the noun problem – what do we call a set of tabled items? A ‘table’ like a ‘shelf’ implies what it’s stored on rather than the items themselves. I worry that any new term involving table might get confused for database semantics.

    Table and shelve are still great choices for the verb, IMHO.

  14. Hassan says:

    I suggest Contain

  15. Chris_S says:

    What about ‘stow’ as the verb? Would the noun be ‘store’ or ‘hold’ or ‘cargo’?

  16. San Antonio Hotels,Venice Hotels,Las Vegas Hotels,Istanbul Hotels,Columbus Hotels,Melbourne Hotels,Washington Hotels,Brussels Hotels,Sao Paulo Hotels,Portland Hotels,Manchester Hotels,Nice Hotels,Budapest Hotels,Columbia Hotels,Jacksonville Hotels,Cologne Hotels,Chicago Hotels,Kissimmee Hotels,Tucson Hotels

  17. I found your page from google but i like it so much

  18. buy xanax says:

    i like your website very much but please do get us more information about it

  19. Persone los pioneros non rabata. Great…

  20. lesbian rape says:

    Best of all people w can talk…