Re: [extremeprogramming] About placing configuration defaults
"Dave Nicolette" <[email protected]> Fri, 22 Nov 2019 06:53:40 +0100
| Newsgroups | gmane.comp.programming.extreme-programming |
|---|---|
| Message-ID | <CANCM4bLOdWn3_mWLFXEWN0udLa6yG3geOH1_u1S7iUjSJK11tA@mail.gmail.com> |
Great ideas here. Thanks very much for sharing! Dave On 11/21/19, George Paci <[email protected]> wrote: > On 11/20/19 6:33 AM, Luiz Esmiralha wrote: >> Great point. Configuration, if complex enough, can become a system in >> itself. > > Yes. Glyph Lefkowitz (one of the main Twisted developers) has a good > rant about configuration formats that become configuration languages > that become Turing-complete and thereby less useful for configuration. > I can't find it now, but here's a related thing he wrote: > > > The formats of configuration files have shown two visible trends over > the years. On the one hand, more and more > > > programmability has been added, until sometimes they become a new > language. The extreme end of this trend is > > > using a regular programming language, such as Python, as the > configuration language. On the other hand, some > > > configuration files became more and more machine editable, until they > become a miniature database formates. > > > The extreme end of that trend is using a generic database tool. > > > > Both trends stem from the same rationale -- the need to use a > powerful general purpose tool instead of hacking > > > domain specific languages. Domain specific languages are usually > ad-hoc and not well designed, having neither > > > the power of general purpose languages nor the predictable machine > editable format of generic databases. > > (from https://legacy.python.org/workshops/2002-02/papers/09/index.htm) > > A couple more thoughts on configuration: > > 1) An app being able to *write out* its entire configuration (including > defaults) is very useful; among other things, it lets you see the type > and format of the defaulted slots. For example: `myapp --dump-config` > would spit out a valid config file, containing an entry for every single > configurable option. > > 2) Having the app indicate *where* it got a particular piece of > configuration info from will get you a fruit basket from Ops. > > 3) Having the app indicate which values in (1) are the default values is > also nice, if you're not already doing (2). > > 4) Figure out what configuration changes need the app to restart, and > which ones can be done on-the-fly. Really think through the on-the-fly > ones to be sure: e.g., if you change a special directory while it's > running, will it copy the content over from the old directory? If enough > config changes require a restart, you may want to make all of them > require a restart (to keep the logic simple). > > 5) One good practice is for apps to reload their config (at least the > on-the-fly changeable stuff) whenever they receive SIGHUP (because that > signal is otherwise meaningless to a container). > > 6) If it's a value that can change from environment to environment (e.g. > QA to PreProd), it belongs in configuration, not in code. You shouldn't > have to recompile just because you're moving to a different environment > (or host). > > Hope this is helpful. > > —George > > We have nothing to fear but fear itself and apparently also clowns. > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#160294): https://groups.io/g/extremeprogramming/message/160294 Mute This Topic: https://groups.io/mt/60557252/2417047 Group Owner: [email protected] Unsubscribe: https://groups.io/g/extremeprogramming/leave/4902963/619838065/xyzzy [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-