
The Transatlantic Index How should we assess the state of transatlantic relations nowadays ? With a nod to Wall Street , we can say that the Alliance is up , Europe is flat , and the United States is clearly down . The Alliance is “ up ” for one key reason : the warming of France’s relations with the US following Nicolas Sarkozy’s election as French president . For the first time since Charles de Gaulle established the Fifth Republic , France’s priority is no longer to live in opposition to the US . The signs of this shift are profound , even spectacular . From a toughening of France’s position on Iran to a real warming of relations with Israel , not to mention symbolic gestures like Sarkozy’s summer vacation in America , or Foreign Minister Bernard Kouchner’s arrival in Baghdad , this is a New France , one seriously considering a return to NATO’s integrated military structure . France’s shift is the result of both political calculus and deeply felt emotion . For Sarkozy , the French are not anti-Americans , but simply anti-Bush . In his willingness to break with the past – in particular with Jacques Chirac’s legacy – and in adding a global spin to his “ mandate for change , ” Sarkozy is paving the way for the post-Bush America that will soon be here . He knows that the “ return of France ” as an influential actor in Europe presupposes a France that is closer to America , which will automatically bring France closer to Germany and Great-Britain , not to mention Poland and Italy . Emotionally , too , “ Sarkozy the American , Sarkozy the doer , ” who wants to be judged by his actions , tends to see himself as a Gallic incarnation of the American dream . He is the son of immigrants , the outsider whose rise to the top is living proof of French openness . In the US , too , the attitude towards the alliance with Europe has changed mightily . The failure in Iraq , the risk of an “ Iraqization ” of Afghanistan , and Russia’s newfound assertiveness have moved America from the arrogant indifference that characterized most of Bush’s presidency to a rediscovery of the Alliance’s value . America needs allies , and is not preoccupied by their potential independent strength . As one top American diplomat put it , “ The last worry I have when I wake up at three in the morning is that Europe is becoming too strong . ” But rapprochement between France and the US should not hide other realities . First , in Afghanistan , NATO is in danger of suffering its first military defeat . Where will the new troops that are needed come from ? And a key member of the Alliance , Turkey , may be about to embark in a dangerous military adventure in Kurdish northern Iraq . Second , one cannot speak of NATO without noting that the Alliance’s twin pillars – Europe and the US – are not in great shape . If Europe is “ flat , ” one reason is Sarkozy . He may be encouraging news for the Alliance , his European policy is a source of worry for Europe . While Sarkozy claims that Europe is his priority , his methods seem to contradict his intentions . The difficult personal chemistry he has with German Chancellor Angela Merkel is reinforced by his constant attacks on the European Central Bank and its president , Jean-Claude Trichet . One cannot simultaneously defend the Alliance in the name of Europe and weaken Europe with fits of populism and economic nationalism . Europe’s three key new leaders – Britain’s Gordon Brown , Merkel , and Sarkozy – all belong to a generation that is no longer emotionally moved by the project of European integration . Their links with Europe – if they exist at all – are at best rational , not emotional . But will cool rationality be enough to create a European security pillar within the context of the Alliance ? As for America , it is “ down ” in terms of both “ soft ” ideological power and “ hard ” military power . The US remains by far the world’s strongest country , particularly in military terms , but it is confronted with fundamental questions about the use and utility of force at a time when power is relative . Today , Americans and Europeans alike must demonstrate modesty . Unlike when the Alliance was created , a multi-polar world system has taken shape , in which the West’s demographic and economic share has fallen , and in which it must now compete with successful authoritarian models such as China or even Russia . In this new context , solidarity is as crucial as ever . Opinion about the US remains largely negative in Europe , and will remain so at least until the US presidential election in 2008. Likewise , US perceptions of France and of Europe are only slowly improving . It is only by respecting our common values and not exacerbating our differences that the West will be able to reinvent itself . The Alliance may be “ up , ” but its outlook remains uncertain . 