Step 1: Picture the balls-and-dividers model directly.
Instead of using the algebraic substitution, we can picture the total non-negative case using a row of $20$ identical balls (representing the total sum) plus $3$ dividers, which split the row into $4$ groups, representing $n_1, n_2, n_3, n_4$.
In total we are arranging $20$ balls and $3$ dividers in a row, that is $23$ objects, and we just need to choose which $3$ of the $23$ positions are dividers. This directly gives $\binom{23}{3}$ total arrangements, matching the total sample space.
Step 2: Force each group to be non-empty using the gaps method.
For all four parts to be positive (no group empty), think of the $20$ balls placed in a row first. Between consecutive balls there are $19$ internal gaps (a gap is a place strictly between two balls, not at the two ends).
To split the $20$ balls into $4$ non-empty positive groups, we must place the $3$ dividers into $3$ of these $19$ internal gaps (never at the very ends, and never two dividers in the exact same gap, otherwise some group would be empty).
This gives $\binom{19}{3}$ ways to choose which $3$ of the $19$ gaps get a divider, which is exactly the count of solutions where every $n_i \geq 1$.
Step 3: Form the probability.
\[ P(\text{all positive}) = \frac{\text{favourable arrangements}}{\text{total arrangements}} = \frac{\binom{19}{3}}{\binom{23}{3}} \]
Step 4: Cross check with the substitution method.
This gap-counting picture gives the same $\binom{19}{3}$ and $\binom{23}{3}$ that the standard $m_i = n_i - 1$ substitution gives, which confirms the answer through a different, purely visual argument.
\[ \boxed{\dfrac{\binom{19}{3}}{\binom{23}{3}}} \]