Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [buckminster-dev] Naming of components that are not projects

ken1 wrote:

Your suggestion to use a .buckminster directory sounds good. I think we will use <wsroot>/.buckminster/externalComponents. Some more answers inline.

Either I'm missing something completely or this reasoning is not sound to my ears...?

There is nothing prohibiting a user creating a project called '.buckminster', thus creating confusion. I'd prefer regarding the root of the ws as a strictly Eclipse managed entity - i.e. we shouldn't be doing *anything* there unless it's through regular Eclipse mechanisms.
Well, since it apparently is common practice for other plugins to use a .<something> as special, I would consider it pretty save to follow that crowd. We can document that naming a project '.buckminster' would be an extremely bad idea. Just as naming it '.metadata' would.

By similar reasoning, the directory we speak of here is something buckminster managed & opaque to users, right (perhaps this is where I'm missing it - should this dir be generally available for 'user perusal & mucking with'?)?

See below.

And, since Eclipse already has a way to give plugins their own managed space inside the workspace (i.e. the .metadata/.plugins/org.eclipse.buckminster.core/... part), why shouldn't it go in there?
Because it's certanly *not* metadata.

If the ext components dir should, in fact, be generally available to the user, I think it would be somewhat better to keep it outside of the workspace altogether if at all possible.

The sole reason why I want this in the workspace is that we use the workspace as 'scope' for the materialization. If we don't, then we must manage ext components globally on the machine. That implies that we also must manage the meta-data that describes the materialization and binding of those components globally. We then run into difficulties with concurrent versions or concurrent incarnations (pre-built, source, etc) in use by different workspaces.

Theoretically, we could get the desired effect by actually creating a '.buckminster' project the regular/programmatic way and we would then of course be free to muck around inside such a project just like anyone else.

I think that would be a bad idea. 'mocking around' means you destroy stuff that Buckminster manages for you. I think it would be a mistake to encourage that for the same reason that the .metadata is hidden.

But if possible I think it'd be better to store such a 'cache' elsewhere. Defaults to ${user.home}/.buckminster/<something> but configurable of course. The trick then would I guess be to correctly share some components between workspaces but make sure others are private to certain workspaces (hooking them up isn't that hard, but there could later be a garbage collection problem...).

?
True, but such a cache would need to be pretty advanced. Not only must it be able to maintain different versions of the same component, it must also maintain different incarnations of such a version (pre-compiled, etc.). Question is if that cache would reside on your local machine, on a server in your LAN, or both (as a federated cache). In any case, I think that's beyond what we do for M1 and probably for M2 as well. The simple mechanism (workspace scoped cache) works out of the box today.

- thomas




Back to the top