Why do extensions use guids instead of namespaces?

How come extensions are referenced by GUIDs and not by their namespace, like nearly all other eco systems?

It makes all the extension configuration extremely cryptic


I completely agree with this, and pointed it out myself a long time ago. The reason GUIDs were used was to ensure an extension would be globally unique across multiple extension providers. A much better approach would have been to use reverse domain notation like com.lucee.extension.PDF or something. At one time I tested and it seemed that Lucee would install an extension regardless of what the string was via an extension provider, but I was just telling someone this last week and they tried installing an extension with a non-guid ID via the upload button in the admin and it yelled at them about not being a GUID so I’m not sure to what extent you can get away with it.

I think all ID should be replaced with human readable slugs, and a translation shim placed in Lucee that maps the names across. But then again, that’s what I suggested years ago…


Where can I vote for this :wink: ?

There’s not a ticket I’m aware of. I’ve just dropped it in pretty much every conversation I’ve ever had with Micha about the topic. It never stuck though. I would support the entering of a ticket for this. It’s not the least of things I wish were different about extension management however.

vote away! https://luceeserver.atlassian.net/browse/LDEV-2472

1 Like

@Zac_Spitzer I fixed your URL to the correct ticket. Unless you were trying to get votes on your QofQ bug on the sly :slight_smile:


To answer the question of “why do extensions use GUIDs”, in this thread Micha showed that he was just using an existing bundle format (click the link to see the embedded manifest sample):

I always pin a specific version of an extension when specifying it via the LUCEE_EXTENSIONS environment variable and for that reason I always need to look it up on the extensions page.

From there I think main thing that would make it “easier” to configure would be to have a button to copy the full string for the extension (e.g. 16FF9B13-C595-4FA7-B87DED467B7E61A0;name=Memcached;version=;


Whether or not it’s a package path / namespace vs a GUID I don’t particular mind. Of course human readable words are a bit nicer, but I don’t think I’d be committing either of them to memory :slight_smile:

The main reason I’d prefer human friendly naming is you know immediately what it means.

I agree, a string that contains both a GUID and a human readable name is, at best, a workaround for a system that should have been design with humans in mind in the first place. Just drop the GUID entirely! It’s not a matter of committing things to memory nearly as much as having config files that don’t make me want to gouge my eyes out :).

Regarding, the suggested “copy to clipboard” bit, I think that’s a good idea and here is roughly where that code is. Maybe someone can send a pull request.

For the most part, you can clone this repo, start it in CommandBox and hit that page in the browser for testing.

1 Like