A Drupal számos modullal rendelkezik alapfunkcionalitásainak megvalósítására. Ezen kívül rendelkezésünkre áll a közösség által fejlesztett kiegészítők garmadája, melyekkel rendkívül változatos formában egészíthetjük ki webhelyünket. Előfordulhat ugyanakkor, hogy nem áll rendelkezésre olyan modul, amire nekünk szükségünk van, vagy a meglévők nem pontosan azt nyújták, és beállításokkal sem érhetjük el, amit szerertnénk. Ezen esetekben logikus lépés lehet, hogy saját modult fejlesztünk, vagy a meglévő modulokat módosítjuk saját igényünk szerint.
Annak eldöntése, hogy újabb modult érdemes fejleszteni, vagy egy meglévőt módosítani, nem mindig egyszerű kérdés. Az alapmotor vagy valamely kiegészítő modul módosításával olyan feladatot veszünk a nyakunkba, mely csak később jelentkezik. Amennyiben valamikor frissíteni szeretnénk a rendszer működtető kódokat, magunknak kell figyelnünk a változások fenntartására, a felülírások elkerülésére. Ebben nagyon sokat segíthet egy változáskövető rendszer (CVS, Subversion), ezeket azonban nem használják szélesebb körben. Ezért ha jelentősen eltérő funkcionalitásra van szükségünk, mint amit egy meglévő modul nyújt, akkor célszerű lehet annak lemásolása, és más néven történő továbbfejlesztése saját céljainkra.
Amennyiben olyan kiterjesztési ötletünk, javaslatunk van egy modulhoz, mely széles körben is érdeklődésre tarthat számot, akkor ezt célszerű a modul fejlesztőjének javasolni. Az alapmodulok, és a kiegészítők is rendelkeznek hibajelentő és javaslat beküldő felülettel, ahol ötleteinket megadhatjuk. Általában jó gyakorlat, és a teljes rendszer fejlődését előbbreviszi, ha saját általános célú fejlesztéseinket a nyilvánosság elé tárjuk, és erre a Drupal fejlesztői szervere lehetőséget is ad. Ezesetben természetesen kicsit körültekintőbben kell a fejlesztett modult elkészítenünk, de ez csak a minőségi kialakítást segíti, ezért kifejezetten hasznos is lehet.