
The Return of Franco-German Leadership PARIS – Whoever wins September’s parliamentary election in Germany , the time has come once again for a major Franco-German initiative . Regardless of their economic conditions or their confidence – or lack of it – in each other , France and Germany are more than ever jointly responsible for the future , if not the very survival , of the European project . Are there alternatives to Franco-German leadership of the European Union ? Joining Great Britain with them in a Club of Three would be a good idea , but it is out of the question nowadays . Britain has largely excluded itself from any leadership role in Europe . Gordon Brown is barely surviving as prime minister , and the Conservatives , whose return to power in the next year is almost certain , are as provincially euro-skeptic as ever , if not more so . Europe simply cannot count on the British , at least for a while . The idea of a Club of Six , floated by Nicolas Sarkozy early in his presidency , was always abstract and is now untenable . Given Silvio Berlusconi’s sexcapades , the Italy that he leads cannot be taken seriously , while Spain is out of the running for an EU leadership role , owing to its dire economic conditions . As for Poland , although the bumbling Kaczynski “ twins ” have been removed from power , the country’s fixation on security in its immediate neighborhood is incompatible with true European leadership . Since the other 21 EU members never liked the idea of a Club of Six to begin with , it is just as well that such a vision has been buried , probably forever . So where but France and Germany can Europe turn for leadership ? A positive referendum result on the Lisbon Treaty in Ireland in October would be a necessary but insufficient condition to jump-start an institutional re-launch of the EU . Above all , the EU needs political will and direction . Only Germany and France , acting together , can convey to Europe’s citizens and to the world the sense that the EU is at long last waking up to today’s global realities . Of course , it is impossible to underestimate the combination of suspicion , tension , and exasperation that characterizes Franco-German relations lately . To a large extent , Germany has become a “ second France ” in Europe , at a time when France is more French than ever . And they are not only putting their respective nationalisms first . They disagree on fundamentals – most of all , about how to surmount the economic crisis . But the two giants of Europe can agree to disagree about the virtues of German-style budgetary rigor or French-style fiscal stimulus as long as they don’t insult each other , and , more importantly , as long as they compensate for their philosophical differences with a well publicized program of joint initiatives on key subjects . As long as each remains convinced that no alternative to cooperation exists within the EU , and that European cooperation remains a priority for both , it should not be overly difficult to restore their leadership . After all , France and Germany are closer to each other on many key topics than they have been for a long time . With the return of France to NATO’s integrated military structure , the two countries are on the same “ Atlantic ” wavelength for the first time since 1966. Despite both sides ’ deep reservations about the mission in Afghanistan , they are clearly in the same boat , even if French troops , being closer to British troops in terms of combat , are more vulnerable than the Germans . And both countries would probably subscribe to the following formulation : “ Turkey’s future is with Europe , but not necessarily in the European Union , at least in the foreseeable future . ” The fundamental question about how to deal with Russia remains a divisive issue , however . France and Germany have different sensitivities on the subject , which is both natural and inevitable , as these differences reflect both geography and history . Germany is not only much closer physically to Russia ; it is also much more dependent on Russia in terms of energy security . France must not delude itself : Germany is not about to convert to nuclear energy to reduce its reliance on Russian oil and gas . Yet Germany also must realize that Russia’s negative evolution has consequences that Germans cannot escape . A spectacular Franco-German security initiative following the election in Germany , accompanied by a joint message to the Kremlin , would also have the benefit of sending a message to the rest of the EU , particularly to its Václav Klauses : “ If you decide to paralyze the Union through stubborn ill will , you will only end up excluding yourselves , rather than dictating Europe’s fate . ” France and Germany cannot move Europe alone , but Europe without them cannot move at all . 