[design decision] user awareness: 自动安装还是不自动安装?
觉得有必要记录一下这类问题,都打个[design decision]的标签吧。
目前项目中遇到这么个问题:
我们build system的用户,需要为他的每个项目提供一个文件,用来描述该项目产生的libary,以及依赖的其他项目。 这个文件很重要,需要在install的时候与最终产生的库文件放在一起,以便被其他项目使用时访问,从而把整个依赖链串起来。 已知该文件总是放在一个固定的位置,之后gmake install时会被安装到一个固定的位置。
好,问题来了,既然文件在哪里,要被安装到哪里都是已知的,是不是build system可以自动把这步包含进来,无须用户做任何事,从而提供了方便?
我一开始的想法是这样的: 这的确非常天经地义,何乐而不为呢?
但和同事们讨论之后,觉得从另外一个角度来考虑:user awareness也是非常靠谱的:
这个文件是用户提供的,如果build system在用户不知情的情况下,自动(magically)帮用户做了这个事,可能对用户来说是个supprise(least supprise?),会造成一定的混淆,所以这不一定是个好事情, 有用户显示指定这个操作为好。 相反来讲,如果某个文件是build system产生的, 比如最终的library,或者中间产生的库依赖信息文件,那么build system自动安装是比较合理的。
当然,对于这个具体的问题,是否自动我并没有强烈的偏向,但从user awareness来考虑问题是个不错的角度。