Many projects started with simple code and increased the complexity overs the years up to the point that less and less peoples are willing to learn it. A key to attract new developers is to split the project in smaller parts and let others take the maintenance of those smaller parts. Don't hesitate to use standard libraries whenever possible and don't hesitate to rewrite code to make it easier to read. Up to date documentation and tested tutorial on how to start coding for example an extension might be good advantage.
Close relations with distributions can be a source of new developers instead of a layer that isolate the project from the users. It's an advantage to directly maintain the project in a few leading distribution.
Probably a very important factor for attracting new contributors is how there idea are welcomed at there first post and how there are credited for there effort.