
The Maghreb’s Modern Islamists Moha Ennaji 2012-02-16 FEZ – Just over a year ago , the Arab Spring sparked dramatic change throughout the Arab world . Popular movements have brought a range of avowedly Islamist political parties to power , replacing the largely secular former regimes . What that will mean for these countries , and for the region , is one of today’s central geopolitical questions . In North Africa , two Islamist parties have come fully to power via democratic elections : al-Nahda ( Renaissance ) in Tunisia , where the Arab Spring began , and the Justice and Development Party ( PJD ) in Morocco , both of which now lead new coalition governments . Whereas a popular revolution produced regime change in Tunisia , Morocco underwent a peaceful transformation that left the monarchy in place . Last July , Moroccans voted overwhelmingly to approve a new constitution that shifts executive power from the king to the prime minister , who will now be fully responsible for the cabinet , the civil service , and the implementation of government policies . The king retains some prerogatives , such as the authority to select the prime minister ( from the parliament’s majority party ) and the head of the army . Furthermore , like heads of state in other parliamentary systems , he has the right to appoint the government ministers and ambassadors , dissolve the parliament , and dismiss the cabinet . While the PJD’s success was based on institution-building within a constitutional monarchy , al-Nahda has revolutionized the Tunisian system . But both parties won after running on a moderate platform of constitutionalism , separation of powers , civil liberties , and women’s rights . This new political reality in the Maghreb will bring Europe – particularly France , the region’s old colonial master – face-to-face with Islamist governments determined to promote a new type of relationship . But these governments have much work to do at home first . Currently , the Maghreb countries suffer from soaring unemployment , poverty , and high prices for basic commodities . In response , both al-Nahda and the PJD are emphasizing job creation , free trade , foreign investment , and a crackdown on the corruption that has plagued their countries ’ economies . These governments ’ first major test of economic stewardship will be how they treat the tourism industry . Although Western tourism is a critically important source of employment and foreign currency in both countries , some Muslims have criticized the industry for promoting alcohol and other relaxed social conventions that threaten Islamic values . So far , both al-Nahda and the PJD have taken a pragmatic stance . They recognize that , while their supporters may be devout Muslims , they also need to earn a living ; empty hotels and beaches would be economically disastrous . Thus , tourism professionals in both countries have received strong government assurances that business will continue as usual . Some European analysts predict that , over the longer term , greater stability will follow the political changes in the Maghreb , with perhaps more than a million unemployed Moroccan and Tunisian immigrants returning home if their countries ’ economies improve . That remains very much an open question . Islamist parties will now have enormous influence on economic policy , after decades of official separation of mosque and state . Islamic banking , for example , may soon be introduced , though some local and foreign investors argue that sharia regulations could drive away much-needed foreign investment . There are also concerns about inexperienced Islamist officials ’ ability to run finance ministries . But the region’s Islamist parties appear to be conscious of these risks , and determined to mitigate them . They know that they need economic growth to curb unemployment and pay for social services , so they are working to bolster the private sector . In many cases , they are even advocating the kind of free-market policies that their secular predecessors favored . Those policies should include trade liberalization . Until now , less than 2 % of the Maghreb countries ’ foreign trade has remained within the region . If the region’s new leaders can integrate their economies , a market of more than 75 million consumers would attract more foreign investment and trade with the rest of the world . Before an economically unified Maghreb can be realized , however , inter-state conflicts such as the Algerian-Moroccan dispute over the “ Western ” Sahara must be resolved . Otherwise , it will be difficult even to conceive a common future – without which the economic grievances that fueled the Maghreb’s revolutions are likely to continue . Much like the Muslim Brotherhood in Egypt , al-Nahda and the PJD will have to marginalize Islamic extremists in their movements , such as the Salafis , and adopt a pragmatic approach . To succeed economically , they will need Western support – and the West will not be eager to fund radical Islamist governments . As they negotiate the realities of modern economic life , the Maghreb’s Islamist ruling parties are likely to lose some supporters . But , unless they are willing to break with the past , they will not succeed in the present . 