In Python, there are several tools to perform actions on the local system. As
an example, the subprocess module makes it possible to run arbitrary shell
commands. So, let’s suppose you wrote a script that echoes “Hello world!” using
the shell:

importsubprocesssubprocess.call(['echo',u'Hello world!'])

Then what if you want to run commands on a remote machine? You can write a
fabfile:

There are so many commands and so many systems... it would be impossible to
support them all. And even if it was, it would be made of tons of code and
dependencies. That’s the first reason why XAL is a framework: