The idea was to have it even configurable per role what fields to show or not,
Sounds nice.
should it be configurable per project or not
(and seeing everything tends to be configurable
per project more and more, it probably will be)
Fair enough.
Personally, I would configure the layout as a whole, not per role and definitely not per project. I think it results in too much confusion if one user sees one thing and another user sees something else. I think that if "you" need to hide some fields from some users, what you have is probably a problem with the organisations workflow more than it is a problem in the Redmine UI. But that's just me :-).
[...] deactivate other parts of the UI that would need knowledge about those fields
Agree, needs to be possible somehow..
All that should also be taken with a grain of performance salt,
if you end up having 30 "UI"-queries to the DB for 3 queries to
fetch one issue and related info, that won't fly either.
Yes, I see your point.
Google Code has an interesting solution to this problem, where all the fields that are not related to other issues (think foreign keys or similar) are stored as in the same 'labels' structure, even when they have nothing in common.
Such as
Severity-Criticial
Target-1.7
Affects-Everyone
The first part is the pseudo-field-name, and the second part is the value. That way, you can query for a whole bunch of field values in one big swoop of a query.
Also possible to query for which fields are actually used in a project/installation, if you make it easy to query for just the first part (in example above, Severity, Target and Affects). One query gives all the possible search criteria, for example.
[Technically, database's have substring indexes that could be useful, or triggers that update a cache table, or .. there might be more techniques]
(Also fixes a default value problem quite nicely, because you don't have to insert odd NULLs in any field.)
I don't like Google Code's UI very much, where you can manually enter anything into any label. But I think the storage structure where non-referential fields are all stored as labels is very nice.
Anyway, there's not been much discussion going on around this,
but it's probably not something that will happen "overnight".
Okay.
I am upgrading a specific redmine install right now, and I would like to remove unwanted stuff again, what do you think is the best approach?
(My best idea right now is I could restart with removing database columns and patching the UI, but it seems silly.)