So here’s a puzzler:

Quite often I’ll find out that a technique I’ve been using for years, one I had originally developed because I needed a solution to some problem, has subsequently been independently rediscovered and published by someone else. And now this technique has an official name.

Fair enough. The people publishing the technique are doing a service to the community that I never did: Going through the trouble of officially explaining how the technique works, and perhaps doing user studies to empirically test the technique. And it’s certainly not as if they stole it. Techniques get independently reinvented all the time.

But here’s the puzzling part: Do I need to readjust my thinking, and rename the technique within my own code, to reflect that fact that it now has an official name? Do I need to do this even if I was using the technique for years before someone else independently reinvented it?

I do think that if I publish a paper that relies on the technique, then I should use the newer term of art, and reference the other inventor’s publication. After all, that’s how the edifice of peer reviewed science works.

But what about in my own code? I can think of at least one good argument on both sides:

On one side, maybe I should keep it as is, because it would be untruthful to rename something I had already developed long before, just to reflect events that took place only later. That would be rewriting history.

On the other side, maybe I should change it out of courtesy to other people who will build on my code later, since now there is a “standard” way to refer to this technique.

I’m not sure there is an easy answer to this one.

2 thoughts on “Attribution”

  1. Do you expect that readers of your code will be looking to it as an historical artifact of work that was done or as a foundation for new work?

    If it’s the former than I would keep the name and add a comment where it first appears making reference to the new “official” term, if it’s the latter, I’d change the name and add a comment making reference to the original term.

    I tend to be pretty pragmatic about these things. As I see it, the code’s principle value is in what it does, and how someone might use it, so I’d probably go with whatever terminology is going to be most familiar to the reader, in order to minimize the work they need to do in order to understand the technique and how it’s used.

  2. Athomas, thanks for the thoughtful comment. I agree with your analysis. Yet I think that code, like all human creation, has another principal value — the value of illuminating how ideas develop over time. Just as architecture serves two different functions: to help us to shelter ourselves and to illuminate how we see ourselves and our culture.

    I’m glad you’re reading the blog. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *