  First of all, we recall the well known notion of semidirect product both for
classical algebraic structures (like groups and rings) and for more recent ones
(digroups, left skew braces, heaps, trusses). Then we analyse the concept of
semidirect product for an arbitrary algebra $A$ in a variety $\cal{V}$ of
type~$\cal{F}$. An inner semidirect-product decomposition $A=B \ltimes\omega$
of $A$ consists of a subalgebra $B$ of $A$ and a congruence $\omega$ on $A$
such that $B$ is a set of representatives of the congruence classes of $A$
modulo $\omega$. An outer semidirect product is the restriction to $B$ of a
functor from a suitable category $\cal{C}_B$ containing $B$, called the
enveloping category of $B$, to the category Set$_*$ of pointed sets.
