[Scons-dev] First Pillar of Future SCons Tools

anatoly techtonik techtonik at gmail.com
Fri Sep 26 09:01:12 EDT 2014


Hi,

While patching Ansible stat module, the idea stormed me.

    The information that SCons collects about Tool should be passed
declarative and static.

There are some more sparks that feature-creep over it.

    Tool info should be declarative for better user experience while
debugging and writing.
    Tool info should be static data.
    SCons itself decides how to combine tools based on static data
that tool provides.

Right now Tools `monkeypatch` SCons Environment dynamically, that's
why it is SO HARD to understand what tool really provides. This in
turn makes it REALLY HARD to study all tools to see common patterns.
This in turn makes it ALMOST IMPOSSIBLE to squeeze all tools into mind
to derive common abstract model for them without loosing possible (and
crucial) details. And without abstract model we can not effectively
communicate practical models and exchange ideas. The basic model for a
tool should be static - what tool provides, if it exists or not.

    If Tool needs to hack SCons deeper, it should be done in a separate method.
    Monkeypatching of anything in SCons should be totally visible and
accessible if needed.
    SCons level of application objects should be separated on the next
level over Python objects.

Better stop now. Hopefully at least the first part is clear. In
summary - tool info should be readable as YAML.
-- 
anatoly t.


More information about the Scons-dev mailing list