Well technically simple to do, that misses the point.
That is neither ubiquitous, nor (as a result), trivial for a newcomer to understand.
If I clone a repo and see a makefile, I know what to do.
If I clone a repo and see './hack.sh' or './runme' or './do' or whatever you chose to call it, I have no clue whether I should invoke it or not.
There are few alternatives to make that have the same level of mindshare, and thus the same ease of use for a given newcomer to grok what to do.
Most alternatives are language specific (e.g. "rake" in rails did a good job of building programmer expectations that you use 'rake ...' to do various common tasks).
That is neither ubiquitous, nor (as a result), trivial for a newcomer to understand.
If I clone a repo and see a makefile, I know what to do.
If I clone a repo and see './hack.sh' or './runme' or './do' or whatever you chose to call it, I have no clue whether I should invoke it or not.
There are few alternatives to make that have the same level of mindshare, and thus the same ease of use for a given newcomer to grok what to do.
Most alternatives are language specific (e.g. "rake" in rails did a good job of building programmer expectations that you use 'rake ...' to do various common tasks).