
France and Germany Must Act in Iraq Next week , President Bush , President Chirac , and Chancellor Schroeder will meet on the cliffs of Normandy to mark the 60th anniversary of the D-Day invasions that led to the liberation of Europe . They should also seize the moment to liberate themselves from the bitterness that has divided the Atlantic Alliance over the Iraq War , argue Pierre Lellouche and Christoph Bertram . When the United States launched the war against Saddam Hussein 's Iraq , France and Germany rightly warned that the invasion could well end up worsening instability in the Middle East and increase the threat of radical Islamic terror . But now that America and its coalition have proven themselves to be incapable of bringing stability to Iraq on their own , the French and German governments can no longer rest and smugly say , " I told you so , " as the situation deteriorates even further . Both governments must now become seriously and fully engaged in what must now be a united Western effort . Of course , it would be best for everyone - France and Germany included - if the current US-led coalition were to succeed and Iraq could turn into a pillar of Middle East stability and modernization . Yet , however desirable this outcome , it is no longer likely ( if it ever was ) . Internal stability and economic recovery continue to be elusive , with the specter of civil war hovering ever closer . A divided Iraq at war with itself would be a disaster for the region , for America 's international credibility and authority , and for transatlantic relations . In an already fragile region , a major Arab country like Iraq would most likely prompt interventions by its nervous neighbors - of which there is no shortage - if it turns into a failed state . Instead of the rule of law , there would be the law of the mafia , of terrorist groups , and of tribal militias . Many of them are already in place . Instead of moving toward modernization and development , the region would be confirmed as a cockpit for conflict , a threat to itself and to the world beyond . Were the US forced to withdraw in failure , Islamic terrorist groups would claim a historic victory , promising more bloodshed for the West . Moreover , America might also once again retreat bitterly into isolationism , blaming her failure on the UN and on disloyal European allies . So the stakes are high in Iraq , for Europeans no less than for Americans . That is why it is time that even those who have been most skeptical about US policy in Iraq start to do something about it . Both Jacques Chirac and Gerhard Schroeder have repeatedly pronounced that what happens in Iraq is a strategic challenge to their countries . Yet their actions in response to this insight have been modest . The recent turmoil in Iraq has , on the contrary , strengthened those in both capitals who argue that there is now even less reason to get involved on the ground . At the very least , France and Germany are demanding that the Bush administration openly admit to its failure and the need for help . Yet not only is such a demand naïve , with the Bush team battling for re-election , it is not at all certain that most of America 's European allies would heed a US call for solidarity if one were issued . Confronting the threat that an unsettled Iraq poses to Europe and to the transatlantic relationship implies stopping these tactical games . The passing of authority in Iraq from the US-led coalition to an Iraqi government and the need for a much stronger UN role now offers the chance and imposes the need for everyone to stop posturing and get serious . For their part , EU governments should provide the UN - on whose involvement in Iraq they have long insisted - with the protective force it needs to prepare nation-wide elections in Iraq later in the year , and ask others to join . A UN staff protected by US marines simply cannot do that job . With the consent of both the US and Iraq 's new leadership , EU governments should also offer to organize an international conference uniting all those with a stake in Iraqi stability , including Iraq 's neighbors , to work out a strategy and commit resources in order to save Iraq from slipping into protracted turmoil . If Europe is to act , France and Germany must lead . Precisely because they opposed the war , they are now the only countries that can restore Europe 's unity of action in promoting stability . France professes to bearing a special responsibility for international order , but so does Germany ; only a few weeks ago , Chancellor Schroeder based his claim to a permanent German seat in the UN Security Council on Germany 's readiness to shoulder such responsibilities . Of all the crisis regions in the world today , instability in Iraq constitutes the greatest challenge to international order . But France and Germany can also block European responsibility for international order and for solidarity with a US facing possible defeat in Iraq . The decision is theirs . It is time for both to realize that the consequences of inaction will be no less severe for the region than for the Atlantic relationship . 