diff --git a/mosesdecoder/jam-files/boost-build/tools/como-win.jam b/mosesdecoder/jam-files/boost-build/tools/como-win.jam new file mode 100644 index 0000000000000000000000000000000000000000..d21a70d6f1e28d83a8ef660384d7457aaba2cd89 --- /dev/null +++ b/mosesdecoder/jam-files/boost-build/tools/como-win.jam @@ -0,0 +1,117 @@ +# (C) Copyright David Abrahams 2001. +# (C) Copyright MetaCommunications, Inc. 2004. + +# Distributed under the Boost Software License, Version 1.0. (See +# accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +# The following #// line will be used by the regression test table generation +# program as the column heading for HTML tables. Must not include a version +# number. +#//Comeau
C++
+ +import common ; +import como ; +import feature ; +import generators ; +import toolset : flags ; + +feature.extend-subfeature toolset como : platform : win ; + + +# Initializes the Comeau toolset for windows. The command is the command which +# invokes the compiler. You should either set environment variable +# COMO_XXX_INCLUDE where XXX is the used backend (as described in the +# documentation), or pass that as part of command, e.g: +# +# using como-win : 4.3 : "set COMO_BCC_INCLUDE=C:/include &&" como.exe ; +# +rule init ( version ? : command * : options * ) +{ + local condition = [ common.check-init-parameters como-win + : version $(version) ] ; + + command = [ common.get-invocation-command como-win : como.exe : + $(command) ] ; + + common.handle-options como-win : $(condition) : $(command) : $(options) ; +} + +generators.register-c-compiler como-win.compile.c++ : CPP : OBJ + : como win ; +generators.register-c-compiler como-win.compile.c : C : OBJ + : como win ; + + +generators.register-linker como-win.link + : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB + : EXE + : como win ; + +# Note that status of shared libraries support is not clear, so we do not define +# the link.dll generator. +generators.register-archiver como-win.archive + : OBJ : STATIC_LIB + : como win ; + + +flags como-win C++FLAGS off : --no_exceptions ; +flags como-win C++FLAGS on : --exceptions ; + +flags como-win CFLAGS off : --no_inlining ; +flags como-win CFLAGS on full : --inlining ; + + +# The following seems to be VC-specific options. At least, when I uncomment +# then, Comeau with bcc as backend reports that bcc32 invocation failed. +# +#flags como-win CFLAGS on : /Zi ; +#flags como-win CFLAGS off : /Od ; + + +flags como-win CFLAGS ; +flags como-win CFLAGS : -D_WIN32 ; # Make sure that we get the Boost Win32 platform config header. +flags como-win CFLAGS multi : -D_MT ; # Make sure that our config knows that threading is on. +flags como-win C++FLAGS ; +flags como-win DEFINES ; +flags como-win UNDEFS ; +flags como-win HDRS ; +flags como-win SYSHDRS ; +flags como-win LINKFLAGS ; +flags como-win ARFLAGS ; +flags como-win NO_WARN ; + +#flags como-win STDHDRS : $(COMO_INCLUDE_PATH) ; +#flags como-win STDLIB_PATH : $(COMO_STDLIB_PATH)$(SLASH) ; + +flags como-win LIBPATH ; +flags como-win LIBRARIES ; +flags como-win FINDLIBS ; +flags como-win FINDLIBS ; + +nl = " +" ; + + +# For como, we repeat all libraries so that dependencies are always resolved. +# +actions link bind LIBRARIES +{ + $(CONFIG_COMMAND) --no_version --no_prelink_verbose $(LINKFLAGS) -o "$(<[1]:S=)" @"@($(<[1]:W).rsp:E=$(nl)"$(>)")" "$(LIBRARIES)" "$(FINDLIBS:S=.lib)" +} + +actions compile.c +{ + $(CONFIG_COMMAND) -c --c99 -e5 --no_version --display_error_number --diag_suppress=9,21,161,748,940,962 -U$(UNDEFS) -D$(DEFINES) $(WARN) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -I"$(SYSHDRS)" -o "$(<:D=)" "$(>)" +} + +actions compile.c++ +{ + $(CONFIG_COMMAND) -c -e5 --no_version --no_prelink_verbose --display_error_number --long_long --diag_suppress=9,21,161,748,940,962 --diag_error=461 -D__STL_LONG_LONG -U$(UNDEFS) -D$(DEFINES) $(WARN) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -I"$(SYSHDRS)" -o "$(<)" "$(>)" +} + +actions archive +{ + $(CONFIG_COMMAND) --no_version --no_prelink_verbose --prelink_object @"@($(<[1]:W).rsp:E=$(nl)"$(>)")" + lib $(ARFLAGS) /nologo /out:"$(<:S=.lib)" @"@($(<[1]:W).rsp:E=$(nl)"$(>)")" +} diff --git a/mosesdecoder/jam-files/boost-build/tools/convert.jam b/mosesdecoder/jam-files/boost-build/tools/convert.jam new file mode 100644 index 0000000000000000000000000000000000000000..ac1d701015522247771cee21106f4c74cbfff291 --- /dev/null +++ b/mosesdecoder/jam-files/boost-build/tools/convert.jam @@ -0,0 +1,62 @@ +# Copyright (c) 2009 Vladimir Prus +# +# Use, modification and distribution is subject to the Boost Software +# License Version 1.0. (See accompanying file LICENSE_1_0.txt or +# http://www.boost.org/LICENSE_1_0.txt) + +# Implements 'convert' target that takes a bunch of source and +# tries to convert each one to the specified type. +# +# For example: +# +# convert objects obj : a.cpp b.cpp ; +# + +import targets ; +import generators ; +import project ; +import type ; +import "class" : new ; + +class convert-target-class : typed-target +{ + rule __init__ ( name : project : type + : sources * : requirements * : default-build * : usage-requirements * ) + { + typed-target.__init__ $(name) : $(project) : $(type) + : $(sources) : $(requirements) : $(default-build) : $(usage-requirements) ; + } + + rule construct ( name : source-targets * : property-set ) + { + local r = [ generators.construct $(self.project) : $(self.type) + : [ property-set.create [ $(property-set).raw ] # [ feature.expand + $(self.type) ] + # ] + : $(source-targets) ] ; + if ! $(r) + { + errors.error "unable to construct" [ full-name ] ; + } + + return $(r) ; + } + +} + +rule convert ( name type : sources * : requirements * : default-build * + : usage-requirements * ) +{ + local project = [ project.current ] ; + + # This is a circular module dependency, so it must be imported here + modules.import targets ; + targets.main-target-alternative + [ new convert-target-class $(name) : $(project) : [ type.type-from-rule-name $(type) ] + : [ targets.main-target-sources $(sources) : $(name) ] + : [ targets.main-target-requirements $(requirements) : $(project) ] + : [ targets.main-target-default-build $(default-build) : $(project) ] + : [ targets.main-target-usage-requirements $(usage-requirements) : $(project) ] + ] ; +} +IMPORT $(__name__) : convert : : convert ; diff --git a/mosesdecoder/jam-files/boost-build/tools/gcc.jam b/mosesdecoder/jam-files/boost-build/tools/gcc.jam new file mode 100644 index 0000000000000000000000000000000000000000..ee3aae128a72b77188b732157d7863a1618daa51 --- /dev/null +++ b/mosesdecoder/jam-files/boost-build/tools/gcc.jam @@ -0,0 +1,1190 @@ +# Copyright 2001 David Abrahams. +# Copyright 2002-2006 Rene Rivera. +# Copyright 2002-2003 Vladimir Prus. +# Copyright (c) 2005 Reece H. Dunn. +# Copyright 2006 Ilya Sokolov. +# Copyright 2007 Roland Schwarz +# Copyright 2007 Boris Gubenko. +# +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +import "class" : new ; +import common ; +import errors ; +import feature ; +import generators ; +import os ; +import pch ; +import property ; +import property-set ; +import toolset ; +import type ; +import rc ; +import regex ; +import set ; +import unix ; +import fortran ; + + +if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ] +{ + .debug-configuration = true ; +} + + +feature.extend toolset : gcc ; +# feature.subfeature toolset gcc : flavor : : optional ; + +toolset.inherit-generators gcc : unix : unix.link unix.link.dll ; +toolset.inherit-flags gcc : unix ; +toolset.inherit-rules gcc : unix ; + +generators.override gcc.prebuilt : builtin.prebuilt ; +generators.override gcc.searched-lib-generator : searched-lib-generator ; + +# Make gcc toolset object files use the "o" suffix on all platforms. +type.set-generated-target-suffix OBJ : gcc : o ; +type.set-generated-target-suffix OBJ : gcc windows : o ; +type.set-generated-target-suffix OBJ : gcc cygwin : o ; + +# Initializes the gcc toolset for the given version. If necessary, command may +# be used to specify where the compiler is located. The parameter 'options' is a +# space-delimited list of options, each one specified as +# option-value. Valid option names are: cxxflags, linkflags and +# linker-type. Accepted linker-type values are aix, darwin, gnu, hpux, osf or +# sun and the default value will be selected based on the current OS. +# Example: +# using gcc : 3.4 : : foo bar sun ; +# +# The compiler command to use is detected in a three step manner: +# 1) If an explicit command is specified by the user, it will be used and must available. +# 2) If only a certain version is specified, it is enforced: +# - either a command 'g++-VERSION' must be available +# - or the default command 'g++' must be available and match the exact version. +# 3) Without user-provided restrictions use default 'g++' +rule init ( version ? : command * : options * ) +{ + #1): use user-provided command + local tool-command = ; + if $(command) + { + tool-command = [ common.get-invocation-command-nodefault gcc : g++ : $(command) ] ; + if ! $(tool-command) + { + errors.error "toolset gcc initialization:" : + "provided command '$(command)' not found" : + "initialized from" [ errors.nearest-user-location ] ; + } + } + #2): enforce user-provided version + else if $(version) + { + tool-command = [ common.get-invocation-command-nodefault gcc : "g++-$(version[1])" ] ; + + #2.1) fallback: check whether "g++" reports the requested version + if ! $(tool-command) + { + tool-command = [ common.get-invocation-command-nodefault gcc : g++ ] ; + if $(tool-command) + { + local tool-command-string = $(tool-command:J=" ") ; + local tool-version = [ MATCH "^([0-9.]+)" : [ SHELL "$(tool-command-string) -dumpversion" ] ] ; + if $(tool-version) != $(version) + { + # Permit a match betwen two-digit version specified by the user + # (e.g. 4.4) and 3-digit version reported by gcc. + # Since only two digits are present in binary name anyway, + # insisting that user specify 3-digit version when + # configuring Boost.Build while it's not required on + # command like would be strange. + local stripped = [ MATCH "^([0-9]+\.[0-9]+).*" : $(tool-version) ] ; + if $(stripped) != $(version) + { + errors.error "toolset gcc initialization:" : + "version '$(version)' requested but 'g++-$(version)' not found and version '$(tool-version)' of default '$(tool-command)' does not match" : + "initialized from" [ errors.nearest-user-location ] ; + tool-command = ; + } + # Use full 3-digit version to be compatible with the 'using gcc ;' case + version = $(tool-version) ; + } + } + else + { + errors.error "toolset gcc initialization:" : + "version '$(version)' requested but neither 'g++-$(version)' nor default 'g++' found" : + "initialized from" [ errors.nearest-user-location ] ; + } + } + } + #3) default: no command and no version specified, try using default command "g++" + else + { + tool-command = [ common.get-invocation-command-nodefault gcc : g++ ] ; + if ! $(tool-command) + { + errors.error "toolset gcc initialization:" : + "no command provided, default command 'g++' not found" : + "initialized from" [ errors.nearest-user-location ] ; + } + } + + + # Information about the gcc command... + # The command. + local command = $(tool-command) ; + # The root directory of the tool install. + local root = [ feature.get-values : $(options) ] ; + # The bin directory where to find the command to execute. + local bin ; + # The flavor of compiler. + local flavor = [ feature.get-values : $(options) ] ; + # Autodetect the root and bin dir if not given. + if $(command) + { + bin ?= [ common.get-absolute-tool-path $(command[-1]) ] ; + root ?= $(bin:D) ; + } + # The 'command' variable can have multiple elements. When calling + # the SHELL builtin we need a single string. + local command-string = $(command:J=" ") ; + # Autodetect the version and flavor if not given. + if $(command) + { + local machine = [ MATCH "^([^ ]+)" + : [ SHELL "$(command-string) -dumpmachine" ] ] ; + version ?= [ MATCH "^([0-9.]+)" + : [ SHELL "$(command-string) -dumpversion" ] ] ; + switch $(machine:L) + { + case *mingw* : flavor ?= mingw ; + } + } + + local condition ; + if $(flavor) + { + condition = [ common.check-init-parameters gcc + : version $(version) + : flavor $(flavor) + ] ; + } + else + { + condition = [ common.check-init-parameters gcc + : version $(version) + ] ; + condition = $(condition) ; #/ ; + } + + common.handle-options gcc : $(condition) : $(command) : $(options) ; + + local linker = [ feature.get-values : $(options) ] ; + # The logic below should actually be keyed on + if ! $(linker) + { + if [ os.name ] = OSF + { + linker = osf ; + } + else if [ os.name ] = HPUX + { + linker = hpux ; + } + else if [ os.name ] = AIX + { + linker = aix ; + } + else if [ os.name ] = SOLARIS + { + linker = sun ; + } + else + { + linker = gnu ; + } + } + init-link-flags gcc $(linker) $(condition) ; + + + # If gcc is installed in non-standard location, we'd need to add + # LD_LIBRARY_PATH when running programs created with it (for unit-test/run + # rules). + if $(command) + { + # On multilib 64-bit boxes, there are both 32-bit and 64-bit libraries + # and all must be added to LD_LIBRARY_PATH. The linker will pick the + # right onces. Note that we don't provide a clean way to build 32-bit + # binary with 64-bit compiler, but user can always pass -m32 manually. + local lib_path = $(root)/bin $(root)/lib $(root)/lib32 $(root)/lib64 ; + if $(.debug-configuration) + { + ECHO notice: using gcc libraries :: $(condition) :: $(lib_path) ; + } + toolset.flags gcc.link RUN_PATH $(condition) : $(lib_path) ; + } + + # If it's not a system gcc install we should adjust the various programs as + # needed to prefer using the install specific versions. This is essential + # for correct use of MinGW and for cross-compiling. + + local nl = " +" ; + + # - The archive builder. + local archiver = [ common.get-invocation-command gcc + : [ NORMALIZE_PATH [ MATCH "(.*)[$(nl)]+" : [ SHELL "$(command-string) -print-prog-name=ar" ] ] ] + : [ feature.get-values : $(options) ] + : $(bin) + : search-path ] ; + toolset.flags gcc.archive .AR $(condition) : $(archiver[1]) ; + if $(.debug-configuration) + { + ECHO notice: using gcc archiver :: $(condition) :: $(archiver[1]) ; + } + + # - Ranlib + local ranlib = [ common.get-invocation-command gcc + : [ NORMALIZE_PATH [ MATCH "(.*)[$(nl)]+" : [ SHELL "$(command-string) -print-prog-name=ranlib" ] ] ] + : [ feature.get-values : $(options) ] + : $(bin) + : search-path ] ; + toolset.flags gcc.archive .RANLIB $(condition) : $(ranlib[1]) ; + if $(.debug-configuration) + { + ECHO notice: using gcc ranlib :: $(condition) :: $(ranlib[1]) ; + } + + + # - The resource compiler. + local rc = + [ common.get-invocation-command-nodefault gcc + : windres : [ feature.get-values : $(options) ] : $(bin) : search-path ] ; + local rc-type = + [ feature.get-values : $(options) ] ; + rc-type ?= windres ; + if ! $(rc) + { + # If we can't find an RC compiler we fallback to a null RC compiler that + # creates empty object files. This allows the same Jamfiles to work + # across the board. The null RC uses the assembler to create the empty + # objects, so configure that. + rc = [ common.get-invocation-command gcc : as : : $(bin) : search-path ] ; + rc-type = null ; + } + rc.configure $(rc) : $(condition) : $(rc-type) ; +} + +if [ os.name ] = NT +{ + # This causes single-line command invocation to not go through .bat files, + # thus avoiding command-line length limitations. + JAMSHELL = % ; +} + +generators.register-c-compiler gcc.compile.c++.preprocess : CPP : PREPROCESSED_CPP : gcc ; +generators.register-c-compiler gcc.compile.c.preprocess : C : PREPROCESSED_C : gcc ; +generators.register-c-compiler gcc.compile.c++ : CPP : OBJ : gcc ; +generators.register-c-compiler gcc.compile.c : C : OBJ : gcc ; +generators.register-c-compiler gcc.compile.asm : ASM : OBJ : gcc ; +generators.register-fortran-compiler gcc.compile.fortran : FORTRAN FORTRAN90 : OBJ : gcc ; + +# pch support + +# The compiler looks for a precompiled header in each directory just before it +# looks for the include file in that directory. The name searched for is the +# name specified in the #include directive with ".gch" suffix appended. The +# logic in gcc-pch-generator will make sure that BASE_PCH suffix is appended to +# full name of the header. + +type.set-generated-target-suffix PCH : gcc : gch ; + +# GCC-specific pch generator. +class gcc-pch-generator : pch-generator +{ + import project ; + import property-set ; + import type ; + + rule run-pch ( project name ? : property-set : sources + ) + { + # Find the header in sources. Ignore any CPP sources. + local header ; + for local s in $(sources) + { + if [ type.is-derived [ $(s).type ] H ] + { + header = $(s) ; + } + } + + # Error handling: Base header file name should be the same as the base + # precompiled header name. + local header-name = [ $(header).name ] ; + local header-basename = $(header-name:B) ; + if $(header-basename) != $(name) + { + local location = [ $(project).project-module ] ; + errors.user-error "in" $(location)": pch target name `"$(name)"' should be the same as the base name of header file `"$(header-name)"'" ; + } + + local pch-file = [ generator.run $(project) $(name) : $(property-set) + : $(header) ] ; + + # return result of base class and pch-file property as usage-requirements + return + [ property-set.create $(pch-file) -Winvalid-pch ] + $(pch-file) + ; + } + + # Calls the base version specifying source's name as the name of the created + # target. As result, the PCH will be named whatever.hpp.gch, and not + # whatever.gch. + rule generated-targets ( sources + : property-set : project name ? ) + { + name = [ $(sources[1]).name ] ; + return [ generator.generated-targets $(sources) + : $(property-set) : $(project) $(name) ] ; + } +} + +# Note: the 'H' source type will catch both '.h' header and '.hpp' header. The +# latter have HPP type, but HPP type is derived from H. The type of compilation +# is determined entirely by the destination type. +generators.register [ new gcc-pch-generator gcc.compile.c.pch : H : C_PCH : on gcc ] ; +generators.register [ new gcc-pch-generator gcc.compile.c++.pch : H : CPP_PCH : on gcc ] ; + +# Override default do-nothing generators. +generators.override gcc.compile.c.pch : pch.default-c-pch-generator ; +generators.override gcc.compile.c++.pch : pch.default-cpp-pch-generator ; + +toolset.flags gcc.compile PCH_FILE on : ; + +# Declare flags and action for compilation. +toolset.flags gcc.compile OPTIONS off : -O0 ; +toolset.flags gcc.compile OPTIONS speed : -O3 ; +toolset.flags gcc.compile OPTIONS space : -Os ; + +toolset.flags gcc.compile OPTIONS off : -fno-inline ; +toolset.flags gcc.compile OPTIONS on : -Wno-inline ; +toolset.flags gcc.compile OPTIONS full : -finline-functions -Wno-inline ; + +toolset.flags gcc.compile OPTIONS off : -w ; +toolset.flags gcc.compile OPTIONS on : -Wall ; +toolset.flags gcc.compile OPTIONS all : -Wall -pedantic ; +toolset.flags gcc.compile OPTIONS on : -Werror ; + +toolset.flags gcc.compile OPTIONS on : -g ; +toolset.flags gcc.compile OPTIONS on : -pg ; +toolset.flags gcc.compile OPTIONS off : -fno-rtti ; + +rule setup-fpic ( targets * : sources * : properties * ) +{ + local link = [ feature.get-values link : $(properties) ] ; + if $(link) = shared + { + local target = [ feature.get-values target-os : $(properties) ] ; + + # This logic will add -fPIC for all compilations: + # + # lib a : a.cpp b ; + # obj b : b.cpp ; + # exe c : c.cpp a d ; + # obj d : d.cpp ; + # + # This all is fine, except that 'd' will be compiled with -fPIC even though + # it is not needed, as 'd' is used only in exe. However, it is hard to + # detect where a target is going to be used. Alternatively, we can set -fPIC + # only when main target type is LIB but than 'b' would be compiled without + # -fPIC which would lead to link errors on x86-64. So, compile everything + # with -fPIC. + # + # Yet another alternative would be to create a propagated + # feature and set it when building shared libraries, but that would be hard + # to implement and would increase the target path length even more. + + # On Windows, fPIC is default, specifying -fPIC explicitly leads to + # a warning. + if $(target) != cygwin && $(target) != windows + { + OPTIONS on $(targets) += -fPIC ; + } + } +} + +rule setup-address-model ( targets * : sources * : properties * ) +{ + local model = [ feature.get-values address-model : $(properties) ] ; + if $(model) + { + local option ; + local os = [ feature.get-values target-os : $(properties) ] ; + if $(os) = aix + { + if $(model) = 32 + { + option = -maix32 ; + } + else + { + option = -maix64 ; + } + } + else if $(os) = hpux + { + if $(model) = 32 + { + option = -milp32 ; + } + else + { + option = -mlp64 ; + } + } + else + { + local arch = [ feature.get-values architecture : $(properties) ] ; + if $(arch) != arm + { + if $(model) = 32 + { + option = -m32 ; + } + else if $(model) = 64 + { + option = -m64 ; + } + } + # For darwin, the model can be 32_64. darwin.jam will handle that + # on its own. + } + OPTIONS on $(targets) += $(option) ; + } +} + + +# FIXME: this should not use os.name. +if [ os.name ] != NT && [ os.name ] != OSF && [ os.name ] != HPUX && [ os.name ] != AIX +{ + # OSF does have an option called -soname but it does not seem to work as + # expected, therefore it has been disabled. + HAVE_SONAME = "" ; + SONAME_OPTION = -h ; +} + +# HPUX, for some reason, seem to use '+h', not '-h'. +if [ os.name ] = HPUX +{ + HAVE_SONAME = "" ; + SONAME_OPTION = +h ; +} + +toolset.flags gcc.compile USER_OPTIONS ; +toolset.flags gcc.compile.c++ USER_OPTIONS ; +toolset.flags gcc.compile DEFINES ; +toolset.flags gcc.compile INCLUDES ; +toolset.flags gcc.compile.c++ TEMPLATE_DEPTH ; +toolset.flags gcc.compile.fortran USER_OPTIONS ; + +rule compile.c++.pch ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-fpic $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; +} + +actions compile.c++.pch +{ + "$(CONFIG_COMMAND)" -x c++-header $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)" +} + +rule compile.c.pch ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-fpic $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; +} + +actions compile.c.pch +{ + "$(CONFIG_COMMAND)" -x c-header $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)" +} + +rule compile.c++.preprocess ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-fpic $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; + + # Some extensions are compiled as C++ by default. For others, we need to + # pass -x c++. We could always pass -x c++ but distcc does not work with it. + if ! $(>:S) in .cc .cp .cxx .cpp .c++ .C + { + LANG on $(<) = "-x c++" ; + } + DEPENDS $(<) : [ on $(<) return $(PCH_FILE) ] ; +} + +rule compile.c.preprocess ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-fpic $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; + + # If we use the name g++ then default file suffix -> language mapping does + # not work. So have to pass -x option. Maybe, we can work around this by + # allowing the user to specify both C and C++ compiler names. + #if $(>:S) != .c + #{ + LANG on $(<) = "-x c" ; + #} + DEPENDS $(<) : [ on $(<) return $(PCH_FILE) ] ; +} + +rule compile.c++ ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-fpic $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; + + # Some extensions are compiled as C++ by default. For others, we need to + # pass -x c++. We could always pass -x c++ but distcc does not work with it. + if ! $(>:S) in .cc .cp .cxx .cpp .c++ .C + { + LANG on $(<) = "-x c++" ; + } + DEPENDS $(<) : [ on $(<) return $(PCH_FILE) ] ; + + # Here we want to raise the template-depth parameter value to something + # higher than the default value of 17. Note that we could do this using the + # feature.set-default rule but we do not want to set the default value for + # all toolsets as well. + # + # TODO: This 'modified default' has been inherited from some 'older Boost + # Build implementation' and has most likely been added to make some Boost + # library parts compile correctly. We should see what exactly prompted this + # and whether we can get around the problem more locally. + local template-depth = [ on $(<) return $(TEMPLATE_DEPTH) ] ; + if ! $(template-depth) + { + TEMPLATE_DEPTH on $(<) = 128 ; + } +} + +rule compile.c ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-fpic $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; + + # If we use the name g++ then default file suffix -> language mapping does + # not work. So have to pass -x option. Maybe, we can work around this by + # allowing the user to specify both C and C++ compiler names. + #if $(>:S) != .c + #{ + LANG on $(<) = "-x c" ; + #} + DEPENDS $(<) : [ on $(<) return $(PCH_FILE) ] ; +} + +rule compile.fortran ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-fpic $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; +} + +actions compile.c++ bind PCH_FILE +{ + "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)" +} + +actions compile.c bind PCH_FILE +{ + "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<)" "$(>)" +} + +actions compile.c++.preprocess bind PCH_FILE +{ + "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>:W)" -E >"$(<:W)" +} + +actions compile.c.preprocess bind PCH_FILE +{ + "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" "$(>)" -E >$(<) +} + +actions compile.fortran +{ + "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<)" "$(>)" +} + +rule compile.asm ( targets * : sources * : properties * ) +{ + setup-fpic $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; + LANG on $(<) = "-x assembler-with-cpp" ; +} + +actions compile.asm +{ + "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)" +} + +# The class which check that we don't try to use the static +# property while creating or using shared library, since it's not supported by +# gcc/libc. +class gcc-linking-generator : unix-linking-generator +{ + rule run ( project name ? : property-set : sources + ) + { + # TODO: Replace this with the use of a target-os property. + local no-static-link = ; + if [ modules.peek : UNIX ] + { + switch [ modules.peek : JAMUNAME ] + { + case * : no-static-link = true ; + } + } + + local properties = [ $(property-set).raw ] ; + local reason ; + if $(no-static-link) && static in $(properties) + { + if shared in $(properties) + { + reason = + "On gcc, DLL can't be build with 'static'." ; + } + else if [ type.is-derived $(self.target-types[1]) EXE ] + { + for local s in $(sources) + { + local type = [ $(s).type ] ; + if $(type) && [ type.is-derived $(type) SHARED_LIB ] + { + reason = + "On gcc, using DLLS together with the" + "static options is not possible " ; + } + } + } + } + if $(reason) + { + ECHO warning: + $(reason) ; + ECHO warning: + "It is suggested to use 'static' together" + "with 'static'." ; + return ; + } + else + { + local generated-targets = [ unix-linking-generator.run $(project) + $(name) : $(property-set) : $(sources) ] ; + return $(generated-targets) ; + } + } +} + +# The set of permissible input types is different on mingw. +# So, define two sets of generators, with mingw generators +# selected when target-os=windows. + +local g ; +g = [ new gcc-linking-generator gcc.mingw.link + : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB + : EXE + : gcc windows ] ; +$(g).set-rule-name gcc.link ; +generators.register $(g) ; + +g = [ new gcc-linking-generator gcc.mingw.link.dll + : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB + : IMPORT_LIB SHARED_LIB + : gcc windows ] ; +$(g).set-rule-name gcc.link.dll ; +generators.register $(g) ; + +generators.register + [ new gcc-linking-generator gcc.link + : LIB OBJ + : EXE + : gcc ] ; +generators.register + [ new gcc-linking-generator gcc.link.dll + : LIB OBJ + : SHARED_LIB + : gcc ] ; + +generators.override gcc.mingw.link : gcc.link ; +generators.override gcc.mingw.link.dll : gcc.link.dll ; + +# Cygwin is similar to msvc and mingw in that it uses import libraries. +# While in simple cases, it can directly link to a shared library, +# it is believed to be slower, and not always possible. Define cygwin-specific +# generators here. + +g = [ new gcc-linking-generator gcc.cygwin.link + : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB + : EXE + : gcc cygwin ] ; +$(g).set-rule-name gcc.link ; +generators.register $(g) ; + +g = [ new gcc-linking-generator gcc.cygwin.link.dll + : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB + : IMPORT_LIB SHARED_LIB + : gcc cygwin ] ; +$(g).set-rule-name gcc.link.dll ; +generators.register $(g) ; + +generators.override gcc.cygwin.link : gcc.link ; +generators.override gcc.cygwin.link.dll : gcc.link.dll ; + +# Declare flags for linking. +# First, the common flags. +toolset.flags gcc.link OPTIONS on : -g ; +toolset.flags gcc.link OPTIONS on : -pg ; +toolset.flags gcc.link USER_OPTIONS ; +toolset.flags gcc.link LINKPATH ; +toolset.flags gcc.link FINDLIBS-ST ; +toolset.flags gcc.link FINDLIBS-SA ; +toolset.flags gcc.link LIBRARIES ; + +toolset.flags gcc.link.dll .IMPLIB-COMMAND windows : "-Wl,--out-implib," ; +toolset.flags gcc.link.dll .IMPLIB-COMMAND cygwin : "-Wl,--out-implib," ; + +# For static we made sure there are no dynamic libraries in the +# link. On HP-UX not all system libraries exist as archived libraries (for +# example, there is no libunwind.a), so, on this platform, the -static option +# cannot be specified. +if [ os.name ] != HPUX +{ + toolset.flags gcc.link OPTIONS static : -static ; +} + +# Now, the vendor specific flags. +# The parameter linker can be either aix, darwin, gnu, hpux, osf or sun. +rule init-link-flags ( toolset linker condition ) +{ + switch $(linker) + { + case aix : + { + # + # On AIX we *have* to use the native linker. + # + # Using -brtl, the AIX linker will look for libraries with both the .a + # and .so extensions, such as libfoo.a and libfoo.so. Without -brtl, the + # AIX linker looks only for libfoo.a. Note that libfoo.a is an archived + # file that may contain shared objects and is different from static libs + # as on Linux. + # + # The -bnoipath strips the prepending (relative) path of libraries from + # the loader section in the target library or executable. Hence, during + # load-time LIBPATH (identical to LD_LIBRARY_PATH) or a hard-coded + # -blibpath (*similar* to -lrpath/-lrpath-link) is searched. Without + # this option, the prepending (relative) path + library name is + # hard-coded in the loader section, causing *only* this path to be + # searched during load-time. Note that the AIX linker does not have an + # -soname equivalent, this is as close as it gets. + # + # The above options are definately for AIX 5.x, and most likely also for + # AIX 4.x and AIX 6.x. For details about the AIX linker see: + # http://download.boulder.ibm.com/ibmdl/pub/software/dw/aix/es-aix_ll.pdf + # + + toolset.flags $(toolset).link OPTIONS : -Wl,-brtl -Wl,-bnoipath + : unchecked ; + } + + case darwin : + { + # On Darwin, the -s option to ld does not work unless we pass -static, + # and passing -static unconditionally is a bad idea. So, don't pass -s. + # at all, darwin.jam will use separate 'strip' invocation. + toolset.flags $(toolset).link RPATH $(condition) : : unchecked ; + toolset.flags $(toolset).link RPATH_LINK $(condition) : : unchecked ; + } + + case gnu : + { + # Strip the binary when no debugging is needed. We use --strip-all flag + # as opposed to -s since icc (intel's compiler) is generally + # option-compatible with and inherits from the gcc toolset, but does not + # support -s. + toolset.flags $(toolset).link OPTIONS $(condition)/on : -Wl,--strip-all : unchecked ; + toolset.flags $(toolset).link RPATH $(condition) : : unchecked ; + toolset.flags $(toolset).link RPATH_LINK $(condition) : : unchecked ; + toolset.flags $(toolset).link START-GROUP $(condition) : -Wl,--start-group : unchecked ; + toolset.flags $(toolset).link END-GROUP $(condition) : -Wl,--end-group : unchecked ; + + # gnu ld has the ability to change the search behaviour for libraries + # referenced by -l switch. These modifiers are -Bstatic and -Bdynamic + # and change search for -l switches that follow them. The following list + # shows the tried variants. + # The search stops at the first variant that has a match. + # *nix: -Bstatic -lxxx + # libxxx.a + # + # *nix: -Bdynamic -lxxx + # libxxx.so + # libxxx.a + # + # windows (mingw,cygwin) -Bstatic -lxxx + # libxxx.a + # xxx.lib + # + # windows (mingw,cygwin) -Bdynamic -lxxx + # libxxx.dll.a + # xxx.dll.a + # libxxx.a + # xxx.lib + # cygxxx.dll (*) + # libxxx.dll + # xxx.dll + # libxxx.a + # + # (*) This is for cygwin + # Please note that -Bstatic and -Bdynamic are not a guarantee that a + # static or dynamic lib indeed gets linked in. The switches only change + # search patterns! + + # On *nix mixing shared libs with static runtime is not a good idea. + toolset.flags $(toolset).link FINDLIBS-ST-PFX $(condition)/shared + : -Wl,-Bstatic : unchecked ; + toolset.flags $(toolset).link FINDLIBS-SA-PFX $(condition)/shared + : -Wl,-Bdynamic : unchecked ; + + # On windows allow mixing of static and dynamic libs with static + # runtime. + toolset.flags $(toolset).link FINDLIBS-ST-PFX $(condition)/static/windows + : -Wl,-Bstatic : unchecked ; + toolset.flags $(toolset).link FINDLIBS-SA-PFX $(condition)/static/windows + : -Wl,-Bdynamic : unchecked ; + toolset.flags $(toolset).link OPTIONS $(condition)/static/windows + : -Wl,-Bstatic : unchecked ; + } + + case hpux : + { + toolset.flags $(toolset).link OPTIONS $(condition)/on + : -Wl,-s : unchecked ; + toolset.flags $(toolset).link OPTIONS $(condition)/shared + : -fPIC : unchecked ; + } + + case osf : + { + # No --strip-all, just -s. + toolset.flags $(toolset).link OPTIONS $(condition)/on + : -Wl,-s : unchecked ; + toolset.flags $(toolset).link RPATH $(condition) : + : unchecked ; + # This does not supports -R. + toolset.flags $(toolset).link RPATH_OPTION $(condition) : -rpath + : unchecked ; + # -rpath-link is not supported at all. + } + + case sun : + { + toolset.flags $(toolset).link OPTIONS $(condition)/on + : -Wl,-s : unchecked ; + toolset.flags $(toolset).link RPATH $(condition) : + : unchecked ; + # Solaris linker does not have a separate -rpath-link, but allows to use + # -L for the same purpose. + toolset.flags $(toolset).link LINKPATH $(condition) : + : unchecked ; + + # This permits shared libraries with non-PIC code on Solaris. + # VP, 2004/09/07: Now that we have -fPIC hardcode in link.dll, the + # following is not needed. Whether -fPIC should be hardcoded, is a + # separate question. + # AH, 2004/10/16: it is still necessary because some tests link against + # static libraries that were compiled without PIC. + toolset.flags $(toolset).link OPTIONS $(condition)/shared + : -mimpure-text : unchecked ; + } + + case * : + { + errors.user-error + "$(toolset) initialization: invalid linker '$(linker)'" : + "The value '$(linker)' specified for is not recognized." : + "Possible values are 'aix', 'darwin', 'gnu', 'hpux', 'osf' or 'sun'" ; + } + } +} + +# Enclose the RPATH variable on 'targets' in (double) quotes, +# unless it's already enclosed in single quotes. +# This special casing is done because it's common to pass +# '$ORIGIN' to linker -- and it has to have single quotes +# to prevent expansion by shell -- and if we add double +# quotes then preventing properties of single quotes disappear. +rule quote-rpath ( targets * ) +{ + local r = [ on $(targets[1]) return $(RPATH) ] ; + if ! [ MATCH "('.*')" : $(r) ] + { + r = "\"$(r)\"" ; + } + RPATH on $(targets) = $(r) ; +} + +# Declare actions for linking. +rule link ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; + SPACE on $(targets) = " " ; + # Serialize execution of the 'link' action, since running N links in + # parallel is just slower. For now, serialize only gcc links, it might be a + # good idea to serialize all links. + JAM_SEMAPHORE on $(targets) = gcc-link-semaphore ; + quote-rpath $(targets) ; +} + +actions link bind LIBRARIES +{ + "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<)" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + +} + +# Default value. Mostly for the sake of intel-linux that inherits from gcc, but +# does not have the same logic to set the .AR variable. We can put the same +# logic in intel-linux, but that's hardly worth the trouble as on Linux, 'ar' is +# always available. +.AR = ar ; +.RANLIB = ranlib ; + +toolset.flags gcc.archive AROPTIONS ; + +rule archive ( targets * : sources * : properties * ) +{ + # Always remove archive and start again. Here is the rationale from + # + # Andre Hentz: + # + # I had a file, say a1.c, that was included into liba.a. I moved a1.c to + # a2.c, updated my Jamfiles and rebuilt. My program was crashing with absurd + # errors. After some debugging I traced it back to the fact that a1.o was + # *still* in liba.a + # + # Rene Rivera: + # + # Originally removing the archive was done by splicing an RM onto the + # archive action. That makes archives fail to build on NT when they have + # many files because it will no longer execute the action directly and blow + # the line length limit. Instead we remove the file in a different action, + # just before building the archive. + # + local clean.a = $(targets[1])(clean) ; + TEMPORARY $(clean.a) ; + NOCARE $(clean.a) ; + LOCATE on $(clean.a) = [ on $(targets[1]) return $(LOCATE) ] ; + DEPENDS $(clean.a) : $(sources) ; + DEPENDS $(targets) : $(clean.a) ; + common.RmTemps $(clean.a) : $(targets) ; +} + +# Declare action for creating static libraries. +# The letter 'r' means to add files to the archive with replacement. Since we +# remove archive, we don't care about replacement, but there's no option "add +# without replacement". +# The letter 'c' suppresses the warning in case the archive does not exists yet. +# That warning is produced only on some platforms, for whatever reasons. +actions piecemeal archive +{ + "$(.AR)" $(AROPTIONS) rc "$(<)" "$(>)" + "$(.RANLIB)" "$(<)" +} + +rule link.dll ( targets * : sources * : properties * ) +{ + setup-threading $(targets) : $(sources) : $(properties) ; + setup-address-model $(targets) : $(sources) : $(properties) ; + SPACE on $(targets) = " " ; + JAM_SEMAPHORE on $(targets) = gcc-link-semaphore ; + quote-rpath $(targets) ; +} + +# Differs from 'link' above only by -shared. +actions link.dll bind LIBRARIES +{ + "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) +} + +rule setup-threading ( targets * : sources * : properties * ) +{ + local threading = [ feature.get-values threading : $(properties) ] ; + if $(threading) = multi + { + local target = [ feature.get-values target-os : $(properties) ] ; + local option ; + local libs ; + + switch $(target) + { + case windows : + { + option = -mthreads ; + } + case cygwin : + { + option = -mthreads ; + } + case solaris : + { + option = -pthreads ; + libs = rt ; + } + case beos : + { + # BeOS has no threading options, so do not set anything here. + } + case *bsd : + { + option = -pthread ; + # There is no -lrt on BSD. + } + case sgi : + { + # gcc on IRIX does not support multi-threading so do not set anything + # here. + } + case darwin : + { + # Darwin has no threading options so do not set anything here. + } + case * : + { + option = -pthread ; + libs = rt ; + } + } + + if $(option) + { + OPTIONS on $(targets) += $(option) ; + } + if $(libs) + { + FINDLIBS-SA on $(targets) += $(libs) ; + } + } +} + +local rule cpu-flags ( toolset variable : architecture : instruction-set + : values + : default ? ) +{ + if $(default) + { + toolset.flags $(toolset) $(variable) + $(architecture)/ + : $(values) ; + } + toolset.flags $(toolset) $(variable) + /$(instruction-set) + $(architecture)/$(instruction-set) + : $(values) ; +} + +# Set architecture/instruction-set options. +# +# x86 and compatible +# The 'native' option appeared in gcc 4.2 so we cannot safely use it +# as default. Use conservative i386 instead for 32-bit. +toolset.flags gcc OPTIONS x86/32/ : -march=i386 ; +cpu-flags gcc OPTIONS : x86 : native : -march=native ; +cpu-flags gcc OPTIONS : x86 : i386 : -march=i386 ; +cpu-flags gcc OPTIONS : x86 : i486 : -march=i486 ; +cpu-flags gcc OPTIONS : x86 : i586 : -march=i586 ; +cpu-flags gcc OPTIONS : x86 : i686 : -march=i686 ; +cpu-flags gcc OPTIONS : x86 : pentium : -march=pentium ; +cpu-flags gcc OPTIONS : x86 : pentium-mmx : -march=pentium-mmx ; +cpu-flags gcc OPTIONS : x86 : pentiumpro : -march=pentiumpro ; +cpu-flags gcc OPTIONS : x86 : pentium2 : -march=pentium2 ; +cpu-flags gcc OPTIONS : x86 : pentium3 : -march=pentium3 ; +cpu-flags gcc OPTIONS : x86 : pentium3m : -march=pentium3m ; +cpu-flags gcc OPTIONS : x86 : pentium-m : -march=pentium-m ; +cpu-flags gcc OPTIONS : x86 : pentium4 : -march=pentium4 ; +cpu-flags gcc OPTIONS : x86 : pentium4m : -march=pentium4m ; +cpu-flags gcc OPTIONS : x86 : prescott : -march=prescott ; +cpu-flags gcc OPTIONS : x86 : nocona : -march=nocona ; +cpu-flags gcc OPTIONS : x86 : core2 : -march=core2 ; +cpu-flags gcc OPTIONS : x86 : k6 : -march=k6 ; +cpu-flags gcc OPTIONS : x86 : k6-2 : -march=k6-2 ; +cpu-flags gcc OPTIONS : x86 : k6-3 : -march=k6-3 ; +cpu-flags gcc OPTIONS : x86 : athlon : -march=athlon ; +cpu-flags gcc OPTIONS : x86 : athlon-tbird : -march=athlon-tbird ; +cpu-flags gcc OPTIONS : x86 : athlon-4 : -march=athlon-4 ; +cpu-flags gcc OPTIONS : x86 : athlon-xp : -march=athlon-xp ; +cpu-flags gcc OPTIONS : x86 : athlon-mp : -march=athlon-mp ; +## +cpu-flags gcc OPTIONS : x86 : k8 : -march=k8 ; +cpu-flags gcc OPTIONS : x86 : opteron : -march=opteron ; +cpu-flags gcc OPTIONS : x86 : athlon64 : -march=athlon64 ; +cpu-flags gcc OPTIONS : x86 : athlon-fx : -march=athlon-fx ; +cpu-flags gcc OPTIONS : x86 : winchip-c6 : -march=winchip-c6 ; +cpu-flags gcc OPTIONS : x86 : winchip2 : -march=winchip2 ; +cpu-flags gcc OPTIONS : x86 : c3 : -march=c3 ; +cpu-flags gcc OPTIONS : x86 : c3-2 : -march=c3-2 ; +# Sparc +cpu-flags gcc OPTIONS : sparc : c3 : -mcpu=c3 : default ; +cpu-flags gcc OPTIONS : sparc : v7 : -mcpu=v7 ; +cpu-flags gcc OPTIONS : sparc : cypress : -mcpu=cypress ; +cpu-flags gcc OPTIONS : sparc : v8 : -mcpu=v8 ; +cpu-flags gcc OPTIONS : sparc : supersparc : -mcpu=supersparc ; +cpu-flags gcc OPTIONS : sparc : sparclite : -mcpu=sparclite ; +cpu-flags gcc OPTIONS : sparc : hypersparc : -mcpu=hypersparc ; +cpu-flags gcc OPTIONS : sparc : sparclite86x : -mcpu=sparclite86x ; +cpu-flags gcc OPTIONS : sparc : f930 : -mcpu=f930 ; +cpu-flags gcc OPTIONS : sparc : f934 : -mcpu=f934 ; +cpu-flags gcc OPTIONS : sparc : sparclet : -mcpu=sparclet ; +cpu-flags gcc OPTIONS : sparc : tsc701 : -mcpu=tsc701 ; +cpu-flags gcc OPTIONS : sparc : v9 : -mcpu=v9 ; +cpu-flags gcc OPTIONS : sparc : ultrasparc : -mcpu=ultrasparc ; +cpu-flags gcc OPTIONS : sparc : ultrasparc3 : -mcpu=ultrasparc3 ; +# RS/6000 & PowerPC +cpu-flags gcc OPTIONS : power : 403 : -mcpu=403 ; +cpu-flags gcc OPTIONS : power : 505 : -mcpu=505 ; +cpu-flags gcc OPTIONS : power : 601 : -mcpu=601 ; +cpu-flags gcc OPTIONS : power : 602 : -mcpu=602 ; +cpu-flags gcc OPTIONS : power : 603 : -mcpu=603 ; +cpu-flags gcc OPTIONS : power : 603e : -mcpu=603e ; +cpu-flags gcc OPTIONS : power : 604 : -mcpu=604 ; +cpu-flags gcc OPTIONS : power : 604e : -mcpu=604e ; +cpu-flags gcc OPTIONS : power : 620 : -mcpu=620 ; +cpu-flags gcc OPTIONS : power : 630 : -mcpu=630 ; +cpu-flags gcc OPTIONS : power : 740 : -mcpu=740 ; +cpu-flags gcc OPTIONS : power : 7400 : -mcpu=7400 ; +cpu-flags gcc OPTIONS : power : 7450 : -mcpu=7450 ; +cpu-flags gcc OPTIONS : power : 750 : -mcpu=750 ; +cpu-flags gcc OPTIONS : power : 801 : -mcpu=801 ; +cpu-flags gcc OPTIONS : power : 821 : -mcpu=821 ; +cpu-flags gcc OPTIONS : power : 823 : -mcpu=823 ; +cpu-flags gcc OPTIONS : power : 860 : -mcpu=860 ; +cpu-flags gcc OPTIONS : power : 970 : -mcpu=970 ; +cpu-flags gcc OPTIONS : power : 8540 : -mcpu=8540 ; +cpu-flags gcc OPTIONS : power : power : -mcpu=power ; +cpu-flags gcc OPTIONS : power : power2 : -mcpu=power2 ; +cpu-flags gcc OPTIONS : power : power3 : -mcpu=power3 ; +cpu-flags gcc OPTIONS : power : power4 : -mcpu=power4 ; +cpu-flags gcc OPTIONS : power : power5 : -mcpu=power5 ; +cpu-flags gcc OPTIONS : power : powerpc : -mcpu=powerpc ; +cpu-flags gcc OPTIONS : power : powerpc64 : -mcpu=powerpc64 ; +cpu-flags gcc OPTIONS : power : rios : -mcpu=rios ; +cpu-flags gcc OPTIONS : power : rios1 : -mcpu=rios1 ; +cpu-flags gcc OPTIONS : power : rios2 : -mcpu=rios2 ; +cpu-flags gcc OPTIONS : power : rsc : -mcpu=rsc ; +cpu-flags gcc OPTIONS : power : rs64a : -mcpu=rs64 ; +# AIX variant of RS/6000 & PowerPC +toolset.flags gcc AROPTIONS 64/aix : "-X 64" ; diff --git a/mosesdecoder/jam-files/engine/boehm_gc/EMX_MAKEFILE b/mosesdecoder/jam-files/engine/boehm_gc/EMX_MAKEFILE new file mode 100644 index 0000000000000000000000000000000000000000..c7e5bb806ed0fd4178f91c556197fdf39a88f7d6 --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/EMX_MAKEFILE @@ -0,0 +1,140 @@ +# +# OS/2 specific Makefile for the EMX environment +# +# You need GNU Make 3.71, gcc 2.5.7, emx 0.8h and GNU fileutils 3.9 +# or similar tools. C++ interface and de.exe weren't tested. +# +# Rename this file "Makefile". +# + +# Primary targets: +# gc.a - builds basic library +# c++ - adds C++ interface to library and include directory +# cords - adds cords (heavyweight strings) to library and include directory +# test - prints porting information, then builds basic version of gc.a, and runs +# some tests of collector and cords. Does not add cords or c++ interface to gc.a +# cord/de.exe - builds dumb editor based on cords. +CC= gcc +CXX=g++ +# Needed only for "make c++", which adds the c++ interface + +CFLAGS= -O -DALL_INTERIOR_POINTERS +# Setjmp_test may yield overly optimistic results when compiled +# without optimization. +# -DCHECKSUMS reports on erroneously clear dirty bits, and unexpectedly +# altered stubborn objects, at substantial performance cost. +# -DFIND_LEAK causes the collector to assume that all inaccessible +# objects should have been explicitly deallocated, and reports exceptions +# -DSOLARIS_THREADS enables support for Solaris (thr_) threads. +# (Clients should also define SOLARIS_THREADS and then include +# gc.h before performing thr_ or GC_ operations.) +# -DALL_INTERIOR_POINTERS allows all pointers to the interior +# of objects to be recognized. (See gc_private.h for consequences.) +# -DSMALL_CONFIG tries to tune the collector for small heap sizes, +# usually causing it to use less space in such situations. +# Incremental collection no longer works in this case. +# -DDONT_ADD_BYTE_AT_END is meaningful only with +# -DALL_INTERIOR_POINTERS. Normally -DALL_INTERIOR_POINTERS +# causes all objects to be padded so that pointers just past the end of +# an object can be recognized. This can be expensive. (The padding +# is normally more than one byte due to alignment constraints.) +# -DDONT_ADD_BYTE_AT_END disables the padding. + +AR= ar +RANLIB= ar s + +# Redefining srcdir allows object code for the nonPCR version of the collector +# to be generated in different directories +srcdir = . +VPATH = $(srcdir) + +OBJS= alloc.o reclaim.o allchblk.o misc.o mach_dep.o os_dep.o mark_rts.o headers.o mark.o obj_map.o blacklst.o finalize.o new_hblk.o dyn_load.o dbg_mlc.o malloc.o stubborn.o checksums.o typd_mlc.o ptr_chck.o mallocx.o + +CORD_OBJS= cord/cordbscs.o cord/cordxtra.o cord/cordprnt.o + +CORD_INCLUDE_FILES= $(srcdir)/gc.h $(srcdir)/cord/cord.h $(srcdir)/cord/ec.h \ + $(srcdir)/cord/cord_pos.h + +# Libraries needed for curses applications. Only needed for de. +CURSES= -lcurses -ltermlib + +# The following is irrelevant on most systems. But a few +# versions of make otherwise fork the shell specified in +# the SHELL environment variable. +SHELL= bash + +SPECIALCFLAGS = +# Alternative flags to the C compiler for mach_dep.c. +# Mach_dep.c often doesn't like optimization, and it's +# not time-critical anyway. + +all: gc.a gctest.exe + +$(OBJS) test.o: $(srcdir)/gc_priv.h $(srcdir)/gc_hdrs.h $(srcdir)/gc.h \ + $(srcdir)/gcconfig.h $(srcdir)/gc_typed.h +# The dependency on Makefile is needed. Changing +# options affects the size of GC_arrays, +# invalidating all .o files that rely on gc_priv.h + +mark.o typd_mlc.o finalize.o: $(srcdir)/include/gc_mark.h $(srcdir)/include/private/gc_pmark.h + +gc.a: $(OBJS) + $(AR) ru gc.a $(OBJS) + $(RANLIB) gc.a + +cords: $(CORD_OBJS) cord/cordtest.exe + $(AR) ru gc.a $(CORD_OBJS) + $(RANLIB) gc.a + cp $(srcdir)/cord/cord.h include/cord.h + cp $(srcdir)/cord/ec.h include/ec.h + cp $(srcdir)/cord/cord_pos.h include/cord_pos.h + +gc_cpp.o: $(srcdir)/gc_cpp.cc $(srcdir)/gc_cpp.h + $(CXX) -c -O $(srcdir)/gc_cpp.cc + +c++: gc_cpp.o $(srcdir)/gc_cpp.h + $(AR) ru gc.a gc_cpp.o + $(RANLIB) gc.a + cp $(srcdir)/gc_cpp.h include/gc_cpp.h + +mach_dep.o: $(srcdir)/mach_dep.c + $(CC) -o mach_dep.o -c $(SPECIALCFLAGS) $(srcdir)/mach_dep.c + +mark_rts.o: $(srcdir)/mark_rts.c + $(CC) -o mark_rts.o -c $(CFLAGS) $(srcdir)/mark_rts.c + +cord/cordbscs.o: $(srcdir)/cord/cordbscs.c $(CORD_INCLUDE_FILES) + $(CC) $(CFLAGS) -c $(srcdir)/cord/cordbscs.c -o cord/cordbscs.o + +cord/cordxtra.o: $(srcdir)/cord/cordxtra.c $(CORD_INCLUDE_FILES) + $(CC) $(CFLAGS) -c $(srcdir)/cord/cordxtra.c -o cord/cordxtra.o + +cord/cordprnt.o: $(srcdir)/cord/cordprnt.c $(CORD_INCLUDE_FILES) + $(CC) $(CFLAGS) -c $(srcdir)/cord/cordprnt.c -o cord/cordprnt.o + +cord/cordtest.exe: $(srcdir)/cord/cordtest.c $(CORD_OBJS) gc.a + $(CC) $(CFLAGS) -o cord/cordtest.exe $(srcdir)/cord/cordtest.c $(CORD_OBJS) gc.a + +cord/de.exe: $(srcdir)/cord/de.c $(srcdir)/cord/cordbscs.o $(srcdir)/cord/cordxtra.o gc.a + $(CC) $(CFLAGS) -o cord/de.exe $(srcdir)/cord/de.c $(srcdir)/cord/cordbscs.o $(srcdir)/cord/cordxtra.o gc.a $(CURSES) + +clean: + rm -f gc.a tests/test.o gctest.exe output-local output-diff $(OBJS) \ + setjmp_test mon.out gmon.out a.out core \ + $(CORD_OBJS) cord/cordtest.exe cord/de.exe + -rm -f *~ + +gctest.exe: tests/test.o gc.a + $(CC) $(CFLAGS) -o gctest.exe tests/test.o gc.a + +# If an optimized setjmp_test generates a segmentation fault, +# odds are your compiler is broken. Gctest may still work. +# Try compiling setjmp_t.c unoptimized. +setjmp_test.exe: $(srcdir)/setjmp_t.c $(srcdir)/gc.h + $(CC) $(CFLAGS) -o setjmp_test.exe $(srcdir)/setjmp_t.c + +test: setjmp_test.exe gctest.exe + ./setjmp_test + ./gctest + make cord/cordtest.exe + cord/cordtest diff --git a/mosesdecoder/jam-files/engine/boehm_gc/MacOS.c b/mosesdecoder/jam-files/engine/boehm_gc/MacOS.c new file mode 100644 index 0000000000000000000000000000000000000000..b56bea782b9b2238f3f0dc7d6e4e2bb98b810ae7 --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/MacOS.c @@ -0,0 +1,156 @@ +/* + MacOS.c + + Some routines for the Macintosh OS port of the Hans-J. Boehm, Alan J. Demers + garbage collector. + + + + 11/22/94 pcb StripAddress the temporary memory handle for 24-bit mode. + 11/30/94 pcb Tracking all memory usage so we can deallocate it all at once. + 02/10/96 pcb Added routine to perform a final collection when +unloading shared library. + + by Patrick C. Beard. + */ +/* Boehm, February 15, 1996 2:55 pm PST */ + +#include +#include +#include +#include +#include +#include + +#include "gc.h" +#include "gc_priv.h" + +// use 'CODE' resource 0 to get exact location of the beginning of global space. + +typedef struct { + unsigned long aboveA5; + unsigned long belowA5; + unsigned long JTSize; + unsigned long JTOffset; +} *CodeZeroPtr, **CodeZeroHandle; + +void* GC_MacGetDataStart() +{ + CodeZeroHandle code0 = (CodeZeroHandle)GetResource('CODE', 0); + if (code0) { + long belowA5Size = (**code0).belowA5; + ReleaseResource((Handle)code0); + return (LMGetCurrentA5() - belowA5Size); + } + fprintf(stderr, "Couldn't load the jump table."); + exit(-1); + return 0; +} + +/* track the use of temporary memory so it can be freed all at once. */ + +typedef struct TemporaryMemoryBlock TemporaryMemoryBlock, **TemporaryMemoryHandle; + +struct TemporaryMemoryBlock { + TemporaryMemoryHandle nextBlock; + char data[]; +}; + +static TemporaryMemoryHandle theTemporaryMemory = NULL; +static Boolean firstTime = true; + +void GC_MacFreeTemporaryMemory(void); + +Ptr GC_MacTemporaryNewPtr(size_t size, Boolean clearMemory) +{ + static Boolean firstTime = true; + OSErr result; + TemporaryMemoryHandle tempMemBlock; + Ptr tempPtr = nil; + + tempMemBlock = (TemporaryMemoryHandle)TempNewHandle(size + sizeof(TemporaryMemoryBlock), &result); + if (tempMemBlock && result == noErr) { + HLockHi((Handle)tempMemBlock); + tempPtr = (**tempMemBlock).data; + if (clearMemory) memset(tempPtr, 0, size); + tempPtr = StripAddress(tempPtr); + + // keep track of the allocated blocks. + (**tempMemBlock).nextBlock = theTemporaryMemory; + theTemporaryMemory = tempMemBlock; + } + +# if !defined(SHARED_LIBRARY_BUILD) + // install an exit routine to clean up the memory used at the end. + if (firstTime) { + atexit(&GC_MacFreeTemporaryMemory); + firstTime = false; + } +# endif + + return tempPtr; +} + +extern word GC_fo_entries; + +static void perform_final_collection() +{ + unsigned i; + word last_fo_entries = 0; + + /* adjust the stack bottom, because CFM calls us from another stack + location. */ + GC_stackbottom = (ptr_t)&i; + + /* try to collect and finalize everything in sight */ + for (i = 0; i < 2 || GC_fo_entries < last_fo_entries; i++) { + last_fo_entries = GC_fo_entries; + GC_gcollect(); + } +} + + +void GC_MacFreeTemporaryMemory() +{ +# if defined(SHARED_LIBRARY_BUILD) + /* if possible, collect all memory, and invoke all finalizers. */ + perform_final_collection(); +# endif + + if (theTemporaryMemory != NULL) { + long totalMemoryUsed = 0; + TemporaryMemoryHandle tempMemBlock = theTemporaryMemory; + while (tempMemBlock != NULL) { + TemporaryMemoryHandle nextBlock = (**tempMemBlock).nextBlock; + totalMemoryUsed += GetHandleSize((Handle)tempMemBlock); + DisposeHandle((Handle)tempMemBlock); + tempMemBlock = nextBlock; + } + theTemporaryMemory = NULL; + +# if !defined(SHARED_LIBRARY_BUILD) + if (GC_print_stats) { + fprintf(stdout, "[total memory used: %ld bytes.]\n", + totalMemoryUsed); + fprintf(stdout, "[total collections: %ld.]\n", GC_gc_no); + } +# endif + } +} + +#if __option(far_data) + + void* GC_MacGetDataEnd() + { + CodeZeroHandle code0 = (CodeZeroHandle)GetResource('CODE', 0); + if (code0) { + long aboveA5Size = (**code0).aboveA5; + ReleaseResource((Handle)code0); + return (LMGetCurrentA5() + aboveA5Size); + } + fprintf(stderr, "Couldn't load the jump table."); + exit(-1); + return 0; + } + +#endif /* __option(far_data) */ diff --git a/mosesdecoder/jam-files/engine/boehm_gc/config.sub b/mosesdecoder/jam-files/engine/boehm_gc/config.sub new file mode 100644 index 0000000000000000000000000000000000000000..70584b007e2bf2d71a9bfce59815174f56653dc0 --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/config.sub @@ -0,0 +1,1608 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2006-06-06' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/mosesdecoder/jam-files/engine/boehm_gc/configure.ac b/mosesdecoder/jam-files/engine/boehm_gc/configure.ac new file mode 100644 index 0000000000000000000000000000000000000000..7922b13fc46a3b21f9e62a9a8080f93654882e93 --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/configure.ac @@ -0,0 +1,658 @@ +# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved. +# +# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED +# OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +# +# Permission is hereby granted to use or copy this program +# for any purpose, provided the above notices are retained on all copies. +# Permission to modify the code and to distribute modified code is granted, +# provided the above notices are retained, and a notice that the code was +# modified is included with the above copyright notice. +# +# Original author: Tom Tromey +# Modified by: Grzegorz Jakacki + +dnl Process this file with autoconf to produce configure. + +# Initialization +# ============== + +AC_INIT(gc,7.0,Hans.Boehm@hp.com) + ## version must conform to [0-9]+[.][0-9]+(alpha[0-9]+)? +AC_CONFIG_SRCDIR(gcj_mlc.c) +AC_CANONICAL_TARGET +AC_PREREQ(2.53) +AC_REVISION($Revision: 1.25 $) +GC_SET_VERSION +AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects nostdinc]) +AM_MAINTAINER_MODE + +AC_SUBST(PACKAGE) +AC_SUBST(GC_VERSION) + +AM_PROG_CC_C_O +AC_PROG_CXX + +AM_PROG_AS +## FIXME: really needed? (AC_LIBTOOL already provides this) +AC_CHECK_TOOL(AR, ar) +AC_CHECK_TOOL(RANLIB, ranlib, :) # :) + +AC_PROG_INSTALL + +. ${srcdir}/configure.host + +GC_CFLAGS=${gc_cflags} +AC_SUBST(GC_CFLAGS) + +AC_ARG_ENABLE(threads, + [AC_HELP_STRING([--enable-threads=TYPE], [choose threading package])], + THREADS=$enableval, + [ AC_MSG_CHECKING([for thread model used by GCC]) + THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` + if test -z "$THREADS"; then + THREADS=no + fi + AC_MSG_RESULT([$THREADS]) ]) + +AC_ARG_ENABLE(parallel-mark, + [AC_HELP_STRING([--enable-parallel-mark], + [parallelize marking and free list construction])], + [case "$THREADS" in + no | none | single) + AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec]) + ;; + esac ] +) + +AC_ARG_ENABLE(cplusplus, + [AC_HELP_STRING([--enable-cplusplus], [install C++ support])]) + +INCLUDES=-I${srcdir}/include +THREADDLLIBS= +need_atomic_ops_asm=false +## Libraries needed to support dynamic loading and/or threads. +case "$THREADS" in + no | none | single) + THREADS=none + ;; + posix | pthreads) + THREADS=posix + THREADDLLIBS=-lpthread + case "$host" in + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha-*-linux*) + AC_DEFINE(GC_LINUX_THREADS) + AC_DEFINE(_REENTRANT) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_MSG_WARN("Explict GC_INIT() calls may be required."); + ;; + *-*-linux*) + AC_DEFINE(GC_LINUX_THREADS) + AC_DEFINE(_REENTRANT) + ;; + *-*-aix*) + AC_DEFINE(GC_AIX_THREADS) + AC_DEFINE(_REENTRANT) + ;; + *-*-hpux11*) + AC_MSG_WARN("Only HP/UX 11 POSIX threads are supported.") + AC_DEFINE(GC_HPUX_THREADS) + AC_DEFINE(_POSIX_C_SOURCE,199506L) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_MSG_WARN("Explict GC_INIT() calls may be required."); + THREADDLLIBS="-lpthread -lrt" + # HPUX needs REENTRANT for the _r calls. + AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads]) + ;; + *-*-hpux10*) + AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.") + ;; + *-*-freebsd*) + AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.") + AC_DEFINE(GC_FREEBSD_THREADS) + INCLUDES="$INCLUDES -pthread" + ;; + *-*-kfreebsd*-gnu) + AC_DEFINE(GC_FREEBSD_THREADS) + INCLUDES="$INCLUDES -pthread" + THREADDLLIBS=-pthread + AC_DEFINE(_REENTRANT) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_DEFINE(USE_COMPILER_TLS) + ;; + *-*-gnu*) + AC_DEFINE(GC_GNU_THREADS) + AC_DEFINE(_REENTRANT) + AC_DEFINE(THREAD_LOCAL_ALLOC) + ;; + *-*-netbsd*) + AC_MSG_WARN("Only on NetBSD 2.0 or later.") + AC_DEFINE(GC_NETBSD_THREADS) + AC_DEFINE(_REENTRANT) + AC_DEFINE(_PTHREADS) + THREADDLLIBS="-lpthread -lrt" + ;; + *-*-solaris*) + AC_DEFINE(GC_SOLARIS_THREADS) + AC_DEFINE(THREAD_LOCAL_ALLOC) + THREADDLLIBS="-lpthread -lrt" + if test "$GCC" != yes; then + CFLAGS="$CFLAGS -O" + need_atomic_ops_asm=true + fi + ;; + *-*-irix*) + AC_DEFINE(GC_IRIX_THREADS) + ;; + *-*-cygwin*) + AC_DEFINE(GC_WIN32_THREADS) + AC_DEFINE(THREAD_LOCAL_ALLOC) + win32_threads=true + ;; + *-*-darwin*) + AC_DEFINE(GC_DARWIN_THREADS) + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_MSG_WARN("Explict GC_INIT() calls may be required."); + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + darwin_threads=true + ;; + *-*-osf*) + AC_DEFINE(GC_OSF1_THREADS) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_MSG_WARN("Explict GC_INIT() calls may be required."); + # May want to enable it in other cases, too. + # Measurements havent yet been done. + fi + INCLUDES="$INCLUDES -pthread" + THREADDLLIBS="-lpthread -lrt" + ;; + *) + AC_MSG_ERROR("Pthreads not supported by the GC on this platform.") + ;; + esac + ;; + win32) + AC_DEFINE(GC_WIN32_THREADS) + dnl Wine getenv may not return NULL for missing entry + AC_DEFINE(NO_GETENV) + ;; + dgux386) + THREADS=dgux386 + AC_MSG_RESULT($THREADDLLIBS) + # Use pthread GCC switch + THREADDLLIBS=-pthread + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_MSG_WARN("Explict GC_INIT() calls may be required."); + AC_DEFINE(GC_DGUX386_THREADS) + AC_DEFINE(DGUX_THREADS) + # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread + INCLUDES="-pthread $INCLUDES" + ;; + aix) + THREADS=posix + THREADDLLIBS=-lpthread + AC_DEFINE(GC_AIX_THREADS) + AC_DEFINE(_REENTRANT) + ;; + decosf1 | irix | mach | os2 | solaris | dce | vxworks) + AC_MSG_ERROR(thread package $THREADS not yet supported) + ;; + *) + AC_MSG_ERROR($THREADS is an unknown thread package) + ;; +esac +AC_SUBST(THREADDLLIBS) +AM_CONDITIONAL(THREADS, test x$THREADS != xnone) +AM_CONDITIONAL(PTHREADS, test x$THREADS = xposix) +AM_CONDITIONAL(DARWIN_THREADS, test x$darwin_threads = xtrue) +AM_CONDITIONAL(WIN32_THREADS, test x$win32_threads = xtrue) + +case "$host" in + powerpc-*-darwin*) + powerpc_darwin=true + ;; +esac + +# Darwin needs a few extra special tests to deal with variation in the +# system headers. +case "$host" in + powerpc*-*-darwin*) + AC_CHECK_MEMBER(ppc_thread_state_t.r0, + AC_DEFINE(HAS_PPC_THREAD_STATE_R0,1, + [ppc_thread_state_t has field r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state_t.__r0, + AC_DEFINE(HAS_PPC_THREAD_STATE___R0,1,dnl + [ppc_thread_state_t has field __r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state64_t.r0, + AC_DEFINE(HAS_PPC_THREAD_STATE64_R0,1,dnl + [ppc_thread_state64_t has field r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state64_t.__r0, + AC_DEFINE(HAS_PPC_THREAD_STATE64___R0,1,dnl + [ppc_thread_state64_t has field __r0]),, + [#include ]) + ;; + i?86*-*-darwin*) + AC_CHECK_MEMBER(x86_thread_state32_t.eax, + AC_DEFINE(HAS_X86_THREAD_STATE32_EAX,1,dnl + [x86_thread_state32_t has field eax]),, + [#include + #include ]) + AC_CHECK_MEMBER(x86_thread_state32_t.__eax, + AC_DEFINE(HAS_X86_THREAD_STATE32___EAX,1,dnl + [x86_thread_state32_t has field __eax]),, + [#include + #include ]) + ;; + x86_64-*-darwin*) + AC_CHECK_MEMBER(x86_thread_state64_t.rax, + AC_DEFINE(HAS_X86_THREAD_STATE64_RAX,1,dnl + [x86_thread_state64_t has field rax]),, + [#include + #include ]) + AC_CHECK_MEMBER(x86_thread_state64_t.__rax, + AC_DEFINE(HAS_X86_THREAD_STATE64___RAX,1,dnl + [x86_thread_state64_t has field __rax]),, + [#include + #include ]) + ;; + *) ;; +esac + +AC_MSG_CHECKING(for xlc) +AC_TRY_COMPILE([],[ + #ifndef __xlC__ + # error + #endif +], [compiler_xlc=yes], [compiler_xlc=no]) +AC_MSG_RESULT($compiler_xlc) +AM_CONDITIONAL(COMPILER_XLC,test $compiler_xlc = yes) +if test $compiler_xlc = yes -a "$powerpc_darwin" = true; then + # the darwin stack-frame-walking code is completely broken on xlc + AC_DEFINE(DARWIN_DONT_PARSE_STACK) +fi + +# We never want libdl on darwin. It is a fake libdl that just ends up making +# dyld calls anyway +case "$host" in + *-*-darwin*) ;; + *) + AC_CHECK_LIB(dl, dlopen, THREADDLLIBS="$THREADDLLIBS -ldl") + ;; +esac + +# extra LD Flags which are required for targets +case "${host}" in + *-*-darwin*) + extra_ldflags_libgc=-Wl,-single_module + ;; +esac +AC_SUBST(extra_ldflags_libgc) + +AC_SUBST(EXTRA_TEST_LIBS) + +target_all=libgc.la +AC_SUBST(target_all) + +dnl If the target is an eCos system, use the appropriate eCos +dnl I/O routines. +dnl FIXME: this should not be a local option but a global target +dnl system; at present there is no eCos target. +TARGET_ECOS="no" +AC_ARG_WITH(ecos, +[ --with-ecos enable runtime eCos target support], +TARGET_ECOS="$with_ecos" +) + +addobjs= +addlibs= +CXXINCLUDES= +case "$TARGET_ECOS" in + no) + ;; + *) + AC_DEFINE(ECOS) + CXXINCLUDES="-I${TARGET_ECOS}/include" + addobjs="$addobjs ecos.lo" + ;; +esac + +AM_CONDITIONAL(CPLUSPLUS, test "${enable_cplusplus}" = yes) + +AC_SUBST(CXX) + +AC_SUBST(INCLUDES) +AC_SUBST(CXXINCLUDES) + +# Configuration of shared libraries +# +AC_MSG_CHECKING(whether to build shared libraries) +AC_ENABLE_SHARED + +case "$host" in + alpha-*-openbsd*) + enable_shared=no + AC_MSG_RESULT(no) + ;; + *) + AC_MSG_RESULT(yes) + ;; +esac + +# Configuration of machine-dependent code +# +AC_MSG_CHECKING(which machine-dependent code should be used) +machdep= +case "$host" in + alpha-*-openbsd*) + machdep="mach_dep.lo" + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then + AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled) + fi + ;; + alpha*-*-linux*) + machdep="mach_dep.lo" + ;; + i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?) + AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED) + ;; + mipstx39-*-elf*) + machdep="mach_dep.lo" + AC_DEFINE(STACKBASE, __stackbase) + AC_DEFINE(DATASTART_IS_ETEXT) + ;; + mips-dec-ultrix*) + machdep="mach-dep.lo" + ;; + mips-nec-sysv*|mips-unknown-sysv*) + ;; + mips*-*-linux*) + ;; + mips-*-*) + machdep="mach_dep.lo" + dnl AC_DEFINE(NO_EXECUTE_PERMISSION) + dnl This is now redundant, but it is also important for incremental GC + dnl performance under Irix. + ;; + sparc-*-netbsd*) + machdep="mach_dep.lo sparc_netbsd_mach_dep.lo" + ;; + sparc-sun-solaris2.3) + machdep="mach_dep.lo sparc_mach_dep.lo" + AC_DEFINE(SUNOS53_SHARED_LIB) + ;; + sparc*-sun-solaris2.*) + machdep="mach_dep.lo sparc_mach_dep.lo" + ;; + ia64-*-*) + machdep="mach_dep.lo ia64_save_regs_in_stack.lo" + ;; +esac +if test x"$machdep" = x; then +AC_MSG_RESULT($machdep) + machdep="mach_dep.lo" +fi +addobjs="$addobjs $machdep" +AC_SUBST(addobjs) +AC_SUBST(addlibs) + +AC_PROG_LIBTOOL + +# +# Check for AViiON Machines running DGUX +# +ac_is_dgux=no +AC_CHECK_HEADER(sys/dg_sys_info.h, +[ac_is_dgux=yes;]) + + ## :GOTCHA: we do not check anything but sys/dg_sys_info.h +if test $ac_is_dgux = yes; then + if test "$enable_full_debug" = "yes"; then + CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + else + CFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + CXXFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" + fi + AC_SUBST(CFLAGS) + AC_SUBST(CXXFLAGS) +fi + +dnl We use these options to decide which functions to include. +AC_ARG_WITH(target-subdir, +[ --with-target-subdir=SUBDIR + configuring with a cross compiler]) +AC_ARG_WITH(cross-host, +[ --with-cross-host=HOST configuring with a cross compiler]) + +# automake wants to see AC_EXEEXT. But we don't need it. And having +# it is actually a problem, because the compiler we're passed can't +# necessarily do a full link. So we fool automake here. +if false; then + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands + # to nothing, so nothing would remain between `then' and `fi' if it + # were not for the `:' below. + : + AC_EXEEXT +fi + +dnl As of 4.13a2, the collector will not properly work on Solaris when +dnl built with gcc and -O. So we remove -O in the appropriate case. +dnl Not needed anymore on Solaris. +AC_MSG_CHECKING(whether Solaris gcc optimization fix is necessary) +case "$host" in + *aix*) + if test "$GCC" = yes; then + AC_MSG_RESULT(yes) + new_CFLAGS= + for i in $CFLAGS; do + case "$i" in + -O*) + ;; + *) + new_CFLAGS="$new_CFLAGS $i" + ;; + esac + done + CFLAGS="$new_CFLAGS" + else + AC_MSG_RESULT(no) + fi + ;; + *) AC_MSG_RESULT(no) ;; +esac + +dnl Include defines that have become de facto standard. +dnl ALL_INTERIOR_POINTERS can be overridden in startup code. +AC_DEFINE(NO_EXECUTE_PERMISSION) +AC_DEFINE(ALL_INTERIOR_POINTERS) + + +dnl Interface Selection +dnl ------------------- +dnl +dnl By default, make the library as general as possible. +dnl enable_gcj_support=no +AC_ARG_ENABLE(gcj-support, + [AC_HELP_STRING([--disable-gcj-support], + [Disable support for gcj.])]) +AM_CONDITIONAL(ENABLE_GCJ_SUPPORT, + [test x"$enable_gcj_support" != xno]) +if test x"$enable_gcj_support" != xno; then + AC_DEFINE(GC_GCJ_SUPPORT, 1, [Define to include support for gcj]) +fi + +AC_ARG_ENABLE(java-finalization, + [AC_HELP_STRING([--disable-java-finalization], + [Disable support for java finalization.])]) +if test x"$enable_java_finalization" != xno; then + AC_DEFINE(JAVA_FINALIZATION) +fi + +AC_ARG_ENABLE(atomic-uncollectable, + [AC_HELP_STRING([--disable-atomic-uncollectible], + [Disable support for atomic uncollectible allocation.])]) +if test x"$enable_atomic_uncollectible" != x"no"; then + AC_DEFINE(ATOMIC_UNCOLLECTABLE, 1, + [Define to enable atomic uncollectible allocation.]) +fi + +AC_ARG_ENABLE(redirect-malloc, + [AC_HELP_STRING([--enable-redirect-malloc], + [Redirect malloc and friends to GC routines])]) + +if test "${enable_redirect_malloc}" = yes; then + if test "${enable_full_debug}" = yes; then + AC_DEFINE(REDIRECT_MALLOC, GC_debug_malloc_replacement) + AC_DEFINE(REDIRECT_REALLOC, GC_debug_realloc_replacement) + AC_DEFINE(REDIRECT_FREE, GC_debug_free) + else + AC_DEFINE(REDIRECT_MALLOC, GC_malloc) + fi +fi + +AC_ARG_ENABLE(large-config, + [AC_HELP_STRING([--enable-large-config], + [Optimize for large (> 100 MB) heap or root set])]) + +if test "${enable_large_config}" = yes; then + AC_DEFINE(LARGE_CONFIG, 1, [Define to optimize for large heaps or root sets]) +fi + +dnl This is something of a hack. When cross-compiling we turn off +dnl some functionality. We also enable the "small" configuration. +dnl These is only correct when targetting an embedded system. FIXME. +if test -n "${with_cross_host}"; then + AC_DEFINE(NO_CLOCK) + AC_DEFINE(SMALL_CONFIG) + AC_DEFINE(NO_DEBUGGING) +fi + + +dnl Debugging +dnl --------- + +UNWINDLIBS= +AC_ARG_ENABLE(gc-debug, +[AC_HELP_STRING([--enable-gc-debug], + [include full support for pointer backtracing etc.])], +[ if test "$enable_gc_debug" = "yes"; then + AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.") + AC_DEFINE(KEEP_BACK_PTRS) + AC_DEFINE(DBG_HDRS_ALL) + case $host in + ia64-*-linux* ) + AC_DEFINE(MAKE_BACK_GRAPH) + AC_DEFINE(SAVE_CALL_COUNT, 8) + AC_CHECK_LIB(unwind, backtrace, [ + AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE) + UNWINDLIBS=-lunwind + AC_MSG_WARN("Client code may need to link against libunwind.") + ]) + ;; + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) + AC_DEFINE(MAKE_BACK_GRAPH) + AC_MSG_WARN("Client must not use -fomit-frame-pointer.") + AC_DEFINE(SAVE_CALL_COUNT, 8) + ;; + i[3456]86-*-dgux*) + AC_DEFINE(MAKE_BACK_GRAPH) + ;; + esac ] + fi) + +AC_SUBST(UNWINDLIBS) + +AC_ARG_ENABLE(gc-assertions, + [AC_HELP_STRING([--enable-gc-assertions], + [collector-internal assertion checking])]) +if test "${enable_gc_assertions}" = yes; then + AC_DEFINE(GC_ASSERTIONS) +fi + +AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") + + +dnl Atomic Ops +dnl ---------- + +atomic_ops_libs=-latomic_ops +AC_CHECK_HEADER(atomic_ops.h, + [ AC_MSG_NOTICE([Using pre-installed libatomic_ops]) ], + [ ao_dir= + for candidate in ${srcdir}/libatomic_ops*; do + case $candidate in + *.tar.gz) + ;; + *install) + dnl generated by alternate Makefile. + ;; + *) + if test -e "$candidate"; then + ao_dir="$candidate" + fi + ;; + esac + done + if test -z "$ao_dir"; then + AC_MSG_ERROR([Missig libatomic_ops.]) + fi + ao_version="${ao_dir#*libatomic_ops-}" + AC_MSG_NOTICE([Using internal version of libatomic_ops]) + + dnl Automake does not accept shell variables in AC_CONFIG_SUBDIRS + test -e ${srcdir}/libatomic_ops \ + || ln -s ${ao_dir} ${srcdir}/libatomic_ops + AC_CONFIG_SUBDIRS(libatomic_ops) + + dnl Also copy the source files to be linked in. + test -e ${srcdir}/atomic_ops.c \ + || ln -s ${srcdir}/libatomic_ops/src/atomic_ops.c \ + ${srcdir}/atomic_ops.c + + test -e ${srcdir}/atomic_ops_sysdeps.S \ + || ln -s ${srcdir}/libatomic_ops/src/atomic_ops_sysdeps.S \ + ${srcdir}/atomic_ops_sysdeps.S + + dnl This gets the source include files, which is often close enough. + dnl It also makes atomic_ops_sysdeps.S assemble. + GC_CFLAGS="${GC_CFLAGS} -I \$(top_srcdir)/libatomic_ops/src" + maybe_libatomic_ops="libatomic_ops" + ]) + +AM_CONDITIONAL(USE_INTERNAL_LIBATOMIC_OPS, + test -n "$maybe_libatomic_ops" -a "$THREADS" != "none") +AM_CONDITIONAL(NEED_ATOMIC_OPS_ASM, test -n "$maybe_libatomic_ops" -a x$need_atomic_ops_asm = xtrue) +AC_SUBST(atomic_ops_libs) + +dnl Produce the Files +dnl ----------------- + +AC_CONFIG_FILES([Makefile bdw-gc.pc]) + +AC_CONFIG_COMMANDS([default],, + [ srcdir=${srcdir} + host=${host} + CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + CC="${CC}" + DEFS="$DEFS" ]) + +AC_OUTPUT diff --git a/mosesdecoder/jam-files/engine/boehm_gc/gc_dlopen.c b/mosesdecoder/jam-files/engine/boehm_gc/gc_dlopen.c new file mode 100644 index 0000000000000000000000000000000000000000..51659d1e8236fccb3ca44a394eccb6014f716698 --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/gc_dlopen.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. + * Copyright (c) 1997 by Silicon Graphics. All rights reserved. + * Copyright (c) 2000 by Hewlett-Packard Company. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + * + * Original author: Bill Janssen + * Heavily modified by Hans Boehm and others + */ + +/* + * This used to be in dyn_load.c. It was extracted into a separate file + * to avoid having to link against libdl.{a,so} if the client doesn't call + * dlopen. Of course this fails if the collector is in a dynamic + * library. -HB + */ + +#include "private/gc_priv.h" + +# if (defined(GC_PTHREADS) && !defined(GC_DARWIN_THREADS)) && !defined(GC_WIN32_PTHREADS)\ + || defined(GC_SOLARIS_THREADS) + +# if defined(dlopen) && !defined(GC_USE_LD_WRAP) + /* To support various threads pkgs, gc.h interposes on dlopen by */ + /* defining "dlopen" to be "GC_dlopen", which is implemented below. */ + /* However, both GC_FirstDLOpenedLinkMap() and GC_dlopen() use the */ + /* real system dlopen() in their implementation. We first remove */ + /* gc.h's dlopen definition and restore it later, after GC_dlopen(). */ +# undef dlopen +# endif + + /* Make sure we're not in the middle of a collection, and make */ + /* sure we don't start any. Returns previous value of GC_dont_gc. */ + /* This is invoked prior to a dlopen call to avoid synchronization */ + /* issues. We can't just acquire the allocation lock, since startup */ + /* code in dlopen may try to allocate. */ + /* This solution risks heap growth in the presence of many dlopen */ + /* calls in either a multithreaded environment, or if the library */ + /* initialization code allocates substantial amounts of GC'ed memory. */ + /* But I don't know of a better solution. */ + static void disable_gc_for_dlopen() + { + LOCK(); + while (GC_incremental && GC_collection_in_progress()) { + GC_collect_a_little_inner(1000); + } + ++GC_dont_gc; + UNLOCK(); + } + + /* Redefine dlopen to guarantee mutual exclusion with */ + /* GC_register_dynamic_libraries. */ + /* Should probably happen for other operating systems, too. */ + +#include + +#ifdef GC_USE_LD_WRAP + void * __wrap_dlopen(const char *path, int mode) +#else + void * GC_dlopen(const char *path, int mode) +#endif +{ + void * result; + +# ifndef USE_PROC_FOR_LIBRARIES + disable_gc_for_dlopen(); +# endif +# ifdef GC_USE_LD_WRAP + result = (void *)__real_dlopen(path, mode); +# else + result = dlopen(path, mode); +# endif +# ifndef USE_PROC_FOR_LIBRARIES + GC_enable(); /* undoes disable_gc_for_dlopen */ +# endif + return(result); +} +# endif /* GC_PTHREADS || GC_SOLARIS_THREADS ... */ + + + diff --git a/mosesdecoder/jam-files/engine/boehm_gc/gcname.c b/mosesdecoder/jam-files/engine/boehm_gc/gcname.c new file mode 100644 index 0000000000000000000000000000000000000000..e2119d7996402c70352796c363867d7841118b87 --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/gcname.c @@ -0,0 +1,13 @@ +#include +#include "version.h" + +int main() +{ + if (GC_ALPHA_VERSION == GC_NOT_ALPHA) { + printf("gc%d.%d", GC_VERSION_MAJOR, GC_VERSION_MINOR); + } else { + printf("gc%d.%dalpha%d", GC_VERSION_MAJOR, + GC_VERSION_MINOR, GC_ALPHA_VERSION); + } + return 0; +} diff --git a/mosesdecoder/jam-files/engine/boehm_gc/ltmain.sh b/mosesdecoder/jam-files/engine/boehm_gc/ltmain.sh new file mode 100644 index 0000000000000000000000000000000000000000..06823e057a578f95dabd0f233875dcf0553173c7 --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/ltmain.sh @@ -0,0 +1,6863 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.22 +TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + fi + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -pg pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ + -t[45]*|-txscale*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + else + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/mosesdecoder/jam-files/engine/boehm_gc/mach_dep.c b/mosesdecoder/jam-files/engine/boehm_gc/mach_dep.c new file mode 100644 index 0000000000000000000000000000000000000000..4f05843c63588d7b136e2999d171e5d98914dd37 --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/mach_dep.c @@ -0,0 +1,242 @@ +/* + * Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers + * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ +/* Boehm, November 17, 1995 12:13 pm PST */ +# include "private/gc_priv.h" +# include +# include +# if defined(OS2) || defined(CX_UX) +# define _setjmp(b) setjmp(b) +# define _longjmp(b,v) longjmp(b,v) +# endif +# ifdef AMIGA +# ifndef __GNUC__ +# include +# else +# include +# endif +# endif + +#if defined(__MWERKS__) && !defined(POWERPC) + +asm static void PushMacRegisters() +{ + sub.w #4,sp // reserve space for one parameter. + move.l a2,(sp) + jsr GC_push_one + move.l a3,(sp) + jsr GC_push_one + move.l a4,(sp) + jsr GC_push_one +# if !__option(a6frames) + // perhaps a6 should be pushed if stack frames are not being used. + move.l a6,(sp) + jsr GC_push_one +# endif + // skip a5 (globals), a6 (frame pointer), and a7 (stack pointer) + move.l d2,(sp) + jsr GC_push_one + move.l d3,(sp) + jsr GC_push_one + move.l d4,(sp) + jsr GC_push_one + move.l d5,(sp) + jsr GC_push_one + move.l d6,(sp) + jsr GC_push_one + move.l d7,(sp) + jsr GC_push_one + add.w #4,sp // fix stack. + rts +} + +#endif /* __MWERKS__ */ + +# if defined(SPARC) || defined(IA64) + /* Value returned from register flushing routine; either sp (SPARC) */ + /* or ar.bsp (IA64) */ + ptr_t GC_save_regs_ret_val; +# endif + +/* Routine to mark from registers that are preserved by the C compiler. */ +/* This must be ported to every new architecture. It is noe optional, */ +/* and should not be used on platforms that are either UNIX-like, or */ +/* require thread support. */ + +#undef HAVE_PUSH_REGS + +#if defined(USE_ASM_PUSH_REGS) +# define HAVE_PUSH_REGS +#else /* No asm implementation */ +void GC_push_regs() +{ +# if defined(M68K) && defined(AMIGA) + /* AMIGA - could be replaced by generic code */ + /* a0, a1, d0 and d1 are caller save */ + +# ifdef __GNUC__ + asm("subq.w &0x4,%sp"); /* allocate word on top of stack */ + + asm("mov.l %a2,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %a3,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %a4,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %a5,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %a6,(%sp)"); asm("jsr _GC_push_one"); + /* Skip frame pointer and stack pointer */ + asm("mov.l %d2,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %d3,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %d4,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %d5,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %d6,(%sp)"); asm("jsr _GC_push_one"); + asm("mov.l %d7,(%sp)"); asm("jsr _GC_push_one"); + + asm("addq.w &0x4,%sp"); /* put stack back where it was */ +# define HAVE_PUSH_REGS +# else /* !__GNUC__ */ + GC_push_one(getreg(REG_A2)); + GC_push_one(getreg(REG_A3)); +# ifndef __SASC + /* Can probably be changed to #if 0 -Kjetil M. (a4=globals)*/ + GC_push_one(getreg(REG_A4)); +# endif + GC_push_one(getreg(REG_A5)); + GC_push_one(getreg(REG_A6)); + /* Skip stack pointer */ + GC_push_one(getreg(REG_D2)); + GC_push_one(getreg(REG_D3)); + GC_push_one(getreg(REG_D4)); + GC_push_one(getreg(REG_D5)); + GC_push_one(getreg(REG_D6)); + GC_push_one(getreg(REG_D7)); +# define HAVE_PUSH_REGS +# endif /* !__GNUC__ */ +# endif /* AMIGA */ + +# if defined(M68K) && defined(MACOS) +# if defined(THINK_C) +# define PushMacReg(reg) \ + move.l reg,(sp) \ + jsr GC_push_one + asm { + sub.w #4,sp ; reserve space for one parameter. + PushMacReg(a2); + PushMacReg(a3); + PushMacReg(a4); + ; skip a5 (globals), a6 (frame pointer), and a7 (stack pointer) + PushMacReg(d2); + PushMacReg(d3); + PushMacReg(d4); + PushMacReg(d5); + PushMacReg(d6); + PushMacReg(d7); + add.w #4,sp ; fix stack. + } +# define HAVE_PUSH_REGS +# undef PushMacReg +# endif /* THINK_C */ +# if defined(__MWERKS__) + PushMacRegisters(); +# define HAVE_PUSH_REGS +# endif /* __MWERKS__ */ +# endif /* MACOS */ +} +#endif /* !USE_ASM_PUSH_REGS */ + +#if defined(HAVE_PUSH_REGS) && defined(THREADS) +# error GC_push_regs cannot be used with threads + /* Would fail for GC_do_blocking. There are probably other safety */ + /* issues. */ +# undef HAVE_PUSH_REGS +#endif + +#if !defined(HAVE_PUSH_REGS) && defined(UNIX_LIKE) +# include +#endif + +/* Ensure that either registers are pushed, or callee-save registers */ +/* are somewhere on the stack, and then call fn(arg, ctxt). */ +/* ctxt is either a pointer to a ucontext_t we generated, or NULL. */ +void GC_with_callee_saves_pushed(void (*fn)(ptr_t, void *), + ptr_t arg) +{ + word dummy; + void * context = 0; + +# if defined(HAVE_PUSH_REGS) + GC_push_regs(); +# elif defined(UNIX_LIKE) && !defined(DARWIN) && !defined(ARM32) + /* Older versions of Darwin seem to lack getcontext(). */ + /* ARM Linux often doesn't support a real getcontext(). */ + ucontext_t ctxt; + if (getcontext(&ctxt) < 0) + ABORT ("Getcontext failed: Use another register retrieval method?"); + context = &ctxt; +# if defined(SPARC) || defined(IA64) + /* On a register window machine, we need to save register */ + /* contents on the stack for this to work. This may already be */ + /* subsumed by the getcontext() call. */ + { + GC_save_regs_ret_val = GC_save_regs_in_stack(); + } +# endif /* register windows. */ +# elif defined(HAVE_BUILTIN_UNWIND_INIT) + /* This was suggested by Richard Henderson as the way to */ + /* force callee-save registers and register windows onto */ + /* the stack. */ + __builtin_unwind_init(); +# else /* !HAVE_BUILTIN_UNWIND_INIT && !UNIX_LIKE */ + /* && !HAVE_PUSH_REGS */ + /* Generic code */ + /* The idea is due to Parag Patel at HP. */ + /* We're not sure whether he would like */ + /* to be he acknowledged for it or not. */ + jmp_buf regs; + register word * i = (word *) regs; + register ptr_t lim = (ptr_t)(regs) + (sizeof regs); + + /* Setjmp doesn't always clear all of the buffer. */ + /* That tends to preserve garbage. Clear it. */ + for (; (char *)i < lim; i++) { + *i = 0; + } +# if defined(MSWIN32) || defined(MSWINCE) \ + || defined(UTS4) || defined(LINUX) || defined(EWS4800) + (void) setjmp(regs); +# else + (void) _setjmp(regs); + /* We don't want to mess with signals. According to */ + /* SUSV3, setjmp() may or may not save signal mask. */ + /* _setjmp won't, but is less portable. */ +# endif +# endif /* !HAVE_PUSH_REGS ... */ + fn(arg, context); + /* Strongly discourage the compiler from treating the above */ + /* as a tail-call, since that would pop the register */ + /* contents before we get a chance to look at them. */ + GC_noop1((word)(&dummy)); +} + +void GC_push_regs_and_stack(ptr_t cold_gc_frame) +{ + GC_with_callee_saves_pushed(GC_push_current_stack, cold_gc_frame); +} + +#if defined(ASM_CLEAR_CODE) +# ifdef LINT + /*ARGSUSED*/ + ptr_t GC_clear_stack_inner(arg, limit) + ptr_t arg; word limit; + { return(arg); } + /* The real version is in a .S file */ +# endif +#endif /* ASM_CLEAR_CODE */ diff --git a/mosesdecoder/jam-files/engine/boehm_gc/mark.c b/mosesdecoder/jam-files/engine/boehm_gc/mark.c new file mode 100644 index 0000000000000000000000000000000000000000..3e5c46d1b054ae3bab6a12580675c1acf65c841e --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/mark.c @@ -0,0 +1,1866 @@ + +/* + * Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers + * Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved. + * Copyright (c) 2000 by Hewlett-Packard Company. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + * + */ + + +# include +# include "private/gc_pmark.h" + +#if defined(MSWIN32) && defined(__GNUC__) +# include +#endif + +/* We put this here to minimize the risk of inlining. */ +/*VARARGS*/ +#ifdef __WATCOMC__ + void GC_noop(void *p, ...) {} +#else + void GC_noop() {} +#endif + +/* Single argument version, robust against whole program analysis. */ +void GC_noop1(word x) +{ + static volatile word sink; + + sink = x; +} + +/* mark_proc GC_mark_procs[MAX_MARK_PROCS] = {0} -- declared in gc_priv.h */ + +unsigned GC_n_mark_procs = GC_RESERVED_MARK_PROCS; + +/* Initialize GC_obj_kinds properly and standard free lists properly. */ +/* This must be done statically since they may be accessed before */ +/* GC_init is called. */ +/* It's done here, since we need to deal with mark descriptors. */ +struct obj_kind GC_obj_kinds[MAXOBJKINDS] = { +/* PTRFREE */ { &GC_aobjfreelist[0], 0 /* filled in dynamically */, + 0 | GC_DS_LENGTH, FALSE, FALSE }, +/* NORMAL */ { &GC_objfreelist[0], 0, + 0 | GC_DS_LENGTH, /* Adjusted in GC_init_inner for EXTRA_BYTES */ + TRUE /* add length to descr */, TRUE }, +/* UNCOLLECTABLE */ + { &GC_uobjfreelist[0], 0, + 0 | GC_DS_LENGTH, TRUE /* add length to descr */, TRUE }, +# ifdef ATOMIC_UNCOLLECTABLE + /* AUNCOLLECTABLE */ + { &GC_auobjfreelist[0], 0, + 0 | GC_DS_LENGTH, FALSE /* add length to descr */, FALSE }, +# endif +# ifdef STUBBORN_ALLOC +/*STUBBORN*/ { &GC_sobjfreelist[0], 0, + 0 | GC_DS_LENGTH, TRUE /* add length to descr */, TRUE }, +# endif +}; + +# ifdef ATOMIC_UNCOLLECTABLE +# ifdef STUBBORN_ALLOC + unsigned GC_n_kinds = 5; +# else + unsigned GC_n_kinds = 4; +# endif +# else +# ifdef STUBBORN_ALLOC + unsigned GC_n_kinds = 4; +# else + unsigned GC_n_kinds = 3; +# endif +# endif + + +# ifndef INITIAL_MARK_STACK_SIZE +# define INITIAL_MARK_STACK_SIZE (1*HBLKSIZE) + /* INITIAL_MARK_STACK_SIZE * sizeof(mse) should be a */ + /* multiple of HBLKSIZE. */ + /* The incremental collector actually likes a larger */ + /* size, since it want to push all marked dirty objs */ + /* before marking anything new. Currently we let it */ + /* grow dynamically. */ +# endif + +/* + * Limits of stack for GC_mark routine. + * All ranges between GC_mark_stack(incl.) and GC_mark_stack_top(incl.) still + * need to be marked from. + */ + +word GC_n_rescuing_pages; /* Number of dirty pages we marked from */ + /* excludes ptrfree pages, etc. */ + +mse * GC_mark_stack; + +mse * GC_mark_stack_limit; + +size_t GC_mark_stack_size = 0; + +#ifdef PARALLEL_MARK +# include "atomic_ops.h" + + mse * volatile GC_mark_stack_top; + /* Updated only with mark lock held, but read asynchronously. */ + volatile AO_t GC_first_nonempty; + /* Lowest entry on mark stack */ + /* that may be nonempty. */ + /* Updated only by initiating */ + /* thread. */ +#else + mse * GC_mark_stack_top; +#endif + +static struct hblk * scan_ptr; + +mark_state_t GC_mark_state = MS_NONE; + +GC_bool GC_mark_stack_too_small = FALSE; + +GC_bool GC_objects_are_marked = FALSE; /* Are there collectable marked */ + /* objects in the heap? */ + +/* Is a collection in progress? Note that this can return true in the */ +/* nonincremental case, if a collection has been abandoned and the */ +/* mark state is now MS_INVALID. */ +GC_bool GC_collection_in_progress(void) +{ + return(GC_mark_state != MS_NONE); +} + +/* clear all mark bits in the header */ +void GC_clear_hdr_marks(hdr *hhdr) +{ + size_t last_bit = FINAL_MARK_BIT(hhdr -> hb_sz); + +# ifdef USE_MARK_BYTES + BZERO(hhdr -> hb_marks, MARK_BITS_SZ); + hhdr -> hb_marks[last_bit] = 1; +# else + BZERO(hhdr -> hb_marks, MARK_BITS_SZ*sizeof(word)); + set_mark_bit_from_hdr(hhdr, last_bit); +# endif + hhdr -> hb_n_marks = 0; +} + +/* Set all mark bits in the header. Used for uncollectable blocks. */ +void GC_set_hdr_marks(hdr *hhdr) +{ + unsigned i; + size_t sz = hhdr -> hb_sz; + size_t n_marks = FINAL_MARK_BIT(sz); + +# ifdef USE_MARK_BYTES + for (i = 0; i <= n_marks; i += MARK_BIT_OFFSET(sz)) { + hhdr -> hb_marks[i] = 1; + } +# else + for (i = 0; i < divWORDSZ(n_marks + WORDSZ); ++i) { + hhdr -> hb_marks[i] = ONES; + } +# endif +# ifdef MARK_BIT_PER_OBJ + hhdr -> hb_n_marks = n_marks - 1; +# else + hhdr -> hb_n_marks = HBLK_OBJS(sz); +# endif +} + +/* + * Clear all mark bits associated with block h. + */ +/*ARGSUSED*/ +static void clear_marks_for_block(struct hblk *h, word dummy) +{ + register hdr * hhdr = HDR(h); + + if (IS_UNCOLLECTABLE(hhdr -> hb_obj_kind)) return; + /* Mark bit for these is cleared only once the object is */ + /* explicitly deallocated. This either frees the block, or */ + /* the bit is cleared once the object is on the free list. */ + GC_clear_hdr_marks(hhdr); +} + +/* Slow but general routines for setting/clearing/asking about mark bits */ +void GC_set_mark_bit(ptr_t p) +{ + struct hblk *h = HBLKPTR(p); + hdr * hhdr = HDR(h); + word bit_no = MARK_BIT_NO(p - (ptr_t)h, hhdr -> hb_sz); + + if (!mark_bit_from_hdr(hhdr, bit_no)) { + set_mark_bit_from_hdr(hhdr, bit_no); + ++hhdr -> hb_n_marks; + } +} + +void GC_clear_mark_bit(ptr_t p) +{ + struct hblk *h = HBLKPTR(p); + hdr * hhdr = HDR(h); + word bit_no = MARK_BIT_NO(p - (ptr_t)h, hhdr -> hb_sz); + + if (mark_bit_from_hdr(hhdr, bit_no)) { + size_t n_marks; + clear_mark_bit_from_hdr(hhdr, bit_no); + n_marks = hhdr -> hb_n_marks - 1; +# ifdef PARALLEL_MARK + if (n_marks != 0) + hhdr -> hb_n_marks = n_marks; + /* Don't decrement to zero. The counts are approximate due to */ + /* concurrency issues, but we need to ensure that a count of */ + /* zero implies an empty block. */ +# else + hhdr -> hb_n_marks = n_marks; +# endif + } +} + +GC_bool GC_is_marked(ptr_t p) +{ + struct hblk *h = HBLKPTR(p); + hdr * hhdr = HDR(h); + word bit_no = MARK_BIT_NO(p - (ptr_t)h, hhdr -> hb_sz); + + return((GC_bool)mark_bit_from_hdr(hhdr, bit_no)); +} + + +/* + * Clear mark bits in all allocated heap blocks. This invalidates + * the marker invariant, and sets GC_mark_state to reflect this. + * (This implicitly starts marking to reestablish the invariant.) + */ +void GC_clear_marks(void) +{ + GC_apply_to_all_blocks(clear_marks_for_block, (word)0); + GC_objects_are_marked = FALSE; + GC_mark_state = MS_INVALID; + scan_ptr = 0; +} + +/* Initiate a garbage collection. Initiates a full collection if the */ +/* mark state is invalid. */ +/*ARGSUSED*/ +void GC_initiate_gc(void) +{ + if (GC_dirty_maintained) GC_read_dirty(); +# ifdef STUBBORN_ALLOC + GC_read_changed(); +# endif +# ifdef CHECKSUMS + { + extern void GC_check_dirty(); + + if (GC_dirty_maintained) GC_check_dirty(); + } +# endif + GC_n_rescuing_pages = 0; + if (GC_mark_state == MS_NONE) { + GC_mark_state = MS_PUSH_RESCUERS; + } else if (GC_mark_state != MS_INVALID) { + ABORT("unexpected state"); + } /* else this is really a full collection, and mark */ + /* bits are invalid. */ + scan_ptr = 0; +} + + +static void alloc_mark_stack(size_t); + +# if defined(MSWIN32) || defined(USE_PROC_FOR_LIBRARIES) && defined(THREADS) + /* Under rare conditions, we may end up marking from nonexistent memory. */ + /* Hence we need to be prepared to recover by running GC_mark_some */ + /* with a suitable handler in place. */ +# define WRAP_MARK_SOME +# endif + +/* Perform a small amount of marking. */ +/* We try to touch roughly a page of memory. */ +/* Return TRUE if we just finished a mark phase. */ +/* Cold_gc_frame is an address inside a GC frame that */ +/* remains valid until all marking is complete. */ +/* A zero value indicates that it's OK to miss some */ +/* register values. */ +/* We hold the allocation lock. In the case of */ +/* incremental collection, the world may not be stopped.*/ +#ifdef WRAP_MARK_SOME + /* For win32, this is called after we establish a structured */ + /* exception handler, in case Windows unmaps one of our root */ + /* segments. See below. In either case, we acquire the */ + /* allocator lock long before we get here. */ + GC_bool GC_mark_some_inner(ptr_t cold_gc_frame) +#else + GC_bool GC_mark_some(ptr_t cold_gc_frame) +#endif +{ + switch(GC_mark_state) { + case MS_NONE: + return(FALSE); + + case MS_PUSH_RESCUERS: + if (GC_mark_stack_top + >= GC_mark_stack_limit - INITIAL_MARK_STACK_SIZE/2) { + /* Go ahead and mark, even though that might cause us to */ + /* see more marked dirty objects later on. Avoid this */ + /* in the future. */ + GC_mark_stack_too_small = TRUE; + MARK_FROM_MARK_STACK(); + return(FALSE); + } else { + scan_ptr = GC_push_next_marked_dirty(scan_ptr); + if (scan_ptr == 0) { + if (GC_print_stats) { + GC_log_printf("Marked from %u dirty pages\n", + GC_n_rescuing_pages); + } + GC_push_roots(FALSE, cold_gc_frame); + GC_objects_are_marked = TRUE; + if (GC_mark_state != MS_INVALID) { + GC_mark_state = MS_ROOTS_PUSHED; + } + } + } + return(FALSE); + + case MS_PUSH_UNCOLLECTABLE: + if (GC_mark_stack_top + >= GC_mark_stack + GC_mark_stack_size/4) { +# ifdef PARALLEL_MARK + /* Avoid this, since we don't parallelize the marker */ + /* here. */ + if (GC_parallel) GC_mark_stack_too_small = TRUE; +# endif + MARK_FROM_MARK_STACK(); + return(FALSE); + } else { + scan_ptr = GC_push_next_marked_uncollectable(scan_ptr); + if (scan_ptr == 0) { + GC_push_roots(TRUE, cold_gc_frame); + GC_objects_are_marked = TRUE; + if (GC_mark_state != MS_INVALID) { + GC_mark_state = MS_ROOTS_PUSHED; + } + } + } + return(FALSE); + + case MS_ROOTS_PUSHED: +# ifdef PARALLEL_MARK + /* In the incremental GC case, this currently doesn't */ + /* quite do the right thing, since it runs to */ + /* completion. On the other hand, starting a */ + /* parallel marker is expensive, so perhaps it is */ + /* the right thing? */ + /* Eventually, incremental marking should run */ + /* asynchronously in multiple threads, without grabbing */ + /* the allocation lock. */ + if (GC_parallel) { + GC_do_parallel_mark(); + GC_ASSERT(GC_mark_stack_top < (mse *)GC_first_nonempty); + GC_mark_stack_top = GC_mark_stack - 1; + if (GC_mark_stack_too_small) { + alloc_mark_stack(2*GC_mark_stack_size); + } + if (GC_mark_state == MS_ROOTS_PUSHED) { + GC_mark_state = MS_NONE; + return(TRUE); + } else { + return(FALSE); + } + } +# endif + if (GC_mark_stack_top >= GC_mark_stack) { + MARK_FROM_MARK_STACK(); + return(FALSE); + } else { + GC_mark_state = MS_NONE; + if (GC_mark_stack_too_small) { + alloc_mark_stack(2*GC_mark_stack_size); + } + return(TRUE); + } + + case MS_INVALID: + case MS_PARTIALLY_INVALID: + if (!GC_objects_are_marked) { + GC_mark_state = MS_PUSH_UNCOLLECTABLE; + return(FALSE); + } + if (GC_mark_stack_top >= GC_mark_stack) { + MARK_FROM_MARK_STACK(); + return(FALSE); + } + if (scan_ptr == 0 && GC_mark_state == MS_INVALID) { + /* About to start a heap scan for marked objects. */ + /* Mark stack is empty. OK to reallocate. */ + if (GC_mark_stack_too_small) { + alloc_mark_stack(2*GC_mark_stack_size); + } + GC_mark_state = MS_PARTIALLY_INVALID; + } + scan_ptr = GC_push_next_marked(scan_ptr); + if (scan_ptr == 0 && GC_mark_state == MS_PARTIALLY_INVALID) { + GC_push_roots(TRUE, cold_gc_frame); + GC_objects_are_marked = TRUE; + if (GC_mark_state != MS_INVALID) { + GC_mark_state = MS_ROOTS_PUSHED; + } + } + return(FALSE); + default: + ABORT("GC_mark_some: bad state"); + return(FALSE); + } +} + + +#if defined(MSWIN32) && defined(__GNUC__) + + typedef struct { + EXCEPTION_REGISTRATION ex_reg; + void *alt_path; + } ext_ex_regn; + + + static EXCEPTION_DISPOSITION mark_ex_handler( + struct _EXCEPTION_RECORD *ex_rec, + void *est_frame, + struct _CONTEXT *context, + void *disp_ctxt) + { + if (ex_rec->ExceptionCode == STATUS_ACCESS_VIOLATION) { + ext_ex_regn *xer = (ext_ex_regn *)est_frame; + + /* Unwind from the inner function assuming the standard */ + /* function prologue. */ + /* Assumes code has not been compiled with */ + /* -fomit-frame-pointer. */ + context->Esp = context->Ebp; + context->Ebp = *((DWORD *)context->Esp); + context->Esp = context->Esp - 8; + + /* Resume execution at the "real" handler within the */ + /* wrapper function. */ + context->Eip = (DWORD )(xer->alt_path); + + return ExceptionContinueExecution; + + } else { + return ExceptionContinueSearch; + } + } +# endif /* __GNUC__ && MSWIN32 */ + +#ifdef GC_WIN32_THREADS + extern GC_bool GC_started_thread_while_stopped(void); + /* In win32_threads.c. Did we invalidate mark phase with an */ + /* unexpected thread start? */ +#endif + +# ifdef WRAP_MARK_SOME + GC_bool GC_mark_some(ptr_t cold_gc_frame) + { + GC_bool ret_val; + +# ifdef MSWIN32 +# ifndef __GNUC__ + /* Windows 98 appears to asynchronously create and remove */ + /* writable memory mappings, for reasons we haven't yet */ + /* understood. Since we look for writable regions to */ + /* determine the root set, we may try to mark from an */ + /* address range that disappeared since we started the */ + /* collection. Thus we have to recover from faults here. */ + /* This code does not appear to be necessary for Windows */ + /* 95/NT/2000. Note that this code should never generate */ + /* an incremental GC write fault. */ + /* It's conceivable that this is the same issue with */ + /* terminating threads that we see with Linux and */ + /* USE_PROC_FOR_LIBRARIES. */ + + __try { + ret_val = GC_mark_some_inner(cold_gc_frame); + } __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? + EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { + goto handle_ex; + } +# ifdef GC_WIN32_THREADS + /* With DllMain-based thread tracking, a thread may have */ + /* started while we were marking. This is logically equivalent */ + /* to the exception case; our results are invalid and we have */ + /* to start over. This cannot be prevented since we can't */ + /* block in DllMain. */ + if (GC_started_thread_while_stopped()) goto handle_ex; +# endif + rm_handler: + return ret_val; + +# else /* __GNUC__ */ + + /* Manually install an exception handler since GCC does */ + /* not yet support Structured Exception Handling (SEH) on */ + /* Win32. */ + + ext_ex_regn er; + + er.alt_path = &&handle_ex; + er.ex_reg.handler = mark_ex_handler; + asm volatile ("movl %%fs:0, %0" : "=r" (er.ex_reg.prev)); + asm volatile ("movl %0, %%fs:0" : : "r" (&er)); + ret_val = GC_mark_some_inner(cold_gc_frame); + /* Prevent GCC from considering the following code unreachable */ + /* and thus eliminating it. */ + if (er.alt_path == 0) + goto handle_ex; + rm_handler: + /* Uninstall the exception handler */ + asm volatile ("mov %0, %%fs:0" : : "r" (er.ex_reg.prev)); + return ret_val; + +# endif /* __GNUC__ */ +# else /* !MSWIN32 */ + /* Here we are handling the case in which /proc is used for root */ + /* finding, and we have threads. We may find a stack for a */ + /* thread that is in the process of exiting, and disappears */ + /* while we are marking it. This seems extremely difficult to */ + /* avoid otherwise. */ + if (GC_incremental) + WARN("Incremental GC incompatible with /proc roots\n", 0); + /* I'm not sure if this could still work ... */ + GC_setup_temporary_fault_handler(); + if(SETJMP(GC_jmp_buf) != 0) goto handle_ex; + ret_val = GC_mark_some_inner(cold_gc_frame); + rm_handler: + GC_reset_fault_handler(); + return ret_val; + +# endif /* !MSWIN32 */ + +handle_ex: + /* Exception handler starts here for all cases. */ + if (GC_print_stats) { + GC_log_printf("Caught ACCESS_VIOLATION in marker. " + "Memory mapping disappeared.\n"); + } + + /* We have bad roots on the stack. Discard mark stack. */ + /* Rescan from marked objects. Redetermine roots. */ + GC_invalidate_mark_state(); + scan_ptr = 0; + + ret_val = FALSE; + goto rm_handler; // Back to platform-specific code. + } +#endif /* WRAP_MARK_SOME */ + + +GC_bool GC_mark_stack_empty(void) +{ + return(GC_mark_stack_top < GC_mark_stack); +} + +void GC_invalidate_mark_state(void) +{ + GC_mark_state = MS_INVALID; + GC_mark_stack_top = GC_mark_stack-1; +} + +mse * GC_signal_mark_stack_overflow(mse *msp) +{ + GC_mark_state = MS_INVALID; + GC_mark_stack_too_small = TRUE; + if (GC_print_stats) { + GC_log_printf("Mark stack overflow; current size = %lu entries\n", + GC_mark_stack_size); + } + return(msp - GC_MARK_STACK_DISCARDS); +} + +/* + * Mark objects pointed to by the regions described by + * mark stack entries between mark_stack and mark_stack_top, + * inclusive. Assumes the upper limit of a mark stack entry + * is never 0. A mark stack entry never has size 0. + * We try to traverse on the order of a hblk of memory before we return. + * Caller is responsible for calling this until the mark stack is empty. + * Note that this is the most performance critical routine in the + * collector. Hence it contains all sorts of ugly hacks to speed + * things up. In particular, we avoid procedure calls on the common + * path, we take advantage of peculiarities of the mark descriptor + * encoding, we optionally maintain a cache for the block address to + * header mapping, we prefetch when an object is "grayed", etc. + */ +mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack, mse *mark_stack_limit) +{ + signed_word credit = HBLKSIZE; /* Remaining credit for marking work */ + ptr_t current_p; /* Pointer to current candidate ptr. */ + word current; /* Candidate pointer. */ + ptr_t limit; /* (Incl) limit of current candidate */ + /* range */ + word descr; + ptr_t greatest_ha = GC_greatest_plausible_heap_addr; + ptr_t least_ha = GC_least_plausible_heap_addr; + DECLARE_HDR_CACHE; + +# define SPLIT_RANGE_WORDS 128 /* Must be power of 2. */ + + GC_objects_are_marked = TRUE; + INIT_HDR_CACHE; +# ifdef OS2 /* Use untweaked version to circumvent compiler problem */ + while (mark_stack_top >= mark_stack && credit >= 0) { +# else + while ((((ptr_t)mark_stack_top - (ptr_t)mark_stack) | credit) + >= 0) { +# endif + current_p = mark_stack_top -> mse_start; + descr = mark_stack_top -> mse_descr; + retry: + /* current_p and descr describe the current object. */ + /* *mark_stack_top is vacant. */ + /* The following is 0 only for small objects described by a simple */ + /* length descriptor. For many applications this is the common */ + /* case, so we try to detect it quickly. */ + if (descr & ((~(WORDS_TO_BYTES(SPLIT_RANGE_WORDS) - 1)) | GC_DS_TAGS)) { + word tag = descr & GC_DS_TAGS; + + switch(tag) { + case GC_DS_LENGTH: + /* Large length. */ + /* Process part of the range to avoid pushing too much on the */ + /* stack. */ + GC_ASSERT(descr < (word)GC_greatest_plausible_heap_addr + - (word)GC_least_plausible_heap_addr); +# ifdef ENABLE_TRACE + if (GC_trace_addr >= current_p + && GC_trace_addr < current_p + descr) { + GC_log_printf("GC:%d Large section; start %p len %lu\n", + GC_gc_no, current_p, (unsigned long) descr); + } +# endif /* ENABLE_TRACE */ +# ifdef PARALLEL_MARK +# define SHARE_BYTES 2048 + if (descr > SHARE_BYTES && GC_parallel + && mark_stack_top < mark_stack_limit - 1) { + int new_size = (descr/2) & ~(sizeof(word)-1); + mark_stack_top -> mse_start = current_p; + mark_stack_top -> mse_descr = new_size + sizeof(word); + /* makes sure we handle */ + /* misaligned pointers. */ + mark_stack_top++; +# ifdef ENABLE_TRACE + if (GC_trace_addr >= current_p + && GC_trace_addr < current_p + descr) { + GC_log_printf("GC:%d splitting (parallel) %p at %p\n", + GC_gc_no, current_p, current_p + new_size); + } +# endif /* ENABLE_TRACE */ + current_p += new_size; + descr -= new_size; + goto retry; + } +# endif /* PARALLEL_MARK */ + mark_stack_top -> mse_start = + limit = current_p + WORDS_TO_BYTES(SPLIT_RANGE_WORDS-1); + mark_stack_top -> mse_descr = + descr - WORDS_TO_BYTES(SPLIT_RANGE_WORDS-1); +# ifdef ENABLE_TRACE + if (GC_trace_addr >= current_p + && GC_trace_addr < current_p + descr) { + GC_log_printf("GC:%d splitting %p at %p\n", + GC_gc_no, current_p, limit); + } +# endif /* ENABLE_TRACE */ + /* Make sure that pointers overlapping the two ranges are */ + /* considered. */ + limit += sizeof(word) - ALIGNMENT; + break; + case GC_DS_BITMAP: + mark_stack_top--; +# ifdef ENABLE_TRACE + if (GC_trace_addr >= current_p + && GC_trace_addr < current_p + WORDS_TO_BYTES(WORDSZ-2)) { + GC_log_printf("GC:%d Tracing from %p bitmap descr %lu\n", + GC_gc_no, current_p, (unsigned long) descr); + } +# endif /* ENABLE_TRACE */ + descr &= ~GC_DS_TAGS; + credit -= WORDS_TO_BYTES(WORDSZ/2); /* guess */ + while (descr != 0) { + if ((signed_word)descr < 0) { + current = *(word *)current_p; + FIXUP_POINTER(current); + if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) { + PREFETCH((ptr_t)current); +# ifdef ENABLE_TRACE + if (GC_trace_addr == current_p) { + GC_log_printf("GC:%d Considering(3) %p -> %p\n", + GC_gc_no, current_p, (ptr_t) current); + } +# endif /* ENABLE_TRACE */ + PUSH_CONTENTS((ptr_t)current, mark_stack_top, + mark_stack_limit, current_p, exit1); + } + } + descr <<= 1; + current_p += sizeof(word); + } + continue; + case GC_DS_PROC: + mark_stack_top--; +# ifdef ENABLE_TRACE + if (GC_trace_addr >= current_p + && GC_base(current_p) != 0 + && GC_base(current_p) == GC_base(GC_trace_addr)) { + GC_log_printf("GC:%d Tracing from %p proc descr %lu\n", + GC_gc_no, current_p, (unsigned long) descr); + } +# endif /* ENABLE_TRACE */ + credit -= GC_PROC_BYTES; + mark_stack_top = + (*PROC(descr)) + ((word *)current_p, mark_stack_top, + mark_stack_limit, ENV(descr)); + continue; + case GC_DS_PER_OBJECT: + if ((signed_word)descr >= 0) { + /* Descriptor is in the object. */ + descr = *(word *)(current_p + descr - GC_DS_PER_OBJECT); + } else { + /* Descriptor is in type descriptor pointed to by first */ + /* word in object. */ + ptr_t type_descr = *(ptr_t *)current_p; + /* type_descr is either a valid pointer to the descriptor */ + /* structure, or this object was on a free list. If it */ + /* it was anything but the last object on the free list, */ + /* we will misinterpret the next object on the free list as */ + /* the type descriptor, and get a 0 GC descriptor, which */ + /* is ideal. Unfortunately, we need to check for the last */ + /* object case explicitly. */ + if (0 == type_descr) { + /* Rarely executed. */ + mark_stack_top--; + continue; + } + descr = *(word *)(type_descr + - (descr - (GC_DS_PER_OBJECT + - GC_INDIR_PER_OBJ_BIAS))); + } + if (0 == descr) { + /* Can happen either because we generated a 0 descriptor */ + /* or we saw a pointer to a free object. */ + mark_stack_top--; + continue; + } + goto retry; + } + } else /* Small object with length descriptor */ { + mark_stack_top--; + limit = current_p + (word)descr; + } +# ifdef ENABLE_TRACE + if (GC_trace_addr >= current_p + && GC_trace_addr < limit) { + GC_log_printf("GC:%d Tracing from %p len %lu\n", + GC_gc_no, current_p, (unsigned long) descr); + } +# endif /* ENABLE_TRACE */ + /* The simple case in which we're scanning a range. */ + GC_ASSERT(!((word)current_p & (ALIGNMENT-1))); + credit -= limit - current_p; + limit -= sizeof(word); + { +# define PREF_DIST 4 + +# ifndef SMALL_CONFIG + word deferred; + + /* Try to prefetch the next pointer to be examined asap. */ + /* Empirically, this also seems to help slightly without */ + /* prefetches, at least on linux/X86. Presumably this loop */ + /* ends up with less register pressure, and gcc thus ends up */ + /* generating slightly better code. Overall gcc code quality */ + /* for this loop is still not great. */ + for(;;) { + PREFETCH(limit - PREF_DIST*CACHE_LINE_SIZE); + GC_ASSERT(limit >= current_p); + deferred = *(word *)limit; + FIXUP_POINTER(deferred); + limit -= ALIGNMENT; + if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) { + PREFETCH((ptr_t)deferred); + break; + } + if (current_p > limit) goto next_object; + /* Unroll once, so we don't do too many of the prefetches */ + /* based on limit. */ + deferred = *(word *)limit; + FIXUP_POINTER(deferred); + limit -= ALIGNMENT; + if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) { + PREFETCH((ptr_t)deferred); + break; + } + if (current_p > limit) goto next_object; + } +# endif + + while (current_p <= limit) { + /* Empirically, unrolling this loop doesn't help a lot. */ + /* Since PUSH_CONTENTS expands to a lot of code, */ + /* we don't. */ + current = *(word *)current_p; + FIXUP_POINTER(current); + PREFETCH(current_p + PREF_DIST*CACHE_LINE_SIZE); + if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) { + /* Prefetch the contents of the object we just pushed. It's */ + /* likely we will need them soon. */ + PREFETCH((ptr_t)current); +# ifdef ENABLE_TRACE + if (GC_trace_addr == current_p) { + GC_log_printf("GC:%d Considering(1) %p -> %p\n", + GC_gc_no, current_p, (ptr_t) current); + } +# endif /* ENABLE_TRACE */ + PUSH_CONTENTS((ptr_t)current, mark_stack_top, + mark_stack_limit, current_p, exit2); + } + current_p += ALIGNMENT; + } + +# ifndef SMALL_CONFIG + /* We still need to mark the entry we previously prefetched. */ + /* We already know that it passes the preliminary pointer */ + /* validity test. */ +# ifdef ENABLE_TRACE + if (GC_trace_addr == current_p) { + GC_log_printf("GC:%d Considering(2) %p -> %p\n", + GC_gc_no, current_p, (ptr_t) deferred); + } +# endif /* ENABLE_TRACE */ + PUSH_CONTENTS((ptr_t)deferred, mark_stack_top, + mark_stack_limit, current_p, exit4); + next_object:; +# endif + } + } + return mark_stack_top; +} + +#ifdef PARALLEL_MARK + +/* We assume we have an ANSI C Compiler. */ +GC_bool GC_help_wanted = FALSE; +unsigned GC_helper_count = 0; +unsigned GC_active_count = 0; +word GC_mark_no = 0; + +#define LOCAL_MARK_STACK_SIZE HBLKSIZE + /* Under normal circumstances, this is big enough to guarantee */ + /* We don't overflow half of it in a single call to */ + /* GC_mark_from. */ + + +/* Steal mark stack entries starting at mse low into mark stack local */ +/* until we either steal mse high, or we have max entries. */ +/* Return a pointer to the top of the local mark stack. */ +/* *next is replaced by a pointer to the next unscanned mark stack */ +/* entry. */ +mse * GC_steal_mark_stack(mse * low, mse * high, mse * local, + unsigned max, mse **next) +{ + mse *p; + mse *top = local - 1; + unsigned i = 0; + + GC_ASSERT(high >= low-1 && high - low + 1 <= GC_mark_stack_size); + for (p = low; p <= high && i <= max; ++p) { + word descr = AO_load((volatile AO_t *) &(p -> mse_descr)); + if (descr != 0) { + /* Must be ordered after read of descr: */ + AO_store_release_write((volatile AO_t *) &(p -> mse_descr), 0); + /* More than one thread may get this entry, but that's only */ + /* a minor performance problem. */ + ++top; + top -> mse_descr = descr; + top -> mse_start = p -> mse_start; + GC_ASSERT((top -> mse_descr & GC_DS_TAGS) != GC_DS_LENGTH || + top -> mse_descr < (ptr_t)GC_greatest_plausible_heap_addr + - (ptr_t)GC_least_plausible_heap_addr); + /* If this is a big object, count it as */ + /* size/256 + 1 objects. */ + ++i; + if ((descr & GC_DS_TAGS) == GC_DS_LENGTH) i += (descr >> 8); + } + } + *next = p; + return top; +} + +/* Copy back a local mark stack. */ +/* low and high are inclusive bounds. */ +void GC_return_mark_stack(mse * low, mse * high) +{ + mse * my_top; + mse * my_start; + size_t stack_size; + + if (high < low) return; + stack_size = high - low + 1; + GC_acquire_mark_lock(); + my_top = GC_mark_stack_top; /* Concurrent modification impossible. */ + my_start = my_top + 1; + if (my_start - GC_mark_stack + stack_size > GC_mark_stack_size) { + if (GC_print_stats) { + GC_log_printf("No room to copy back mark stack."); + } + GC_mark_state = MS_INVALID; + GC_mark_stack_too_small = TRUE; + /* We drop the local mark stack. We'll fix things later. */ + } else { + BCOPY(low, my_start, stack_size * sizeof(mse)); + GC_ASSERT((mse *)AO_load((volatile AO_t *)(&GC_mark_stack_top)) + == my_top); + AO_store_release_write((volatile AO_t *)(&GC_mark_stack_top), + (AO_t)(my_top + stack_size)); + /* Ensures visibility of previously written stack contents. */ + } + GC_release_mark_lock(); + GC_notify_all_marker(); +} + +/* Mark from the local mark stack. */ +/* On return, the local mark stack is empty. */ +/* But this may be achieved by copying the */ +/* local mark stack back into the global one. */ +void GC_do_local_mark(mse *local_mark_stack, mse *local_top) +{ + unsigned n; +# define N_LOCAL_ITERS 1 + +# ifdef GC_ASSERTIONS + /* Make sure we don't hold mark lock. */ + GC_acquire_mark_lock(); + GC_release_mark_lock(); +# endif + for (;;) { + for (n = 0; n < N_LOCAL_ITERS; ++n) { + local_top = GC_mark_from(local_top, local_mark_stack, + local_mark_stack + LOCAL_MARK_STACK_SIZE); + if (local_top < local_mark_stack) return; + if (local_top - local_mark_stack >= LOCAL_MARK_STACK_SIZE/2) { + GC_return_mark_stack(local_mark_stack, local_top); + return; + } + } + if ((mse *)AO_load((volatile AO_t *)(&GC_mark_stack_top)) + < (mse *)AO_load(&GC_first_nonempty) + && GC_active_count < GC_helper_count + && local_top > local_mark_stack + 1) { + /* Try to share the load, since the main stack is empty, */ + /* and helper threads are waiting for a refill. */ + /* The entries near the bottom of the stack are likely */ + /* to require more work. Thus we return those, eventhough */ + /* it's harder. */ + mse * new_bottom = local_mark_stack + + (local_top - local_mark_stack)/2; + GC_ASSERT(new_bottom > local_mark_stack + && new_bottom < local_top); + GC_return_mark_stack(local_mark_stack, new_bottom - 1); + memmove(local_mark_stack, new_bottom, + (local_top - new_bottom + 1) * sizeof(mse)); + local_top -= (new_bottom - local_mark_stack); + } + } +} + +#define ENTRIES_TO_GET 5 + +long GC_markers = 2; /* Normally changed by thread-library- */ + /* -specific code. */ + +/* Mark using the local mark stack until the global mark stack is empty */ +/* and there are no active workers. Update GC_first_nonempty to reflect */ +/* progress. */ +/* Caller does not hold mark lock. */ +/* Caller has already incremented GC_helper_count. We decrement it, */ +/* and maintain GC_active_count. */ +void GC_mark_local(mse *local_mark_stack, int id) +{ + mse * my_first_nonempty; + + GC_acquire_mark_lock(); + GC_active_count++; + my_first_nonempty = (mse *)AO_load(&GC_first_nonempty); + GC_ASSERT((mse *)AO_load(&GC_first_nonempty) >= GC_mark_stack && + (mse *)AO_load(&GC_first_nonempty) <= + (mse *)AO_load((volatile AO_t *)(&GC_mark_stack_top)) + 1); + if (GC_print_stats == VERBOSE) + GC_log_printf("Starting mark helper %lu\n", (unsigned long)id); + GC_release_mark_lock(); + for (;;) { + size_t n_on_stack; + size_t n_to_get; + mse * my_top; + mse * local_top; + mse * global_first_nonempty = (mse *)AO_load(&GC_first_nonempty); + + GC_ASSERT(my_first_nonempty >= GC_mark_stack && + my_first_nonempty <= + (mse *)AO_load((volatile AO_t *)(&GC_mark_stack_top)) + 1); + GC_ASSERT(global_first_nonempty >= GC_mark_stack && + global_first_nonempty <= + (mse *)AO_load((volatile AO_t *)(&GC_mark_stack_top)) + 1); + if (my_first_nonempty < global_first_nonempty) { + my_first_nonempty = global_first_nonempty; + } else if (global_first_nonempty < my_first_nonempty) { + AO_compare_and_swap(&GC_first_nonempty, + (AO_t) global_first_nonempty, + (AO_t) my_first_nonempty); + /* If this fails, we just go ahead, without updating */ + /* GC_first_nonempty. */ + } + /* Perhaps we should also update GC_first_nonempty, if it */ + /* is less. But that would require using atomic updates. */ + my_top = (mse *)AO_load_acquire((volatile AO_t *)(&GC_mark_stack_top)); + n_on_stack = my_top - my_first_nonempty + 1; + if (0 == n_on_stack) { + GC_acquire_mark_lock(); + my_top = GC_mark_stack_top; + /* Asynchronous modification impossible here, */ + /* since we hold mark lock. */ + n_on_stack = my_top - my_first_nonempty + 1; + if (0 == n_on_stack) { + GC_active_count--; + GC_ASSERT(GC_active_count <= GC_helper_count); + /* Other markers may redeposit objects */ + /* on the stack. */ + if (0 == GC_active_count) GC_notify_all_marker(); + while (GC_active_count > 0 + && (mse *)AO_load(&GC_first_nonempty) + > GC_mark_stack_top) { + /* We will be notified if either GC_active_count */ + /* reaches zero, or if more objects are pushed on */ + /* the global mark stack. */ + GC_wait_marker(); + } + if (GC_active_count == 0 && + (mse *)AO_load(&GC_first_nonempty) > GC_mark_stack_top) { + GC_bool need_to_notify = FALSE; + /* The above conditions can't be falsified while we */ + /* hold the mark lock, since neither */ + /* GC_active_count nor GC_mark_stack_top can */ + /* change. GC_first_nonempty can only be */ + /* incremented asynchronously. Thus we know that */ + /* both conditions actually held simultaneously. */ + GC_helper_count--; + if (0 == GC_helper_count) need_to_notify = TRUE; + if (GC_print_stats == VERBOSE) + GC_log_printf( + "Finished mark helper %lu\n", (unsigned long)id); + GC_release_mark_lock(); + if (need_to_notify) GC_notify_all_marker(); + return; + } + /* else there's something on the stack again, or */ + /* another helper may push something. */ + GC_active_count++; + GC_ASSERT(GC_active_count > 0); + GC_release_mark_lock(); + continue; + } else { + GC_release_mark_lock(); + } + } + n_to_get = ENTRIES_TO_GET; + if (n_on_stack < 2 * ENTRIES_TO_GET) n_to_get = 1; + local_top = GC_steal_mark_stack(my_first_nonempty, my_top, + local_mark_stack, n_to_get, + &my_first_nonempty); + GC_ASSERT(my_first_nonempty >= GC_mark_stack && + my_first_nonempty <= + (mse *)AO_load((volatile AO_t *)(&GC_mark_stack_top)) + 1); + GC_do_local_mark(local_mark_stack, local_top); + } +} + +/* Perform Parallel mark. */ +/* We hold the GC lock, not the mark lock. */ +/* Currently runs until the mark stack is */ +/* empty. */ +void GC_do_parallel_mark() +{ + mse local_mark_stack[LOCAL_MARK_STACK_SIZE]; + + GC_acquire_mark_lock(); + GC_ASSERT(I_HOLD_LOCK()); + /* This could be a GC_ASSERT, but it seems safer to keep it on */ + /* all the time, especially since it's cheap. */ + if (GC_help_wanted || GC_active_count != 0 || GC_helper_count != 0) + ABORT("Tried to start parallel mark in bad state"); + if (GC_print_stats == VERBOSE) + GC_log_printf("Starting marking for mark phase number %lu\n", + (unsigned long)GC_mark_no); + GC_first_nonempty = (AO_t)GC_mark_stack; + GC_active_count = 0; + GC_helper_count = 1; + GC_help_wanted = TRUE; + GC_release_mark_lock(); + GC_notify_all_marker(); + /* Wake up potential helpers. */ + GC_mark_local(local_mark_stack, 0); + GC_acquire_mark_lock(); + GC_help_wanted = FALSE; + /* Done; clean up. */ + while (GC_helper_count > 0) GC_wait_marker(); + /* GC_helper_count cannot be incremented while GC_help_wanted == FALSE */ + if (GC_print_stats == VERBOSE) + GC_log_printf( + "Finished marking for mark phase number %lu\n", + (unsigned long)GC_mark_no); + GC_mark_no++; + GC_release_mark_lock(); + GC_notify_all_marker(); +} + + +/* Try to help out the marker, if it's running. */ +/* We do not hold the GC lock, but the requestor does. */ +void GC_help_marker(word my_mark_no) +{ + mse local_mark_stack[LOCAL_MARK_STACK_SIZE]; + unsigned my_id; + + if (!GC_parallel) return; + GC_acquire_mark_lock(); + while (GC_mark_no < my_mark_no + || (!GC_help_wanted && GC_mark_no == my_mark_no)) { + GC_wait_marker(); + } + my_id = GC_helper_count; + if (GC_mark_no != my_mark_no || my_id >= GC_markers) { + /* Second test is useful only if original threads can also */ + /* act as helpers. Under Linux they can't. */ + GC_release_mark_lock(); + return; + } + GC_helper_count = my_id + 1; + GC_release_mark_lock(); + GC_mark_local(local_mark_stack, my_id); + /* GC_mark_local decrements GC_helper_count. */ +} + +#endif /* PARALLEL_MARK */ + +/* Allocate or reallocate space for mark stack of size n entries. */ +/* May silently fail. */ +static void alloc_mark_stack(size_t n) +{ + mse * new_stack = (mse *)GC_scratch_alloc(n * sizeof(struct GC_ms_entry)); +# ifdef GWW_VDB + /* Don't recycle a stack segment obtained with the wrong flags. */ + /* Win32 GetWriteWatch requires the right kind of memory. */ + static GC_bool GC_incremental_at_stack_alloc = 0; + GC_bool recycle_old = (!GC_incremental || GC_incremental_at_stack_alloc); + + GC_incremental_at_stack_alloc = GC_incremental; +# else +# define recycle_old 1 +# endif + + GC_mark_stack_too_small = FALSE; + if (GC_mark_stack_size != 0) { + if (new_stack != 0) { + if (recycle_old) { + /* Recycle old space */ + size_t page_offset = (word)GC_mark_stack & (GC_page_size - 1); + size_t size = GC_mark_stack_size * sizeof(struct GC_ms_entry); + size_t displ = 0; + + if (0 != page_offset) displ = GC_page_size - page_offset; + size = (size - displ) & ~(GC_page_size - 1); + if (size > 0) { + GC_add_to_heap((struct hblk *) + ((word)GC_mark_stack + displ), (word)size); + } + } + GC_mark_stack = new_stack; + GC_mark_stack_size = n; + GC_mark_stack_limit = new_stack + n; + if (GC_print_stats) { + GC_log_printf("Grew mark stack to %lu frames\n", + (unsigned long) GC_mark_stack_size); + } + } else { + if (GC_print_stats) { + GC_log_printf("Failed to grow mark stack to %lu frames\n", + (unsigned long) n); + } + } + } else { + if (new_stack == 0) { + GC_err_printf("No space for mark stack\n"); + EXIT(); + } + GC_mark_stack = new_stack; + GC_mark_stack_size = n; + GC_mark_stack_limit = new_stack + n; + } + GC_mark_stack_top = GC_mark_stack-1; +} + +void GC_mark_init() +{ + alloc_mark_stack(INITIAL_MARK_STACK_SIZE); +} + +/* + * Push all locations between b and t onto the mark stack. + * b is the first location to be checked. t is one past the last + * location to be checked. + * Should only be used if there is no possibility of mark stack + * overflow. + */ +void GC_push_all(ptr_t bottom, ptr_t top) +{ + register word length; + + bottom = (ptr_t)(((word) bottom + ALIGNMENT-1) & ~(ALIGNMENT-1)); + top = (ptr_t)(((word) top) & ~(ALIGNMENT-1)); + if (top == 0 || bottom == top) return; + GC_mark_stack_top++; + if (GC_mark_stack_top >= GC_mark_stack_limit) { + ABORT("unexpected mark stack overflow"); + } + length = top - bottom; +# if GC_DS_TAGS > ALIGNMENT - 1 + length += GC_DS_TAGS; + length &= ~GC_DS_TAGS; +# endif + GC_mark_stack_top -> mse_start = bottom; + GC_mark_stack_top -> mse_descr = length; +} + +/* + * Analogous to the above, but push only those pages h with dirty_fn(h) != 0. + * We use push_fn to actually push the block. + * Used both to selectively push dirty pages, or to push a block + * in piecemeal fashion, to allow for more marking concurrency. + * Will not overflow mark stack if push_fn pushes a small fixed number + * of entries. (This is invoked only if push_fn pushes a single entry, + * or if it marks each object before pushing it, thus ensuring progress + * in the event of a stack overflow.) + */ +void GC_push_selected(ptr_t bottom, ptr_t top, + int (*dirty_fn) (struct hblk *), + void (*push_fn) (ptr_t, ptr_t)) +{ + struct hblk * h; + + bottom = (ptr_t)(((word) bottom + ALIGNMENT-1) & ~(ALIGNMENT-1)); + top = (ptr_t)(((word) top) & ~(ALIGNMENT-1)); + + if (top == 0 || bottom == top) return; + h = HBLKPTR(bottom + HBLKSIZE); + if (top <= (ptr_t) h) { + if ((*dirty_fn)(h-1)) { + (*push_fn)(bottom, top); + } + return; + } + if ((*dirty_fn)(h-1)) { + (*push_fn)(bottom, (ptr_t)h); + } + while ((ptr_t)(h+1) <= top) { + if ((*dirty_fn)(h)) { + if ((word)(GC_mark_stack_top - GC_mark_stack) + > 3 * GC_mark_stack_size / 4) { + /* Danger of mark stack overflow */ + (*push_fn)((ptr_t)h, top); + return; + } else { + (*push_fn)((ptr_t)h, (ptr_t)(h+1)); + } + } + h++; + } + if ((ptr_t)h != top) { + if ((*dirty_fn)(h)) { + (*push_fn)((ptr_t)h, top); + } + } + if (GC_mark_stack_top >= GC_mark_stack_limit) { + ABORT("unexpected mark stack overflow"); + } +} + +# ifndef SMALL_CONFIG + +#ifdef PARALLEL_MARK + /* Break up root sections into page size chunks to better spread */ + /* out work. */ + GC_bool GC_true_func(struct hblk *h) { return TRUE; } +# define GC_PUSH_ALL(b,t) GC_push_selected(b,t,GC_true_func,GC_push_all); +#else +# define GC_PUSH_ALL(b,t) GC_push_all(b,t); +#endif + + +void GC_push_conditional(ptr_t bottom, ptr_t top, GC_bool all) +{ + if (all) { + if (GC_dirty_maintained) { +# ifdef PROC_VDB + /* Pages that were never dirtied cannot contain pointers */ + GC_push_selected(bottom, top, GC_page_was_ever_dirty, GC_push_all); +# else + GC_push_all(bottom, top); +# endif + } else { + GC_push_all(bottom, top); + } + } else { + GC_push_selected(bottom, top, GC_page_was_dirty, GC_push_all); + } +} +#endif + +# if defined(MSWIN32) || defined(MSWINCE) + void __cdecl GC_push_one(word p) +# else + void GC_push_one(word p) +# endif +{ + GC_PUSH_ONE_STACK((ptr_t)p, MARKED_FROM_REGISTER); +} + +struct GC_ms_entry *GC_mark_and_push(void *obj, + mse *mark_stack_ptr, + mse *mark_stack_limit, + void **src) +{ + hdr * hhdr; + + PREFETCH(obj); + GET_HDR(obj, hhdr); + if (EXPECT(IS_FORWARDING_ADDR_OR_NIL(hhdr),FALSE)) { + if (GC_all_interior_pointers) { + hhdr = GC_find_header(GC_base(obj)); + if (hhdr == 0) { + GC_ADD_TO_BLACK_LIST_NORMAL(obj, src); + return mark_stack_ptr; + } + } else { + GC_ADD_TO_BLACK_LIST_NORMAL(obj, src); + return mark_stack_ptr; + } + } + if (EXPECT(HBLK_IS_FREE(hhdr),0)) { + GC_ADD_TO_BLACK_LIST_NORMAL(obj, src); + return mark_stack_ptr; + } + + PUSH_CONTENTS_HDR(obj, mark_stack_ptr /* modified */, mark_stack_limit, + src, was_marked, hhdr, TRUE); + was_marked: + return mark_stack_ptr; +} + +/* Mark and push (i.e. gray) a single object p onto the main */ +/* mark stack. Consider p to be valid if it is an interior */ +/* pointer. */ +/* The object p has passed a preliminary pointer validity */ +/* test, but we do not definitely know whether it is valid. */ +/* Mark bits are NOT atomically updated. Thus this must be the */ +/* only thread setting them. */ +# if defined(PRINT_BLACK_LIST) || defined(KEEP_BACK_PTRS) + void GC_mark_and_push_stack(ptr_t p, ptr_t source) +# else + void GC_mark_and_push_stack(ptr_t p) +# define source 0 +# endif +{ + hdr * hhdr; + ptr_t r = p; + + PREFETCH(p); + GET_HDR(p, hhdr); + if (EXPECT(IS_FORWARDING_ADDR_OR_NIL(hhdr),FALSE)) { + if (hhdr != 0) { + r = GC_base(p); + hhdr = HDR(r); + } + if (hhdr == 0) { + GC_ADD_TO_BLACK_LIST_STACK(p, source); + return; + } + } + if (EXPECT(HBLK_IS_FREE(hhdr),0)) { + GC_ADD_TO_BLACK_LIST_NORMAL(p, src); + return; + } +# if defined(MANUAL_VDB) && defined(THREADS) + /* Pointer is on the stack. We may have dirtied the object */ + /* it points to, but not yet have called GC_dirty(); */ + GC_dirty(p); /* Implicitly affects entire object. */ +# endif + PUSH_CONTENTS_HDR(r, GC_mark_stack_top, GC_mark_stack_limit, + source, mark_and_push_exit, hhdr, FALSE); + mark_and_push_exit: ; + /* We silently ignore pointers to near the end of a block, */ + /* which is very mildly suboptimal. */ + /* FIXME: We should probably add a header word to address */ + /* this. */ +} + +# ifdef TRACE_BUF + +# define TRACE_ENTRIES 1000 + +struct trace_entry { + char * kind; + word gc_no; + word bytes_allocd; + word arg1; + word arg2; +} GC_trace_buf[TRACE_ENTRIES]; + +int GC_trace_buf_ptr = 0; + +void GC_add_trace_entry(char *kind, word arg1, word arg2) +{ + GC_trace_buf[GC_trace_buf_ptr].kind = kind; + GC_trace_buf[GC_trace_buf_ptr].gc_no = GC_gc_no; + GC_trace_buf[GC_trace_buf_ptr].bytes_allocd = GC_bytes_allocd; + GC_trace_buf[GC_trace_buf_ptr].arg1 = arg1 ^ 0x80000000; + GC_trace_buf[GC_trace_buf_ptr].arg2 = arg2 ^ 0x80000000; + GC_trace_buf_ptr++; + if (GC_trace_buf_ptr >= TRACE_ENTRIES) GC_trace_buf_ptr = 0; +} + +void GC_print_trace(word gc_no, GC_bool lock) +{ + int i; + struct trace_entry *p; + + if (lock) LOCK(); + for (i = GC_trace_buf_ptr-1; i != GC_trace_buf_ptr; i--) { + if (i < 0) i = TRACE_ENTRIES-1; + p = GC_trace_buf + i; + if (p -> gc_no < gc_no || p -> kind == 0) return; + printf("Trace:%s (gc:%d,bytes:%d) 0x%X, 0x%X\n", + p -> kind, p -> gc_no, p -> bytes_allocd, + (p -> arg1) ^ 0x80000000, (p -> arg2) ^ 0x80000000); + } + printf("Trace incomplete\n"); + if (lock) UNLOCK(); +} + +# endif /* TRACE_BUF */ + +/* + * A version of GC_push_all that treats all interior pointers as valid + * and scans the entire region immediately, in case the contents + * change. + */ +void GC_push_all_eager(ptr_t bottom, ptr_t top) +{ + word * b = (word *)(((word) bottom + ALIGNMENT-1) & ~(ALIGNMENT-1)); + word * t = (word *)(((word) top) & ~(ALIGNMENT-1)); + register word *p; + register ptr_t q; + register word *lim; + register ptr_t greatest_ha = GC_greatest_plausible_heap_addr; + register ptr_t least_ha = GC_least_plausible_heap_addr; +# define GC_greatest_plausible_heap_addr greatest_ha +# define GC_least_plausible_heap_addr least_ha + + if (top == 0) return; + /* check all pointers in range and push if they appear */ + /* to be valid. */ + lim = t - 1 /* longword */; + for (p = b; p <= lim; p = (word *)(((ptr_t)p) + ALIGNMENT)) { + q = (ptr_t)(*p); + GC_PUSH_ONE_STACK((ptr_t)q, p); + } +# undef GC_greatest_plausible_heap_addr +# undef GC_least_plausible_heap_addr +} + +#ifndef THREADS +/* + * A version of GC_push_all that treats all interior pointers as valid + * and scans part of the area immediately, to make sure that saved + * register values are not lost. + * Cold_gc_frame delimits the stack section that must be scanned + * eagerly. A zero value indicates that no eager scanning is needed. + * We don't need to worry about the MANUAL_VDB case here, since this + * is only called in the single-threaded case. We assume that we + * cannot collect between an assignment and the corresponding + * GC_dirty() call. + */ +void GC_push_all_stack_partially_eager(ptr_t bottom, ptr_t top, + ptr_t cold_gc_frame) +{ + if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) { + /* Push the hot end of the stack eagerly, so that register values */ + /* saved inside GC frames are marked before they disappear. */ + /* The rest of the marking can be deferred until later. */ + if (0 == cold_gc_frame) { + GC_push_all_stack(bottom, top); + return; + } + GC_ASSERT(bottom <= cold_gc_frame && cold_gc_frame <= top); +# ifdef STACK_GROWS_DOWN + GC_push_all(cold_gc_frame - sizeof(ptr_t), top); + GC_push_all_eager(bottom, cold_gc_frame); +# else /* STACK_GROWS_UP */ + GC_push_all(bottom, cold_gc_frame + sizeof(ptr_t)); + GC_push_all_eager(cold_gc_frame, top); +# endif /* STACK_GROWS_UP */ + } else { + GC_push_all_eager(bottom, top); + } +# ifdef TRACE_BUF + GC_add_trace_entry("GC_push_all_stack", bottom, top); +# endif +} +#endif /* !THREADS */ + +void GC_push_all_stack(ptr_t bottom, ptr_t top) +{ +# if defined(THREADS) && defined(MPROTECT_VDB) + GC_push_all_eager(bottom, top); +# else + if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) { + GC_push_all(bottom, top); + } else { + GC_push_all_eager(bottom, top); + } +# endif +} + +#if !defined(SMALL_CONFIG) && !defined(USE_MARK_BYTES) && \ + defined(MARK_BIT_PER_GRANULE) +# if GC_GRANULE_WORDS == 1 +# define USE_PUSH_MARKED_ACCELERATORS +# define PUSH_GRANULE(q) \ + { ptr_t qcontents = (ptr_t)((q)[0]); \ + GC_PUSH_ONE_HEAP(qcontents, (q)); } +# elif GC_GRANULE_WORDS == 2 +# define USE_PUSH_MARKED_ACCELERATORS +# define PUSH_GRANULE(q) \ + { ptr_t qcontents = (ptr_t)((q)[0]); \ + GC_PUSH_ONE_HEAP(qcontents, (q)); \ + qcontents = (ptr_t)((q)[1]); \ + GC_PUSH_ONE_HEAP(qcontents, (q)+1); } +# elif GC_GRANULE_WORDS == 4 +# define USE_PUSH_MARKED_ACCELERATORS +# define PUSH_GRANULE(q) \ + { ptr_t qcontents = (ptr_t)((q)[0]); \ + GC_PUSH_ONE_HEAP(qcontents, (q)); \ + qcontents = (ptr_t)((q)[1]); \ + GC_PUSH_ONE_HEAP(qcontents, (q)+1); \ + qcontents = (ptr_t)((q)[2]); \ + GC_PUSH_ONE_HEAP(qcontents, (q)+2); \ + qcontents = (ptr_t)((q)[3]); \ + GC_PUSH_ONE_HEAP(qcontents, (q)+3); } +# endif +#endif + +#ifdef USE_PUSH_MARKED_ACCELERATORS +/* Push all objects reachable from marked objects in the given block */ +/* containing objects of size 1 granule. */ +void GC_push_marked1(struct hblk *h, hdr *hhdr) +{ + word * mark_word_addr = &(hhdr->hb_marks[0]); + word *p; + word *plim; + word *q; + word mark_word; + + /* Allow registers to be used for some frequently acccessed */ + /* global variables. Otherwise aliasing issues are likely */ + /* to prevent that. */ + ptr_t greatest_ha = GC_greatest_plausible_heap_addr; + ptr_t least_ha = GC_least_plausible_heap_addr; + mse * mark_stack_top = GC_mark_stack_top; + mse * mark_stack_limit = GC_mark_stack_limit; +# define GC_mark_stack_top mark_stack_top +# define GC_mark_stack_limit mark_stack_limit +# define GC_greatest_plausible_heap_addr greatest_ha +# define GC_least_plausible_heap_addr least_ha + + p = (word *)(h->hb_body); + plim = (word *)(((word)h) + HBLKSIZE); + + /* go through all words in block */ + while( p < plim ) { + mark_word = *mark_word_addr++; + q = p; + while(mark_word != 0) { + if (mark_word & 1) { + PUSH_GRANULE(q); + } + q += GC_GRANULE_WORDS; + mark_word >>= 1; + } + p += WORDSZ*GC_GRANULE_WORDS; + } + +# undef GC_greatest_plausible_heap_addr +# undef GC_least_plausible_heap_addr +# undef GC_mark_stack_top +# undef GC_mark_stack_limit + + GC_mark_stack_top = mark_stack_top; +} + + +#ifndef UNALIGNED + +/* Push all objects reachable from marked objects in the given block */ +/* of size 2 (granules) objects. */ +void GC_push_marked2(struct hblk *h, hdr *hhdr) +{ + word * mark_word_addr = &(hhdr->hb_marks[0]); + word *p; + word *plim; + word *q; + word mark_word; + + ptr_t greatest_ha = GC_greatest_plausible_heap_addr; + ptr_t least_ha = GC_least_plausible_heap_addr; + mse * mark_stack_top = GC_mark_stack_top; + mse * mark_stack_limit = GC_mark_stack_limit; + +# define GC_mark_stack_top mark_stack_top +# define GC_mark_stack_limit mark_stack_limit +# define GC_greatest_plausible_heap_addr greatest_ha +# define GC_least_plausible_heap_addr least_ha + + p = (word *)(h->hb_body); + plim = (word *)(((word)h) + HBLKSIZE); + + /* go through all words in block */ + while( p < plim ) { + mark_word = *mark_word_addr++; + q = p; + while(mark_word != 0) { + if (mark_word & 1) { + PUSH_GRANULE(q); + PUSH_GRANULE(q + GC_GRANULE_WORDS); + } + q += 2 * GC_GRANULE_WORDS; + mark_word >>= 2; + } + p += WORDSZ*GC_GRANULE_WORDS; + } + +# undef GC_greatest_plausible_heap_addr +# undef GC_least_plausible_heap_addr +# undef GC_mark_stack_top +# undef GC_mark_stack_limit + + GC_mark_stack_top = mark_stack_top; +} + +# if GC_GRANULE_WORDS < 4 +/* Push all objects reachable from marked objects in the given block */ +/* of size 4 (granules) objects. */ +/* There is a risk of mark stack overflow here. But we handle that. */ +/* And only unmarked objects get pushed, so it's not very likely. */ +void GC_push_marked4(struct hblk *h, hdr *hhdr) +{ + word * mark_word_addr = &(hhdr->hb_marks[0]); + word *p; + word *plim; + word *q; + word mark_word; + + ptr_t greatest_ha = GC_greatest_plausible_heap_addr; + ptr_t least_ha = GC_least_plausible_heap_addr; + mse * mark_stack_top = GC_mark_stack_top; + mse * mark_stack_limit = GC_mark_stack_limit; +# define GC_mark_stack_top mark_stack_top +# define GC_mark_stack_limit mark_stack_limit +# define GC_greatest_plausible_heap_addr greatest_ha +# define GC_least_plausible_heap_addr least_ha + + p = (word *)(h->hb_body); + plim = (word *)(((word)h) + HBLKSIZE); + + /* go through all words in block */ + while( p < plim ) { + mark_word = *mark_word_addr++; + q = p; + while(mark_word != 0) { + if (mark_word & 1) { + PUSH_GRANULE(q); + PUSH_GRANULE(q + GC_GRANULE_WORDS); + PUSH_GRANULE(q + 2*GC_GRANULE_WORDS); + PUSH_GRANULE(q + 3*GC_GRANULE_WORDS); + } + q += 4 * GC_GRANULE_WORDS; + mark_word >>= 4; + } + p += WORDSZ*GC_GRANULE_WORDS; + } +# undef GC_greatest_plausible_heap_addr +# undef GC_least_plausible_heap_addr +# undef GC_mark_stack_top +# undef GC_mark_stack_limit + GC_mark_stack_top = mark_stack_top; +} + +#endif /* GC_GRANULE_WORDS < 4 */ + +#endif /* UNALIGNED */ + +#endif /* USE_PUSH_MARKED_ACCELERATORS */ + +/* Push all objects reachable from marked objects in the given block */ +void GC_push_marked(struct hblk *h, hdr *hhdr) +{ + size_t sz = hhdr -> hb_sz; + word descr = hhdr -> hb_descr; + ptr_t p; + word bit_no; + ptr_t lim; + mse * GC_mark_stack_top_reg; + mse * mark_stack_limit = GC_mark_stack_limit; + + /* Some quick shortcuts: */ + if ((0 | GC_DS_LENGTH) == descr) return; + if (GC_block_empty(hhdr)/* nothing marked */) return; + GC_n_rescuing_pages++; + GC_objects_are_marked = TRUE; + if (sz > MAXOBJBYTES) { + lim = h -> hb_body; + } else { + lim = (h + 1)->hb_body - sz; + } + + switch(BYTES_TO_GRANULES(sz)) { +# if defined(USE_PUSH_MARKED_ACCELERATORS) + case 1: + GC_push_marked1(h, hhdr); + break; +# if !defined(UNALIGNED) + case 2: + GC_push_marked2(h, hhdr); + break; +# if GC_GRANULE_WORDS < 4 + case 4: + GC_push_marked4(h, hhdr); + break; +# endif +# endif +# endif + default: + GC_mark_stack_top_reg = GC_mark_stack_top; + for (p = h -> hb_body, bit_no = 0; p <= lim; + p += sz, bit_no += MARK_BIT_OFFSET(sz)) { + if (mark_bit_from_hdr(hhdr, bit_no)) { + /* Mark from fields inside the object */ + PUSH_OBJ(p, hhdr, GC_mark_stack_top_reg, mark_stack_limit); + } + } + GC_mark_stack_top = GC_mark_stack_top_reg; + } +} + +#ifndef SMALL_CONFIG +/* Test whether any page in the given block is dirty */ +GC_bool GC_block_was_dirty(struct hblk *h, hdr *hhdr) +{ + size_t sz = hhdr -> hb_sz; + + if (sz <= MAXOBJBYTES) { + return(GC_page_was_dirty(h)); + } else { + ptr_t p = (ptr_t)h; + while (p < (ptr_t)h + sz) { + if (GC_page_was_dirty((struct hblk *)p)) return(TRUE); + p += HBLKSIZE; + } + return(FALSE); + } +} +#endif /* SMALL_CONFIG */ + +/* Similar to GC_push_next_marked, but return address of next block */ +struct hblk * GC_push_next_marked(struct hblk *h) +{ + hdr * hhdr = HDR(h); + + if (EXPECT(IS_FORWARDING_ADDR_OR_NIL(hhdr), FALSE)) { + h = GC_next_used_block(h); + if (h == 0) return(0); + hhdr = GC_find_header((ptr_t)h); + } + GC_push_marked(h, hhdr); + return(h + OBJ_SZ_TO_BLOCKS(hhdr -> hb_sz)); +} + +#ifndef SMALL_CONFIG +/* Identical to above, but mark only from dirty pages */ +struct hblk * GC_push_next_marked_dirty(struct hblk *h) +{ + hdr * hhdr = HDR(h); + + if (!GC_dirty_maintained) { ABORT("dirty bits not set up"); } + for (;;) { + if (EXPECT(IS_FORWARDING_ADDR_OR_NIL(hhdr), FALSE)) { + h = GC_next_used_block(h); + if (h == 0) return(0); + hhdr = GC_find_header((ptr_t)h); + } +# ifdef STUBBORN_ALLOC + if (hhdr -> hb_obj_kind == STUBBORN) { + if (GC_page_was_changed(h) && GC_block_was_dirty(h, hhdr)) { + break; + } + } else { + if (GC_block_was_dirty(h, hhdr)) break; + } +# else + if (GC_block_was_dirty(h, hhdr)) break; +# endif + h += OBJ_SZ_TO_BLOCKS(hhdr -> hb_sz); + hhdr = HDR(h); + } + GC_push_marked(h, hhdr); + return(h + OBJ_SZ_TO_BLOCKS(hhdr -> hb_sz)); +} +#endif + +/* Similar to above, but for uncollectable pages. Needed since we */ +/* do not clear marks for such pages, even for full collections. */ +struct hblk * GC_push_next_marked_uncollectable(struct hblk *h) +{ + hdr * hhdr = HDR(h); + + for (;;) { + if (EXPECT(IS_FORWARDING_ADDR_OR_NIL(hhdr), FALSE)) { + h = GC_next_used_block(h); + if (h == 0) return(0); + hhdr = GC_find_header((ptr_t)h); + } + if (hhdr -> hb_obj_kind == UNCOLLECTABLE) break; + h += OBJ_SZ_TO_BLOCKS(hhdr -> hb_sz); + hhdr = HDR(h); + } + GC_push_marked(h, hhdr); + return(h + OBJ_SZ_TO_BLOCKS(hhdr -> hb_sz)); +} + diff --git a/mosesdecoder/jam-files/engine/boehm_gc/win32_threads.c b/mosesdecoder/jam-files/engine/boehm_gc/win32_threads.c new file mode 100644 index 0000000000000000000000000000000000000000..ac579719000cf38edfee2d4f411facf0faae74be --- /dev/null +++ b/mosesdecoder/jam-files/engine/boehm_gc/win32_threads.c @@ -0,0 +1,1570 @@ +#include "private/gc_priv.h" + +#if defined(GC_WIN32_THREADS) + +#include + +#ifdef THREAD_LOCAL_ALLOC +# include "private/thread_local_alloc.h" +#endif /* THREAD_LOCAL_ALLOC */ + +/* Allocation lock declarations. */ +#if !defined(USE_PTHREAD_LOCKS) +# if defined(GC_DLL) + __declspec(dllexport) CRITICAL_SECTION GC_allocate_ml; +# else + CRITICAL_SECTION GC_allocate_ml; +# endif + DWORD GC_lock_holder = NO_THREAD; + /* Thread id for current holder of allocation lock */ +#else + pthread_mutex_t GC_allocate_ml = PTHREAD_MUTEX_INITIALIZER; + unsigned long GC_lock_holder = NO_THREAD; +#endif + +#ifdef GC_PTHREADS +# include + +/* GC_DLL should not normally be defined, especially since we often do turn */ +/* on THREAD_LOCAL_ALLOC, which is currently incompatible. */ +/* It might be possible to get GC_DLL and DllMain-based thread registration */ +/* to work with Cygwin, but if you try you are on your own. */ +#ifdef GC_DLL +# error GC_DLL untested with Cygwin +#endif + + /* Cygwin-specific forward decls */ +# undef pthread_create +# undef pthread_sigmask +# undef pthread_join +# undef pthread_detach +# undef dlopen + +# ifdef DEBUG_THREADS +# ifdef CYGWIN32 +# define DEBUG_CYGWIN_THREADS 1 +# define DEBUG_WIN32_PTHREADS 0 +# else +# define DEBUG_WIN32_PTHREADS 1 +# define DEBUG_CYGWIN_THREADS 0 +# endif +# else +# define DEBUG_CYGWIN_THREADS 0 +# define DEBUG_WIN32_PTHREADS 0 +# endif + + void * GC_pthread_start(void * arg); + void GC_thread_exit_proc(void *arg); + +# include + +#else + +# ifdef DEBUG_THREADS +# define DEBUG_WIN32_THREADS 1 +# else +# define DEBUG_WIN32_THREADS 0 +# endif + +# undef CreateThread +# undef ExitThread +# undef _beginthreadex +# undef _endthreadex +# undef _beginthread +# ifdef DEBUG_THREADS +# define DEBUG_WIN32_THREADS 1 +# else +# define DEBUG_WIN32_THREADS 0 +# endif + +# include /* For _beginthreadex, _endthreadex */ + +#endif + +#if defined(GC_DLL) && !defined(MSWINCE) + static GC_bool GC_win32_dll_threads = FALSE; + /* This code operates in two distinct modes, depending on */ + /* the setting of GC_win32_dll_threads. If */ + /* GC_win32_dll_threads is set, all threads in the process */ + /* are implicitly registered with the GC by DllMain. */ + /* No explicit registration is required, and attempts at */ + /* explicit registration are ignored. This mode is */ + /* very different from the Posix operation of the collector. */ + /* In this mode access to the thread table is lock-free. */ + /* Hence there is a static limit on the number of threads. */ + + /* If GC_win32_dll_threads is FALSE, or the collector is */ + /* built without GC_DLL defined, things operate in a way */ + /* that is very similar to Posix platforms, and new threads */ + /* must be registered with the collector, e.g. by using */ + /* preprocessor-based interception of the thread primitives. */ + /* In this case, we use a real data structure for the thread */ + /* table. Note that there is no equivalent of linker-based */ + /* call interception, since we don't have ELF-like */ + /* facilities. The Windows analog appears to be "API */ + /* hooking", which really seems to be a standard way to */ + /* do minor binary rewriting (?). I'd prefer not to have */ + /* the basic collector rely on such facilities, but an */ + /* optional package that intercepts thread calls this way */ + /* would probably be nice. */ + + /* GC_win32_dll_threads must be set at initialization time, */ + /* i.e. before any collector or thread calls. We make it a */ + /* "dynamic" option only to avoid multiple library versions. */ +#else +# define GC_win32_dll_threads FALSE +#endif + +/* We have two versions of the thread table. Which one */ +/* we us depends on whether or not GC_win32_dll_threads */ +/* is set. Note that before initialization, we don't */ +/* add any entries to either table, even if DllMain is */ +/* called. The main thread will be added on */ +/* initialization. */ + +/* The type of the first argument to InterlockedExchange. */ +/* Documented to be LONG volatile *, but at least gcc likes */ +/* this better. */ +typedef LONG * IE_t; + +GC_bool GC_thr_initialized = FALSE; + +GC_bool GC_need_to_lock = FALSE; + +static GC_bool parallel_initialized = FALSE; + +void GC_init_parallel(void); + +#ifdef GC_DLL + /* Turn on GC_win32_dll_threads */ + GC_API void GC_use_DllMain(void) + { +# ifdef THREAD_LOCAL_ALLOC + ABORT("Cannot use thread local allocation with DllMain-based " + "thread registration."); + /* Thread-local allocation really wants to lock at thread */ + /* entry and exit. */ +# endif + GC_ASSERT(!parallel_initialized); + GC_win32_dll_threads = TRUE; + } +#else + GC_API void GC_use_DllMain(void) + { + ABORT("GC not configured as DLL"); + } +#endif + +DWORD GC_main_thread = 0; + +struct GC_Thread_Rep { + union { + AO_t tm_in_use; /* Updated without lock. */ + /* We assert that unused */ + /* entries have invalid ids of */ + /* zero and zero stack fields. */ + /* Used only with GC_win32_dll_threads. */ + struct GC_Thread_Rep * tm_next; + /* Hash table link without */ + /* GC_win32_dll_threads. */ + /* More recently allocated threads */ + /* with a given pthread id come */ + /* first. (All but the first are */ + /* guaranteed to be dead, but we may */ + /* not yet have registered the join.) */ + } table_management; +# define in_use table_management.tm_in_use +# define next table_management.tm_next + DWORD id; + HANDLE handle; + ptr_t stack_base; /* The cold end of the stack. */ + /* 0 ==> entry not valid. */ + /* !in_use ==> stack_base == 0 */ + GC_bool suspended; + +# ifdef GC_PTHREADS + void *status; /* hold exit value until join in case it's a pointer */ + pthread_t pthread_id; + short flags; /* Protected by GC lock. */ +# define FINISHED 1 /* Thread has exited. */ +# define DETACHED 2 /* Thread is intended to be detached. */ +# define KNOWN_FINISHED(t) (((t) -> flags) & FINISHED) +# else +# define KNOWN_FINISHED(t) 0 +# endif +# ifdef THREAD_LOCAL_ALLOC + struct thread_local_freelists tlfs; +# endif +}; + +typedef struct GC_Thread_Rep * GC_thread; +typedef volatile struct GC_Thread_Rep * GC_vthread; + +/* + * We assumed that volatile ==> memory ordering, at least among + * volatiles. This code should consistently use atomic_ops. + */ + +volatile GC_bool GC_please_stop = FALSE; + +/* + * We track thread attachments while the world is supposed to be stopped. + * Unfortunately, we can't stop them from starting, since blocking in + * DllMain seems to cause the world to deadlock. Thus we have to recover + * If we notice this in the middle of marking. + */ + +AO_t GC_attached_thread = FALSE; +/* Return TRUE if an thread was attached since we last asked or */ +/* since GC_attached_thread was explicitly reset. */ +GC_bool GC_started_thread_while_stopped(void) +{ + AO_t result; + + if (GC_win32_dll_threads) { + AO_nop_full(); /* Prior heap reads need to complete earlier. */ + result = AO_load(&GC_attached_thread); + if (result) { + AO_store(&GC_attached_thread, FALSE); + } + return ((GC_bool)result); + } else { + return FALSE; + } +} + +/* Thread table used if GC_win32_dll_threads is set. */ +/* This is a fixed size array. */ +/* Since we use runtime conditionals, both versions */ +/* are always defined. */ +# ifndef MAX_THREADS +# define MAX_THREADS 512 +# endif + /* Things may get quite slow for large numbers of threads, */ + /* since we look them up with sequential search. */ + + volatile struct GC_Thread_Rep dll_thread_table[MAX_THREADS]; + + volatile LONG GC_max_thread_index = 0; + /* Largest index in dll_thread_table */ + /* that was ever used. */ + +/* And now the version used if GC_win32_dll_threads is not set. */ +/* This is a chained hash table, with much of the code borrowed */ +/* From the Posix implementation. */ +# define THREAD_TABLE_SZ 256 /* Must be power of 2 */ + GC_thread GC_threads[THREAD_TABLE_SZ]; + + +/* Add a thread to GC_threads. We assume it wasn't already there. */ +/* Caller holds allocation lock. */ +/* Unlike the pthreads version, the id field is set by the caller. */ +GC_thread GC_new_thread(DWORD id) +{ + word hv = ((word)id) % THREAD_TABLE_SZ; + GC_thread result; + /* It may not be safe to allocate when we register the first thread. */ + static struct GC_Thread_Rep first_thread; + static GC_bool first_thread_used = FALSE; + + GC_ASSERT(I_HOLD_LOCK()); + if (!first_thread_used) { + result = &first_thread; + first_thread_used = TRUE; + } else { + GC_ASSERT(!GC_win32_dll_threads); + result = (struct GC_Thread_Rep *) + GC_INTERNAL_MALLOC(sizeof(struct GC_Thread_Rep), NORMAL); +# ifdef GC_PTHREADS + /* result can be NULL -> segfault */ + GC_ASSERT(result -> flags == 0); +# endif + } + if (result == 0) return(0); + /* result -> id = id; Done by caller. */ + result -> next = GC_threads[hv]; + GC_threads[hv] = result; +# ifdef GC_PTHREADS + GC_ASSERT(result -> flags == 0 /* && result -> thread_blocked == 0 */); +# endif + return(result); +} + +extern LONG WINAPI GC_write_fault_handler(struct _EXCEPTION_POINTERS *exc_info); + +#if defined(GWW_VDB) && defined(MPROTECT_VDB) + extern GC_bool GC_gww_dirty_init(void); + /* Defined in os_dep.c. Returns TRUE if GetWriteWatch is available. */ + /* may be called repeatedly. */ +#endif + +GC_bool GC_in_thread_creation = FALSE; /* Protected by allocation lock. */ + +/* + * This may be called from DllMain, and hence operates under unusual + * constraints. In particular, it must be lock-free if GC_win32_dll_threads + * is set. Always called from the thread being added. + * If GC_win32_dll_threads is not set, we already hold the allocation lock, + * except possibly during single-threaded start-up code. + */ +static GC_thread GC_register_my_thread_inner(struct GC_stack_base *sb, + DWORD thread_id) +{ + GC_vthread me; + + /* The following should be a noop according to the win32 */ + /* documentation. There is empirical evidence that it */ + /* isn't. - HB */ +# if defined(MPROTECT_VDB) +# if defined(GWW_VDB) + if (GC_incremental && !GC_gww_dirty_init()) + SetUnhandledExceptionFilter(GC_write_fault_handler); +# else + if (GC_incremental) SetUnhandledExceptionFilter(GC_write_fault_handler); +# endif +# endif + + if (GC_win32_dll_threads) { + int i; + /* It appears to be unsafe to acquire a lock here, since this */ + /* code is apparently not preeemptible on some systems. */ + /* (This is based on complaints, not on Microsoft's official */ + /* documentation, which says this should perform "only simple */ + /* initialization tasks".) */ + /* Hence we make do with nonblocking synchronization. */ + /* It has been claimed that DllMain is really only executed with */ + /* a particular system lock held, and thus careful use of locking */ + /* around code that doesn't call back into the system libraries */ + /* might be OK. But this hasn't been tested across all win32 */ + /* variants. */ + /* cast away volatile qualifier */ + for (i = 0; InterlockedExchange((IE_t)&dll_thread_table[i].in_use,1) != 0; + i++) { + /* Compare-and-swap would make this cleaner, but that's not */ + /* supported before Windows 98 and NT 4.0. In Windows 2000, */ + /* InterlockedExchange is supposed to be replaced by */ + /* InterlockedExchangePointer, but that's not really what I */ + /* want here. */ + /* FIXME: We should eventually declare Win95 dead and use AO_ */ + /* primitives here. */ + if (i == MAX_THREADS - 1) + ABORT("too many threads"); + } + /* Update GC_max_thread_index if necessary. The following is safe, */ + /* and unlike CompareExchange-based solutions seems to work on all */ + /* Windows95 and later platforms. */ + /* Unfortunately, GC_max_thread_index may be temporarily out of */ + /* bounds, so readers have to compensate. */ + while (i > GC_max_thread_index) { + InterlockedIncrement((IE_t)&GC_max_thread_index); + } + if (GC_max_thread_index >= MAX_THREADS) { + /* We overshot due to simultaneous increments. */ + /* Setting it to MAX_THREADS-1 is always safe. */ + GC_max_thread_index = MAX_THREADS - 1; + } + me = dll_thread_table + i; + } else /* Not using DllMain */ { + GC_ASSERT(I_HOLD_LOCK()); + GC_in_thread_creation = TRUE; /* OK to collect from unknown thread. */ + me = GC_new_thread(thread_id); + GC_in_thread_creation = FALSE; + } +# ifdef GC_PTHREADS + /* me can be NULL -> segfault */ + me -> pthread_id = pthread_self(); +# endif + + if (!DuplicateHandle(GetCurrentProcess(), + GetCurrentThread(), + GetCurrentProcess(), + (HANDLE*)&(me -> handle), + 0, + 0, + DUPLICATE_SAME_ACCESS)) { + DWORD last_error = GetLastError(); + GC_err_printf("Last error code: %d\n", last_error); + ABORT("DuplicateHandle failed"); + } + me -> stack_base = sb -> mem_base; + /* Up until this point, GC_push_all_stacks considers this thread */ + /* invalid. */ + /* Up until this point, this entry is viewed as reserved but invalid */ + /* by GC_delete_thread. */ + me -> id = thread_id; +# if defined(THREAD_LOCAL_ALLOC) + GC_init_thread_local((GC_tlfs)(&(me->tlfs))); +# endif + if (me -> stack_base == NULL) + ABORT("Bad stack base in GC_register_my_thread_inner"); + if (GC_win32_dll_threads) { + if (GC_please_stop) { + AO_store(&GC_attached_thread, TRUE); + AO_nop_full(); // Later updates must become visible after this. + } + /* We'd like to wait here, but can't, since waiting in DllMain */ + /* provokes deadlocks. */ + /* Thus we force marking to be restarted instead. */ + } else { + GC_ASSERT(!GC_please_stop); + /* Otherwise both we and the thread stopping code would be */ + /* holding the allocation lock. */ + } + return (GC_thread)(me); +} + +/* + * GC_max_thread_index may temporarily be larger than MAX_THREADS. + * To avoid subscript errors, we check on access. + */ +#ifdef __GNUC__ +__inline__ +#endif +LONG GC_get_max_thread_index() +{ + LONG my_max = GC_max_thread_index; + + if (my_max >= MAX_THREADS) return MAX_THREADS-1; + return my_max; +} + +/* Return the GC_thread corresponding to a thread id. May be called */ +/* without a lock, but should be called in contexts in which the */ +/* requested thread cannot be asynchronously deleted, e.g. from the */ +/* thread itself. */ +/* This version assumes that either GC_win32_dll_threads is set, or */ +/* we hold the allocator lock. */ +/* Also used (for assertion checking only) from thread_local_alloc.c. */ +GC_thread GC_lookup_thread_inner(DWORD thread_id) { + if (GC_win32_dll_threads) { + int i; + LONG my_max = GC_get_max_thread_index(); + for (i = 0; + i <= my_max && + (!AO_load_acquire(&(dll_thread_table[i].in_use)) + || dll_thread_table[i].id != thread_id); + /* Must still be in_use, since nobody else can store our thread_id. */ + i++) {} + if (i > my_max) { + return 0; + } else { + return (GC_thread)(dll_thread_table + i); + } + } else { + word hv = ((word)thread_id) % THREAD_TABLE_SZ; + register GC_thread p = GC_threads[hv]; + + GC_ASSERT(I_HOLD_LOCK()); + while (p != 0 && p -> id != thread_id) p = p -> next; + return(p); + } +} + +/* A version of the above that acquires the lock if necessary. Note */ +/* that the identically named function for pthreads is different, and */ +/* just assumes we hold the lock. */ +/* Also used (for assertion checking only) from thread_local_alloc.c. */ +static GC_thread GC_lookup_thread(DWORD thread_id) +{ + if (GC_win32_dll_threads) { + return GC_lookup_thread_inner(thread_id); + } else { + GC_thread result; + LOCK(); + result = GC_lookup_thread_inner(thread_id); + UNLOCK(); + return result; + } +} + +/* If a thread has been joined, but we have not yet */ +/* been notified, then there may be more than one thread */ +/* in the table with the same win32 id. */ +/* This is OK, but we need a way to delete a specific one. */ +/* Assumes we hold the allocation lock unless */ +/* GC_win32_dll_threads is set. */ +/* If GC_win32_dll_threads is set it should be called from the */ +/* thread being deleted. */ +void GC_delete_gc_thread(GC_vthread gc_id) +{ + if (GC_win32_dll_threads) { + /* This is intended to be lock-free. */ + /* It is either called synchronously from the thread being deleted, */ + /* or by the joining thread. */ + /* In this branch asynchronosu changes to *gc_id are possible. */ + CloseHandle(gc_id->handle); + gc_id -> stack_base = 0; + gc_id -> id = 0; +# ifdef CYGWIN32 + gc_id -> pthread_id = 0; +# endif /* CYGWIN32 */ +# ifdef GC_WIN32_PTHREADS + gc_id -> pthread_id.p = NULL; +# endif /* GC_WIN32_PTHREADS */ + AO_store_release(&(gc_id->in_use), FALSE); + } else { + /* Cast away volatile qualifier, since we have lock. */ + GC_thread gc_nvid = (GC_thread)gc_id; + DWORD id = gc_nvid -> id; + word hv = ((word)id) % THREAD_TABLE_SZ; + register GC_thread p = GC_threads[hv]; + register GC_thread prev = 0; + + GC_ASSERT(I_HOLD_LOCK()); + while (p != gc_nvid) { + prev = p; + p = p -> next; + } + if (prev == 0) { + GC_threads[hv] = p -> next; + } else { + prev -> next = p -> next; + } + GC_INTERNAL_FREE(p); + } +} + +/* Delete a thread from GC_threads. We assume it is there. */ +/* (The code intentionally traps if it wasn't.) */ +/* Assumes we hold the allocation lock unless */ +/* GC_win32_dll_threads is set. */ +/* If GC_win32_dll_threads is set it should be called from the */ +/* thread being deleted. */ +void GC_delete_thread(DWORD id) +{ + if (GC_win32_dll_threads) { + GC_thread t = GC_lookup_thread_inner(id); + + if (0 == t) { + WARN("Removing nonexistent thread %ld\n", (GC_word)id); + } else { + GC_delete_gc_thread(t); + } + } else { + word hv = ((word)id) % THREAD_TABLE_SZ; + register GC_thread p = GC_threads[hv]; + register GC_thread prev = 0; + + GC_ASSERT(I_HOLD_LOCK()); + while (p -> id != id) { + prev = p; + p = p -> next; + } + if (prev == 0) { + GC_threads[hv] = p -> next; + } else { + prev -> next = p -> next; + } + GC_INTERNAL_FREE(p); + } +} + +int GC_register_my_thread(struct GC_stack_base *sb) { + DWORD t = GetCurrentThreadId(); + + if (0 == GC_lookup_thread(t)) { + /* We lock here, since we want to wait for an ongoing GC. */ + LOCK(); + GC_register_my_thread_inner(sb, t); + UNLOCK(); + return GC_SUCCESS; + } else { + return GC_DUPLICATE; + } +} + +int GC_unregister_my_thread(void) +{ + DWORD t = GetCurrentThreadId(); + +# if defined(THREAD_LOCAL_ALLOC) + LOCK(); + { + GC_thread me = GC_lookup_thread_inner(t); + GC_destroy_thread_local(&(me->tlfs)); + } + UNLOCK(); +# endif + if (GC_win32_dll_threads) { + /* Should we just ignore this? */ + GC_delete_thread(t); + } else { + LOCK(); + GC_delete_thread(t); + UNLOCK(); + } + return GC_SUCCESS; +} + + +#ifdef GC_PTHREADS + +/* A quick-and-dirty cache of the mapping between pthread_t */ +/* and win32 thread id. */ +#define PTHREAD_MAP_SIZE 512 +DWORD GC_pthread_map_cache[PTHREAD_MAP_SIZE]; +#define HASH(pthread_id) ((NUMERIC_THREAD_ID(pthread_id) >> 5) % PTHREAD_MAP_SIZE) + /* It appears pthread_t is really a pointer type ... */ +#define SET_PTHREAD_MAP_CACHE(pthread_id, win32_id) \ + GC_pthread_map_cache[HASH(pthread_id)] = (win32_id); +#define GET_PTHREAD_MAP_CACHE(pthread_id) \ + GC_pthread_map_cache[HASH(pthread_id)] + +/* Return a GC_thread corresponding to a given pthread_t. */ +/* Returns 0 if it's not there. */ +/* We assume that this is only called for pthread ids that */ +/* have not yet terminated or are still joinable, and */ +/* cannot be concurrently terminated. */ +/* Assumes we do NOT hold the allocation lock. */ +static GC_thread GC_lookup_pthread(pthread_t id) +{ + if (GC_win32_dll_threads) { + int i; + LONG my_max = GC_get_max_thread_index(); + + for (i = 0; + i <= my_max && + (!AO_load_acquire(&(dll_thread_table[i].in_use)) + || THREAD_EQUAL(dll_thread_table[i].pthread_id, id)); + /* Must still be in_use, since nobody else can store our thread_id. */ + i++); + if (i > my_max) return 0; + return (GC_thread)(dll_thread_table + i); + } else { + /* We first try the cache. If that fails, we use a very slow */ + /* approach. */ + int hv_guess = GET_PTHREAD_MAP_CACHE(id) % THREAD_TABLE_SZ; + int hv; + GC_thread p; + + LOCK(); + for (p = GC_threads[hv_guess]; 0 != p; p = p -> next) { + if (THREAD_EQUAL(p -> pthread_id, id)) + goto foundit; + } + for (hv = 0; hv < THREAD_TABLE_SZ; ++hv) { + for (p = GC_threads[hv]; 0 != p; p = p -> next) { + if (THREAD_EQUAL(p -> pthread_id, id)) + goto foundit; + } + } + p = 0; + foundit: + UNLOCK(); + return p; + } +} + +#endif /* GC_PTHREADS */ + +void GC_push_thread_structures(void) +{ + GC_ASSERT(I_HOLD_LOCK()); + if (GC_win32_dll_threads) { + /* Unlike the other threads implementations, the thread table here */ + /* contains no pointers to the collectable heap. Thus we have */ + /* no private structures we need to preserve. */ +# ifdef GC_PTHREADS + { int i; /* pthreads may keep a pointer in the thread exit value */ + LONG my_max = GC_get_max_thread_index(); + + for (i = 0; i <= my_max; i++) + if (dll_thread_table[i].in_use) + GC_push_all((ptr_t)&(dll_thread_table[i].status), + (ptr_t)(&(dll_thread_table[i].status)+1)); + } +# endif + } else { + GC_push_all((ptr_t)(GC_threads), (ptr_t)(GC_threads)+sizeof(GC_threads)); + } +# if defined(THREAD_LOCAL_ALLOC) + GC_push_all((ptr_t)(&GC_thread_key), + (ptr_t)(&GC_thread_key)+sizeof(&GC_thread_key)); + /* Just in case we ever use our own TLS implementation. */ +# endif +} + +/* Suspend the given thread, if it's still active. */ +void GC_suspend(GC_thread t) +{ +# ifdef MSWINCE + /* SuspendThread will fail if thread is running kernel code */ + while (SuspendThread(t -> handle) == (DWORD)-1) + Sleep(10); +# else + /* Apparently the Windows 95 GetOpenFileName call creates */ + /* a thread that does not properly get cleaned up, and */ + /* SuspendThread on its descriptor may provoke a crash. */ + /* This reduces the probability of that event, though it still */ + /* appears there's a race here. */ + DWORD exitCode; + if (GetExitCodeThread(t -> handle, &exitCode) && + exitCode != STILL_ACTIVE) { + t -> stack_base = 0; /* prevent stack from being pushed */ +# ifndef GC_PTHREADS + /* this breaks pthread_join on Cygwin, which is guaranteed to */ + /* only see user pthreads */ + AO_store(&(t -> in_use), FALSE); + CloseHandle(t -> handle); +# endif + return; + } + if (SuspendThread(t -> handle) == (DWORD)-1) + ABORT("SuspendThread failed"); +# endif + t -> suspended = TRUE; +} + +/* Defined in misc.c */ +#ifndef CYGWIN32 + extern CRITICAL_SECTION GC_write_cs; +#endif + +void GC_stop_world(void) +{ + DWORD thread_id = GetCurrentThreadId(); + int i; + + if (!GC_thr_initialized) ABORT("GC_stop_world() called before GC_thr_init()"); + GC_ASSERT(I_HOLD_LOCK()); + + GC_please_stop = TRUE; +# ifndef CYGWIN32 + EnterCriticalSection(&GC_write_cs); +# endif + if (GC_win32_dll_threads) { + /* Any threads being created during this loop will end up setting */ + /* GC_attached_thread when they start. This will force marking to */ + /* restart. */ + /* This is not ideal, but hopefully correct. */ + GC_attached_thread = FALSE; + for (i = 0; i <= GC_get_max_thread_index(); i++) { + GC_vthread t = dll_thread_table + i; + if (t -> stack_base != 0 + && t -> id != thread_id) { + GC_suspend((GC_thread)t); + } + } + } else { + GC_thread t; + int i; + + for (i = 0; i < THREAD_TABLE_SZ; i++) { + for (t = GC_threads[i]; t != 0; t = t -> next) { + if (t -> stack_base != 0 + && !KNOWN_FINISHED(t) + && t -> id != thread_id) { + GC_suspend(t); + } + } + } + } +# ifndef CYGWIN32 + LeaveCriticalSection(&GC_write_cs); +# endif +} + +void GC_start_world(void) +{ + DWORD thread_id = GetCurrentThreadId(); + int i; + LONG my_max = GC_get_max_thread_index(); + + GC_ASSERT(I_HOLD_LOCK()); + if (GC_win32_dll_threads) { + for (i = 0; i <= my_max; i++) { + GC_thread t = (GC_thread)(dll_thread_table + i); + if (t -> stack_base != 0 && t -> suspended + && t -> id != thread_id) { + if (ResumeThread(t -> handle) == (DWORD)-1) + ABORT("ResumeThread failed"); + t -> suspended = FALSE; + } + } + } else { + GC_thread t; + int i; + + for (i = 0; i < THREAD_TABLE_SZ; i++) { + for (t = GC_threads[i]; t != 0; t = t -> next) { + if (t -> stack_base != 0 && t -> suspended + && t -> id != thread_id) { + if (ResumeThread(t -> handle) == (DWORD)-1) + ABORT("ResumeThread failed"); + t -> suspended = FALSE; + } + } + } + } + GC_please_stop = FALSE; +} + +# ifdef MSWINCE + /* The VirtualQuery calls below won't work properly on WinCE, but */ + /* since each stack is restricted to an aligned 64K region of */ + /* virtual memory we can just take the next lowest multiple of 64K. */ +# define GC_get_stack_min(s) \ + ((ptr_t)(((DWORD)(s) - 1) & 0xFFFF0000)) +# else + static ptr_t GC_get_stack_min(ptr_t s) + { + ptr_t bottom; + MEMORY_BASIC_INFORMATION info; + VirtualQuery(s, &info, sizeof(info)); + do { + bottom = info.BaseAddress; + VirtualQuery(bottom - 1, &info, sizeof(info)); + } while ((info.Protect & PAGE_READWRITE) + && !(info.Protect & PAGE_GUARD)); + return(bottom); + } +# endif + +void GC_push_stack_for(GC_thread thread) +{ + int dummy; + ptr_t sp, stack_min; + DWORD me = GetCurrentThreadId(); + + if (thread -> stack_base) { + if (thread -> id == me) { + sp = (ptr_t) &dummy; + } else { + CONTEXT context; + context.ContextFlags = CONTEXT_INTEGER|CONTEXT_CONTROL; + if (!GetThreadContext(thread -> handle, &context)) + ABORT("GetThreadContext failed"); + + /* Push all registers that might point into the heap. Frame */ + /* pointer registers are included in case client code was */ + /* compiled with the 'omit frame pointer' optimisation. */ +# define PUSH1(reg) GC_push_one((word)context.reg) +# define PUSH2(r1,r2) PUSH1(r1), PUSH1(r2) +# define PUSH4(r1,r2,r3,r4) PUSH2(r1,r2), PUSH2(r3,r4) +# if defined(I386) + PUSH4(Edi,Esi,Ebx,Edx), PUSH2(Ecx,Eax), PUSH1(Ebp); + sp = (ptr_t)context.Esp; +# elif defined(X86_64) + PUSH4(Rax,Rcx,Rdx,Rbx); PUSH2(Rbp, Rsi); PUSH1(Rdi); + PUSH4(R8, R9, R10, R11); PUSH4(R12, R13, R14, R15); + sp = (ptr_t)context.Rsp; +# elif defined(ARM32) + PUSH4(R0,R1,R2,R3),PUSH4(R4,R5,R6,R7),PUSH4(R8,R9,R10,R11),PUSH1(R12); + sp = (ptr_t)context.Sp; +# elif defined(SHx) + PUSH4(R0,R1,R2,R3), PUSH4(R4,R5,R6,R7), PUSH4(R8,R9,R10,R11); + PUSH2(R12,R13), PUSH1(R14); + sp = (ptr_t)context.R15; +# elif defined(MIPS) + PUSH4(IntAt,IntV0,IntV1,IntA0), PUSH4(IntA1,IntA2,IntA3,IntT0); + PUSH4(IntT1,IntT2,IntT3,IntT4), PUSH4(IntT5,IntT6,IntT7,IntS0); + PUSH4(IntS1,IntS2,IntS3,IntS4), PUSH4(IntS5,IntS6,IntS7,IntT8); + PUSH4(IntT9,IntK0,IntK1,IntS8); + sp = (ptr_t)context.IntSp; +# elif defined(PPC) + PUSH4(Gpr0, Gpr3, Gpr4, Gpr5), PUSH4(Gpr6, Gpr7, Gpr8, Gpr9); + PUSH4(Gpr10,Gpr11,Gpr12,Gpr14), PUSH4(Gpr15,Gpr16,Gpr17,Gpr18); + PUSH4(Gpr19,Gpr20,Gpr21,Gpr22), PUSH4(Gpr23,Gpr24,Gpr25,Gpr26); + PUSH4(Gpr27,Gpr28,Gpr29,Gpr30), PUSH1(Gpr31); + sp = (ptr_t)context.Gpr1; +# elif defined(ALPHA) + PUSH4(IntV0,IntT0,IntT1,IntT2), PUSH4(IntT3,IntT4,IntT5,IntT6); + PUSH4(IntT7,IntS0,IntS1,IntS2), PUSH4(IntS3,IntS4,IntS5,IntFp); + PUSH4(IntA0,IntA1,IntA2,IntA3), PUSH4(IntA4,IntA5,IntT8,IntT9); + PUSH4(IntT10,IntT11,IntT12,IntAt); + sp = (ptr_t)context.IntSp; +# else +# error "architecture is not supported" +# endif + } /* ! current thread */ + + stack_min = GC_get_stack_min(thread->stack_base); + + if (sp >= stack_min && sp < thread->stack_base) { +# if DEBUG_WIN32_PTHREADS || DEBUG_WIN32_THREADS \ + || DEBUG_CYGWIN_THREADS + GC_printf("Pushing thread from %p to %p for 0x%x from 0x%x\n", + sp, thread -> stack_base, thread -> id, me); +# endif + GC_push_all_stack(sp, thread->stack_base); + } else { + WARN("Thread stack pointer 0x%lx out of range, pushing everything\n", + (unsigned long)(size_t)sp); + GC_push_all_stack(stack_min, thread->stack_base); + } + } /* thread looks live */ +} + +void GC_push_all_stacks(void) +{ + DWORD me = GetCurrentThreadId(); + GC_bool found_me = FALSE; + size_t nthreads = 0; + + if (GC_win32_dll_threads) { + int i; + LONG my_max = GC_get_max_thread_index(); + + for (i = 0; i <= my_max; i++) { + GC_thread t = (GC_thread)(dll_thread_table + i); + if (t -> in_use) { + ++nthreads; + GC_push_stack_for(t); + if (t -> id == me) found_me = TRUE; + } + } + } else { + GC_thread t; + int i; + + for (i = 0; i < THREAD_TABLE_SZ; i++) { + for (t = GC_threads[i]; t != 0; t = t -> next) { + ++nthreads; + if (!KNOWN_FINISHED(t)) GC_push_stack_for(t); + if (t -> id == me) found_me = TRUE; + } + } + } + if (GC_print_stats == VERBOSE) { + GC_log_printf("Pushed %d thread stacks ", nthreads); + if (GC_win32_dll_threads) { + GC_log_printf("based on DllMain thread tracking\n"); + } else { + GC_log_printf("\n"); + } + } + if (!found_me && !GC_in_thread_creation) + ABORT("Collecting from unknown thread."); +} + +void GC_get_next_stack(char *start, char **lo, char **hi) +{ + int i; +# define ADDR_LIMIT (char *)(-1L) + char * current_min = ADDR_LIMIT; + + if (GC_win32_dll_threads) { + LONG my_max = GC_get_max_thread_index(); + + for (i = 0; i <= my_max; i++) { + ptr_t s = (ptr_t)(dll_thread_table[i].stack_base); + + if (0 != s && s > start && s < current_min) { + current_min = s; + } + } + } else { + for (i = 0; i < THREAD_TABLE_SZ; i++) { + GC_thread t; + + for (t = GC_threads[i]; t != 0; t = t -> next) { + ptr_t s = (ptr_t)(t -> stack_base); + + if (0 != s && s > start && s < current_min) { + current_min = s; + } + } + } + } + *hi = current_min; + if (current_min == ADDR_LIMIT) { + *lo = ADDR_LIMIT; + return; + } + *lo = GC_get_stack_min(current_min); + if (*lo < start) *lo = start; +} + +#ifndef GC_PTHREADS + +/* We have no DllMain to take care of new threads. Thus we */ +/* must properly intercept thread creation. */ + +typedef struct { + LPTHREAD_START_ROUTINE start; + LPVOID param; +} thread_args; + +static DWORD WINAPI thread_start(LPVOID arg); + +void * GC_win32_start_inner(struct GC_stack_base *sb, LPVOID arg) +{ + void * ret; + thread_args *args = (thread_args *)arg; + +# if DEBUG_WIN32_THREADS + GC_printf("thread 0x%x starting...\n", GetCurrentThreadId()); +# endif + + GC_register_my_thread(sb); /* This waits for an in-progress GC. */ + + /* Clear the thread entry even if we exit with an exception. */ + /* This is probably pointless, since an uncaught exception is */ + /* supposed to result in the process being killed. */ +#ifndef __GNUC__ + __try { +#endif /* __GNUC__ */ + ret = (void *)(size_t)args->start (args->param); +#ifndef __GNUC__ + } __finally { +#endif /* __GNUC__ */ + GC_unregister_my_thread(); + GC_free(args); +#ifndef __GNUC__ + } +#endif /* __GNUC__ */ + +# if DEBUG_WIN32_THREADS + GC_printf("thread 0x%x returned from start routine.\n", + GetCurrentThreadId()); +# endif + return ret; +} + +DWORD WINAPI GC_win32_start(LPVOID arg) +{ + return (DWORD)(size_t)GC_call_with_stack_base(GC_win32_start_inner, arg); +} + +GC_API HANDLE WINAPI GC_CreateThread( + LPSECURITY_ATTRIBUTES lpThreadAttributes, + DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ) +{ + HANDLE thread_h = NULL; + + thread_args *args; + + if (!parallel_initialized) GC_init_parallel(); + /* make sure GC is initialized (i.e. main thread is attached, + tls initialized) */ + +# if DEBUG_WIN32_THREADS + GC_printf("About to create a thread from 0x%x\n", GetCurrentThreadId()); +# endif + if (GC_win32_dll_threads) { + return CreateThread(lpThreadAttributes, dwStackSize, lpStartAddress, + lpParameter, dwCreationFlags, lpThreadId); + } else { + args = GC_malloc_uncollectable(sizeof(thread_args)); + /* Handed off to and deallocated by child thread. */ + if (0 == args) { + SetLastError(ERROR_NOT_ENOUGH_MEMORY); + return NULL; + } + + /* set up thread arguments */ + args -> start = lpStartAddress; + args -> param = lpParameter; + + GC_need_to_lock = TRUE; + thread_h = CreateThread(lpThreadAttributes, + dwStackSize, GC_win32_start, + args, dwCreationFlags, + lpThreadId); + if( thread_h == 0 ) GC_free( args ); + return thread_h; + } +} + +void WINAPI GC_ExitThread(DWORD dwExitCode) +{ + GC_unregister_my_thread(); + ExitThread(dwExitCode); +} + +uintptr_t GC_beginthreadex( + void *security, unsigned stack_size, + unsigned ( __stdcall *start_address )( void * ), + void *arglist, unsigned initflag, unsigned *thrdaddr) +{ + uintptr_t thread_h = -1L; + + thread_args *args; + + if (!parallel_initialized) GC_init_parallel(); + /* make sure GC is initialized (i.e. main thread is attached, + tls initialized) */ +# if DEBUG_WIN32_THREADS + GC_printf("About to create a thread from 0x%x\n", GetCurrentThreadId()); +# endif + + if (GC_win32_dll_threads) { + return _beginthreadex(security, stack_size, start_address, + arglist, initflag, thrdaddr); + } else { + args = GC_malloc_uncollectable(sizeof(thread_args)); + /* Handed off to and deallocated by child thread. */ + if (0 == args) { + SetLastError(ERROR_NOT_ENOUGH_MEMORY); + return (uintptr_t)(-1); + } + + /* set up thread arguments */ + args -> start = (LPTHREAD_START_ROUTINE)start_address; + args -> param = arglist; + + GC_need_to_lock = TRUE; + thread_h = _beginthreadex(security, stack_size, + (unsigned (__stdcall *) (void *))GC_win32_start, + args, initflag, thrdaddr); + if( thread_h == 0 ) GC_free( args ); + return thread_h; + } +} + +void GC_endthreadex(unsigned retval) +{ + GC_unregister_my_thread(); + _endthreadex(retval); +} + +#endif /* !GC_PTHREADS */ + +#ifdef MSWINCE + +typedef struct { + HINSTANCE hInstance; + HINSTANCE hPrevInstance; + LPWSTR lpCmdLine; + int nShowCmd; +} main_thread_args; + +DWORD WINAPI main_thread_start(LPVOID arg); + +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, + LPWSTR lpCmdLine, int nShowCmd) +{ + DWORD exit_code = 1; + + main_thread_args args = { + hInstance, hPrevInstance, lpCmdLine, nShowCmd + }; + HANDLE thread_h; + DWORD thread_id; + + /* initialize everything */ + GC_init(); + + /* start the main thread */ + thread_h = GC_CreateThread( + NULL, 0, main_thread_start, &args, 0, &thread_id); + + if (thread_h != NULL) + { + WaitForSingleObject (thread_h, INFINITE); + GetExitCodeThread (thread_h, &exit_code); + CloseHandle (thread_h); + } + + GC_deinit(); + DeleteCriticalSection(&GC_allocate_ml); + + return (int) exit_code; +} + +DWORD WINAPI main_thread_start(LPVOID arg) +{ + main_thread_args * args = (main_thread_args *) arg; + + return (DWORD) GC_WinMain (args->hInstance, args->hPrevInstance, + args->lpCmdLine, args->nShowCmd); +} + +# else /* !MSWINCE */ + +/* Called by GC_init() - we hold the allocation lock. */ +void GC_thr_init(void) { + struct GC_stack_base sb; + int sb_result; + + GC_ASSERT(I_HOLD_LOCK()); + if (GC_thr_initialized) return; + GC_main_thread = GetCurrentThreadId(); + GC_thr_initialized = TRUE; + + /* Add the initial thread, so we can stop it. */ + sb_result = GC_get_stack_base(&sb); + GC_ASSERT(sb_result == GC_SUCCESS); + GC_register_my_thread(&sb); +} + +#ifdef GC_PTHREADS + +struct start_info { + void *(*start_routine)(void *); + void *arg; + GC_bool detached; +}; + +int GC_pthread_join(pthread_t pthread_id, void **retval) { + int result; + int i; + GC_thread joinee; + +# if DEBUG_CYGWIN_THREADS + GC_printf("thread 0x%x(0x%x) is joining thread 0x%x.\n", + (int)pthread_self(), GetCurrentThreadId(), (int)pthread_id); +# endif +# if DEBUG_WIN32_PTHREADS + GC_printf("thread 0x%x(0x%x) is joining thread 0x%x.\n", + (int)(pthread_self()).p, GetCurrentThreadId(), pthread_id.p); +# endif + + if (!parallel_initialized) GC_init_parallel(); + /* Thread being joined might not have registered itself yet. */ + /* After the join,thread id may have been recycled. */ + /* FIXME: It would be better if this worked more like */ + /* pthread_support.c. */ + + #ifndef GC_WIN32_PTHREADS + while ((joinee = GC_lookup_pthread(pthread_id)) == 0) Sleep(10); + #endif + + result = pthread_join(pthread_id, retval); + + #ifdef GC_WIN32_PTHREADS + /* win32_pthreads id are unique */ + joinee = GC_lookup_pthread(pthread_id); + #endif + + if (!GC_win32_dll_threads) { + LOCK(); + GC_delete_gc_thread(joinee); + UNLOCK(); + } /* otherwise dllmain handles it. */ + +# if DEBUG_CYGWIN_THREADS + GC_printf("thread 0x%x(0x%x) completed join with thread 0x%x.\n", + (int)pthread_self(), GetCurrentThreadId(), (int)pthread_id); +# endif +# if DEBUG_WIN32_PTHREADS + GC_printf("thread 0x%x(0x%x) completed join with thread 0x%x.\n", + (int)(pthread_self()).p, GetCurrentThreadId(), pthread_id.p); +# endif + + return result; +} + +/* Cygwin-pthreads calls CreateThread internally, but it's not + * easily interceptible by us.. + * so intercept pthread_create instead + */ +int +GC_pthread_create(pthread_t *new_thread, + const pthread_attr_t *attr, + void *(*start_routine)(void *), void *arg) { + int result; + struct start_info * si; + + if (!parallel_initialized) GC_init_parallel(); + /* make sure GC is initialized (i.e. main thread is attached) */ + if (GC_win32_dll_threads) { + return pthread_create(new_thread, attr, start_routine, arg); + } + + /* This is otherwise saved only in an area mmapped by the thread */ + /* library, which isn't visible to the collector. */ + si = GC_malloc_uncollectable(sizeof(struct start_info)); + if (0 == si) return(EAGAIN); + + si -> start_routine = start_routine; + si -> arg = arg; + if (attr != 0 && + pthread_attr_getdetachstate(attr, &si->detached) + == PTHREAD_CREATE_DETACHED) { + si->detached = TRUE; + } + +# if DEBUG_CYGWIN_THREADS + GC_printf("About to create a thread from 0x%x(0x%x)\n", + (int)pthread_self(), GetCurrentThreadId); +# endif +# if DEBUG_WIN32_PTHREADS + GC_printf("About to create a thread from 0x%x(0x%x)\n", + (int)(pthread_self()).p, GetCurrentThreadId()); +# endif + GC_need_to_lock = TRUE; + result = pthread_create(new_thread, attr, GC_pthread_start, si); + + if (result) { /* failure */ + GC_free(si); + } + + return(result); +} + +void * GC_pthread_start_inner(struct GC_stack_base *sb, void * arg) +{ + struct start_info * si = arg; + void * result; + void *(*start)(void *); + void *start_arg; + DWORD thread_id = GetCurrentThreadId(); + pthread_t pthread_id = pthread_self(); + GC_thread me; + GC_bool detached; + int i; + +# if DEBUG_CYGWIN_THREADS + GC_printf("thread 0x%x(0x%x) starting...\n",(int)pthread_id, + thread_id); +# endif +# if DEBUG_WIN32_PTHREADS + GC_printf("thread 0x%x(0x%x) starting...\n",(int) pthread_id.p, + thread_id); +# endif + + GC_ASSERT(!GC_win32_dll_threads); + /* If a GC occurs before the thread is registered, that GC will */ + /* ignore this thread. That's fine, since it will block trying to */ + /* acquire the allocation lock, and won't yet hold interesting */ + /* pointers. */ + LOCK(); + /* We register the thread here instead of in the parent, so that */ + /* we don't need to hold the allocation lock during pthread_create. */ + me = GC_register_my_thread_inner(sb, thread_id); + SET_PTHREAD_MAP_CACHE(pthread_id, thread_id); + UNLOCK(); + + start = si -> start_routine; + start_arg = si -> arg; + if (si-> detached) me -> flags |= DETACHED; + me -> pthread_id = pthread_id; + + GC_free(si); /* was allocated uncollectable */ + + pthread_cleanup_push(GC_thread_exit_proc, (void *)me); + result = (*start)(start_arg); + me -> status = result; + pthread_cleanup_pop(1); + +# if DEBUG_CYGWIN_THREADS + GC_printf("thread 0x%x(0x%x) returned from start routine.\n", + (int)pthread_self(),GetCurrentThreadId()); +# endif +# if DEBUG_WIN32_PTHREADS + GC_printf("thread 0x%x(0x%x) returned from start routine.\n", + (int)(pthread_self()).p, GetCurrentThreadId()); +# endif + + return(result); +} + +void * GC_pthread_start(void * arg) +{ + return GC_call_with_stack_base(GC_pthread_start_inner, arg); +} + +void GC_thread_exit_proc(void *arg) +{ + GC_thread me = (GC_thread)arg; + int i; + + GC_ASSERT(!GC_win32_dll_threads); +# if DEBUG_CYGWIN_THREADS + GC_printf("thread 0x%x(0x%x) called pthread_exit().\n", + (int)pthread_self(),GetCurrentThreadId()); +# endif +# if DEBUG_WIN32_PTHREADS + GC_printf("thread 0x%x(0x%x) called pthread_exit().\n", + (int)(pthread_self()).p,GetCurrentThreadId()); +# endif + + LOCK(); +# if defined(THREAD_LOCAL_ALLOC) + GC_destroy_thread_local(&(me->tlfs)); +# endif + if (me -> flags & DETACHED) { + GC_delete_thread(GetCurrentThreadId()); + } else { + /* deallocate it as part of join */ + me -> flags |= FINISHED; + } + UNLOCK(); +} + +#ifndef GC_WIN32_PTHREADS +/* win32 pthread does not support sigmask */ +/* nothing required here... */ +int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset) { + if (!parallel_initialized) GC_init_parallel(); + return pthread_sigmask(how, set, oset); +} +#endif + +int GC_pthread_detach(pthread_t thread) +{ + int result; + GC_thread thread_gc_id; + + if (!parallel_initialized) GC_init_parallel(); + LOCK(); + thread_gc_id = GC_lookup_pthread(thread); + UNLOCK(); + result = pthread_detach(thread); + if (result == 0) { + LOCK(); + thread_gc_id -> flags |= DETACHED; + /* Here the pthread thread id may have been recycled. */ + if (thread_gc_id -> flags & FINISHED) { + GC_delete_gc_thread(thread_gc_id); + } + UNLOCK(); + } + return result; +} + +#else /* !GC_PTHREADS */ + +/* + * We avoid acquiring locks here, since this doesn't seem to be preemptable. + * This may run with an uninitialized collector, in which case we don't do much. + * This implies that no threads other than the main one should be created + * with an uninitialized collector. (The alternative of initializing + * the collector here seems dangerous, since DllMain is limited in what it + * can do.) + */ +#ifdef GC_DLL +GC_API BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved) +{ + struct GC_stack_base sb; + DWORD thread_id; + int sb_result; + static int entry_count = 0; + + if (parallel_initialized && !GC_win32_dll_threads) return TRUE; + + switch (reason) { + case DLL_THREAD_ATTACH: + GC_ASSERT(entry_count == 0 || parallel_initialized); + ++entry_count; /* and fall through: */ + case DLL_PROCESS_ATTACH: + /* This may run with the collector uninitialized. */ + thread_id = GetCurrentThreadId(); + if (parallel_initialized && GC_main_thread != thread_id) { + /* Don't lock here. */ + sb_result = GC_get_stack_base(&sb); + GC_ASSERT(sb_result == GC_SUCCESS); +# ifdef THREAD_LOCAL_ALLOC + ABORT("Cannot initialize thread local cache from DllMain"); +# endif + GC_register_my_thread_inner(&sb, thread_id); + } /* o.w. we already did it during GC_thr_init(), called by GC_init() */ + break; + + case DLL_THREAD_DETACH: + /* We are hopefully running in the context of the exiting thread. */ + GC_ASSERT(parallel_initialized); + if (!GC_win32_dll_threads) return TRUE; + GC_delete_thread(GetCurrentThreadId()); + break; + + case DLL_PROCESS_DETACH: + { + int i; + + if (!GC_win32_dll_threads) return TRUE; + for (i = 0; i <= GC_get_max_thread_index(); ++i) + { + if (AO_load(&(dll_thread_table[i].in_use))) + GC_delete_gc_thread(dll_thread_table + i); + } + + GC_deinit(); + DeleteCriticalSection(&GC_allocate_ml); + } + break; + + } + return TRUE; +} +#endif /* GC_DLL */ +#endif /* !GC_PTHREADS */ + +# endif /* !MSWINCE */ + +/* Perform all initializations, including those that */ +/* may require allocation. */ +/* Called without allocation lock. */ +/* Must be called before a second thread is created. */ +void GC_init_parallel(void) +{ + if (parallel_initialized) return; + parallel_initialized = TRUE; + /* GC_init() calls us back, so set flag first. */ + + if (!GC_is_initialized) GC_init(); + if (GC_win32_dll_threads) { + GC_need_to_lock = TRUE; + /* Cannot intercept thread creation. Hence we don't know if other */ + /* threads exist. However, client is not allowed to create other */ + /* threads before collector initialization. Thus it's OK not to */ + /* lock before this. */ + } + /* Initialize thread local free lists if used. */ +# if defined(THREAD_LOCAL_ALLOC) + LOCK(); + GC_init_thread_local(&(GC_lookup_thread(GetCurrentThreadId())->tlfs)); + UNLOCK(); +# endif +} + +#if defined(USE_PTHREAD_LOCKS) + /* Support for pthread locking code. */ + /* Pthread_mutex_try_lock may not win here, */ + /* due to builtinsupport for spinning first? */ + +volatile GC_bool GC_collecting = 0; + /* A hint that we're in the collector and */ + /* holding the allocation lock for an */ + /* extended period. */ + +void GC_lock(void) +{ + pthread_mutex_lock(&GC_allocate_ml); +} +#endif /* USE_PTHREAD ... */ + +# if defined(THREAD_LOCAL_ALLOC) + +/* Add thread-local allocation support. Microsoft uses __declspec(thread) */ + +/* We must explicitly mark ptrfree and gcj free lists, since the free */ +/* list links wouldn't otherwise be found. We also set them in the */ +/* normal free lists, since that involves touching less memory than if */ +/* we scanned them normally. */ +void GC_mark_thread_local_free_lists(void) +{ + int i; + GC_thread p; + + for (i = 0; i < THREAD_TABLE_SZ; ++i) { + for (p = GC_threads[i]; 0 != p; p = p -> next) { + GC_mark_thread_local_fls_for(&(p->tlfs)); + } + } +} + +#if defined(GC_ASSERTIONS) + /* Check that all thread-local free-lists are completely marked. */ + /* also check that thread-specific-data structures are marked. */ + void GC_check_tls(void) { + int i; + GC_thread p; + + for (i = 0; i < THREAD_TABLE_SZ; ++i) { + for (p = GC_threads[i]; 0 != p; p = p -> next) { + GC_check_tls_for(&(p->tlfs)); + } + } +# if defined(USE_CUSTOM_SPECIFIC) + if (GC_thread_key != 0) + GC_check_tsd_marks(GC_thread_key); +# endif + } +#endif /* GC_ASSERTIONS */ + +#endif /* THREAD_LOCAL_ALLOC ... */ + +#endif /* GC_WIN32_THREADS */ diff --git a/mosesdecoder/scripts/Transliteration/clean.pl b/mosesdecoder/scripts/Transliteration/clean.pl new file mode 100644 index 0000000000000000000000000000000000000000..7a08271da87bc11c27461b94d54a987c27be82b1 --- /dev/null +++ b/mosesdecoder/scripts/Transliteration/clean.pl @@ -0,0 +1,320 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +#input hindi word urdu word, delete all those entries that have number on any side +use warnings; +use utf8; + +use Getopt::Std; +use IO::Handle; + +binmode(STDIN, ':utf8'); +binmode(STDOUT, ':utf8'); +binmode(STDERR, ':utf8'); +use open qw(:std :utf8); + +$srcHash = (); +$trgHash = (); + +$file = $ARGV[0]; + +@f0 = split(/\//, $file); # if file name has a path +@f1 = split(/\./, $f0[$#f0]); # last element would be the file name +@f2 = split(/\-/, $f1[1]); +$srcMark = $f2[0]; +$trgMark = $f2[1]; + +$lang = 0; +$lang1 = 1; +$lang2 = 1; + +if ($srcMark eq "en" || $srcMark eq "de" || $srcMark eq "es" || $srcMark eq "fr" || $srcMark eq "it" || $srcMark eq "nl" || $srcMark eq "pt-br" || $srcMark eq "ro" || $srcMark eq "sl" || $srcMark eq "tr" ) +{ + print STDERR "Source is Latin\n"; + $lang1 = 0; + $lang = $lang + 1; + +} + +if ( "$trgMark" eq "en" || "$trgMark" eq "de" || "$trgMark" eq "es" || "$trgMark" eq "fr" || "$trgMark" eq "it" || "$trgMark" eq "nl" || "$trgMark" eq "pt-br" || "$trgMark" eq "ro" || "$trgMark" eq "sl" || "$trgMark" eq "tr" ) +{ + print STDERR "Target is Latin\n"; + $lang2 = 0; + $lang = $lang + 1; +} + +if ("$lang" == 2) +{ + print STDERR "No Transliteration Module Possible\n"; +} +else +{ print STDERR "will run Transliteration module\n"; + print STDERR "Three preprocessing steps to do:\n 1) Delete Symbol \t 2) Delete Latin from non-Latin langauge \t 3) Character Frequency based filtering\n"; + print STDERR "STARTING 1 and 2 ...\n"; + open ($IN, $ARGV[0]); + while(<$IN>) + { + chomp; + $retur = deleteSymbol($_); + if($retur == 1) + { + #print "$_\n"; + $retur = deleteEnglish($lang1, $lang2, $_); + if ($retur == 1) + { + #print "$_\n"; + push (@inputArr, $_); + charFreqFilterPreprocess($_); + } + } + } + close ($IN); +} +print STDERR "DONE 1 and 2\nSTARTING 3) Preprocessing for Character filtering...\n"; + +charFreqFilterPreprocess2(); +print STDERR "DONE 3\n"; + +foreach (@inputArr) +{ + charFreqFilter($_); +} + +###############################Delete English################################## + +sub deleteEnglish{ + @list = @_; + $backEng = 0; + + if($list[0] == 1 && $list[1] == 1) + { +# print "Both are Non-Latin\n"; + if (m/[A-Za-z]/) {} + else {$backEng = 1; return $backEng;} + } + elsif($list[0] == 0 && $list[1] == 1) + { +# print "Target is Non-Latin\n"; + @F=split("\t"); + if ($F[1] =~ m/[A-Za-z]/) {} + else {$backEng = 1; return $backEng;} + + } + elsif($list[0] == 1 && $list[1] == 0) + { +# print "Source is Non-Latin\n"; + @F=split("\t"); + if ($F[0] =~ m/[A-Za-z]/) {} + else {$backEng = 1; return $backEng;} + } +} +###############################Delete Symbol################################## +sub deleteSymbol{ + $back = 0; + if (/\d+/) {} + elsif(/\?/) {} + elsif(/\!/) {} + elsif(/@/) {} + elsif(/\./) {} + elsif(/\#/) {} + elsif(/\%/) {} + elsif(/\$/) {} + elsif(/-/) {} + elsif(/"/) {} + elsif(/\(/) {} + elsif(/\)/) {} + elsif(/\&/) {} + elsif(/\;/) {} + elsif(/\\/) {} + elsif(/\*/) {} + elsif(/\+/) {} + elsif(/\,/) {} + elsif(/\/){} + else + { + @wrds = split(/\t/); + if($wrds[0] eq $wrds[1]) + {} + elsif(length $wrds[0] < 3 ) + {} + elsif(length $wrds[1] < 3) + {} + else + { + $back = 1; + return $back; +# print "$_\n"; + } + } +} +#################################Char Frequency Filter Preprocess######################## +sub charFreqFilterPreprocess{ + + @wrds = split(/\t/); + $srcWrd = lc $wrds[0]; + $trgWrd = lc $wrds[1]; + + if($srcWrd eq $trgWrd) + {} + else + { + @src = split('',$srcWrd); + foreach (@src) + { + if(exists $srcHash{$_}) + { + $srcHash{$_}++; + } + else + { + $srcHash{$_} = 0; + } + } + @trg = split('',$trgWrd); + foreach (@trg) + { + if(exists $trgHash{$_}) + { + $trgHash{$_}++; + } + else + { + $trgHash{$_} = 0; + } + } + } +} +##############################Preprocess Two############################# +sub charFreqFilterPreprocess2{ + +###################srchash################################### + +@keys = sort { $srcHash{$b} <=> $srcHash{$a} } keys %srcHash; + +$bestsrcfreq = $srcHash{$keys[0]}; +$srcOnePer = $bestsrcfreq * 0.005; + +$take = 0; # take top 30 character from hash + +foreach (@keys) + { +# print "$srcHash{$_}\t$_\n"; + + if($take < 30) + { + $srcChar{$_} = 1; +# print "$srcHash{$_}\t$_\n"; + + } + else + { ################# take worst characters that are not 1% of the best character################ + if($srcHash{$_} < $srcOnePer || $take > 50) + { + $srcBadChar{$_} = 1; + } + } +# print "$_\t$srcHash{$_}\n"; + $take++; + } + +################### target hash ################################### + +@keys = sort { $trgHash{$b} <=> $trgHash{$a} } keys %trgHash; + +$besttrgfreq = $trgHash{$keys[0]}; +$trgOnePer = $besttrgfreq * 0.005; + +#print "$besttrgfreq\t$trgOnePer\n"; + +$take = 0; # take top 30 character from hash +foreach (@keys) + { + if($take < 30) + { + $trgChar{$_} = 1; + } + else + { ################# take worst characters that are not 1% of the best character################ + if($trgHash{$_} < $trgOnePer || $take > 50 ) + { + $trgBadChar{$_} = 1; + } + } +# print "$_\t$trgHash{$_}\n"; + $take++; + } +} + +###############################CharFreqFiltering################################### +sub charFreqFilter{ + @in = @_; + @wrds = split(/\t/, $in[0]); + $srcWrd = lc $wrds[0]; + $trgWrd = lc $wrds[1]; + + @srcWrdArr = split("",$srcWrd); + @trgWrdArr = split("",$trgWrd); + + + $check = 0; + $remove = 0; + +########################## search if word contain any of the bad characters #################################### + + foreach (@srcWrdArr) + { +# print "$srcWrd\n"; + if (exists $srcBadChar{$_}) # if this character is in the list of worst characters + { + $remove = 1; +# print "#######EXIT src: \t$srcWrd##########\n"; + last; + } + } + + if($remove == 1) + {} + else + { foreach (@trgWrdArr) + { + if (exists $trgBadChar{$_}) # if this character is in the list of worst characters + { + $remove = 1; + # print "EXIT target: \t$trgWrd\n"; + last; + } + } + } +########################## search if word contain any of the good characters #################################### + if($remove == 1) + {} + else + { + foreach (@srcWrdArr) + { + if(exists ($srcChar{$_})) + { + $check = 1; + last; + } + } + + if($check == 1) + { + foreach (@trgWrdArr) + { + if(exists ($trgChar{$_})) + { +# print "$wrds[0]\t$wrds[1]\n"; + $printSrc = join (" ", split("",$wrds[0])); + $printTrg = join (" ", split("",$wrds[1])); + print "$printSrc\n$printTrg\n"; + last; + } + } + } + } +} diff --git a/mosesdecoder/scripts/Transliteration/corpusCreator.pl b/mosesdecoder/scripts/Transliteration/corpusCreator.pl new file mode 100644 index 0000000000000000000000000000000000000000..ac67f5d741bdce2f272b6ac59b51e04e1f371a2b --- /dev/null +++ b/mosesdecoder/scripts/Transliteration/corpusCreator.pl @@ -0,0 +1,90 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use warnings; +use strict; + +use utf8; +use Getopt::Std; +use IO::Handle; +binmode(STDIN, ':utf8'); +binmode(STDOUT, ':utf8'); +binmode(STDERR, ':utf8'); + +my @source; +my @target; +my @words; +my $tPath = $ARGV[0]; +my $tFile = $ARGV[1]; +my $inp_ext = $ARGV[2]; +my $op_ext = $ARGV[3]; +my $src; +my $tgt; +my $t; +my $s; + +`mkdir $tPath/training`; +`mkdir $tPath/tuning`; + +open FH, "<:encoding(UTF-8)", "$tPath/$tFile" or die "Can't open $tPath/$tFile: $!\n"; +open MYSFILE, ">:encoding(UTF-8)", "$tPath/training/corpus.$inp_ext" or die "Can't open $tPath/training/corpus.$inp_ext: $!\n"; +open MYTFILE, ">:encoding(UTF-8)", "$tPath/training/corpus.$op_ext" or die "Can't open $tPath/training/corpus.$op_ext: $!\n"; + +while () +{ + chomp; + my ($src,$tgt) = split(/\t/); + + $s = join(' ', split('',$src)); + $t = join(' ', split('',$tgt)); + print MYSFILE "$s\n"; + print MYTFILE "$t\n"; + push(@source, $s); + push(@target, $t); +} + +close (FH); +close (MYSFILE); +close (MYTFILE); + +open MYSFILE, ">:encoding(UTF-8)", "$tPath/training/corpusA.$inp_ext" or die "Can't open $tPath/training/corpusA.$inp_ext: $!\n"; +open MYTFILE, ">:encoding(UTF-8)", "$tPath/training/corpusA.$op_ext" or die "Can't open $tPath/training/corpusA.$op_ext: $!\n"; + +open MYSDEVFILE, ">:encoding(UTF-8)", "$tPath/tuning/input" or die "Can't open $tPath/tuning/input: $!\n"; +open MYTDEVFILE, ">:encoding(UTF-8)", "$tPath/tuning/reference" or die "Can't open $tPath/tuning/reference: $!\n"; + +my $corpus_size = @source; +my $count = 11; +my $dev_size = 0; + + + foreach (@source) + { + if ($count % 5 == 0 && $dev_size < 1000) + { + print MYSDEVFILE "$source[$count-11]\n"; + print MYTDEVFILE "$target[$count-11]\n"; + $dev_size++; + } + else + { + print MYSFILE "$source[$count-11]\n"; + print MYTFILE "$target[$count-11]\n"; + } + $count++; + } + +close (MYSFILE); +close (MYTFILE); +close (MYSDEVFILE); +close (MYTDEVFILE); + +if ($corpus_size < 6000) +{ + `rm $tPath/training/corpusA.$inp_ext`; + `rm $tPath/training/corpusA.$op_ext`; +} + + diff --git a/mosesdecoder/scripts/Transliteration/in-decoding-transliteration.pl b/mosesdecoder/scripts/Transliteration/in-decoding-transliteration.pl new file mode 100644 index 0000000000000000000000000000000000000000..4ecba1e5ab97c8baadb7605ee0e476d8a0995de6 --- /dev/null +++ b/mosesdecoder/scripts/Transliteration/in-decoding-transliteration.pl @@ -0,0 +1,255 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use warnings; +use strict; + +use utf8; +use File::Basename; +use Getopt::Long "GetOptions"; +use FindBin qw($RealBin); +use Scalar::Util qw(looks_like_number); +use IO::Handle; +binmode(STDIN, ':utf8'); +binmode(STDOUT, ':utf8'); +binmode(STDERR, ':utf8'); + +my $___FACTOR_DELIMITER = "|"; +my $OUT_FILE = "/tmp/transliteration-phrase-table.$$"; + +my ($MOSES_SRC_DIR,$TRANSLIT_MODEL,$OOV_FILE, $OOV_FILE_NAME, $EXTERNAL_BIN_DIR, $LM_FILE, $INPUT_EXTENSION, $OUTPUT_EXTENSION); +die("ERROR: wrong syntax when invoking in-decoding-transliteration.perl") + unless &GetOptions('moses-src-dir=s' => \$MOSES_SRC_DIR, + 'external-bin-dir=s' => \$EXTERNAL_BIN_DIR, + 'transliteration-model-dir=s' => \$TRANSLIT_MODEL, + 'input-extension=s' => \$INPUT_EXTENSION, + 'output-extension=s' => \$OUTPUT_EXTENSION, + 'transliteration-file=s' => \$OOV_FILE, + 'out-file=s' => \$OUT_FILE); + +# check if the files are in place +die("ERROR: you need to define --moses-src-dir --external-bin-dir, --transliteration-model-dir, --transliteration-file, --input-extension, and --output-extension") + unless (defined($MOSES_SRC_DIR) && + defined($TRANSLIT_MODEL) && + defined($OOV_FILE) && + defined($INPUT_EXTENSION)&& + defined($OUTPUT_EXTENSION)&& + defined($EXTERNAL_BIN_DIR)); + +die("ERROR: could not find Transliteration Model '$TRANSLIT_MODEL'") + unless -e $TRANSLIT_MODEL; +die("ERROR: could not find Transliteration file $OOV_FILE'") + unless -e $OOV_FILE; + +$OOV_FILE_NAME = basename ($OOV_FILE); + +`mkdir $TRANSLIT_MODEL/evaluation`; +`cp $OOV_FILE $TRANSLIT_MODEL/evaluation/`; +my $translitFile = $TRANSLIT_MODEL . "/evaluation/" . $OOV_FILE_NAME; + +print "Preparing for Transliteration\n"; +prepare_for_transliteration ($OOV_FILE, $translitFile); +print "Run Transliteration\n"; +run_transliteration ($MOSES_SRC_DIR , $EXTERNAL_BIN_DIR , $TRANSLIT_MODEL , $OOV_FILE_NAME); +print "Pick Best Transliteration\n"; +form_corpus ($translitFile , $translitFile.".op.nBest" , $OUT_FILE); + + +################### Read the UNK word file and prepare for Transliteration ############################### + +sub prepare_for_transliteration +{ + my @list = @_; + my $testFile = $list[0]; + my $translitFile = $list[1]; + my %UNK; + my @words; + my $src; + my @tW; + + open MYFILE, "<:encoding(UTF-8)", $testFile or die "Can't open $testFile: $!\n"; + + while () + { + chomp; + #print "$_\n"; + @words = split(/ /, "$_"); + + foreach (@words) + { + + @tW = split /\Q$___FACTOR_DELIMITER/; + + if (defined $tW[0]) + { + + if (! ($tW[0] =~ /[0-9.,]/)) + { + $UNK{$tW[0]} = 1; + } + else + { + print "Not transliterating $tW[0] \n"; + } + } + } + } + close (MYFILE); + + open MYFILE, ">:encoding(UTF-8)", $translitFile or die "Can't open $translitFile: $!\n"; + + foreach my $key ( keys %UNK ) + { + $src=join(' ', split('',$key)); + print MYFILE "$src\n"; + } + close (MYFILE); +} + +################### Run Transliteration Module to Obtain Transliterations ############################### + +sub run_transliteration +{ + my @list = @_; + my $MOSES_SRC = $list[0]; + my $EXTERNAL_BIN_DIR = $list[1]; + my $TRANSLIT_MODEL = $list[2]; + my $eval_file = $list[3]; + + `touch $TRANSLIT_MODEL/evaluation/$eval_file.moses.table.ini`; + + print "Filter Table\n"; + + `$MOSES_SRC/scripts/training/train-model.perl \ + -mgiza -mgiza-cpus 10 -dont-zip -first-step 9 \ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \ + -score-options '--KneserNey' \ + -phrase-translation-table $TRANSLIT_MODEL/model/phrase-table \ + -config $TRANSLIT_MODEL/evaluation/$eval_file.moses.table.ini \ + -lm 0:3:$TRANSLIT_MODEL/evaluation/$eval_file.moses.table.ini:8`; + + `$MOSES_SRC/scripts/training/filter-model-given-input.pl \ + $TRANSLIT_MODEL/evaluation/$eval_file.filtered \ + $TRANSLIT_MODEL/evaluation/$eval_file.moses.table.ini \ + $TRANSLIT_MODEL/evaluation/$eval_file \ + -Binarizer "$MOSES_SRC/bin/CreateOnDiskPt 1 1 4 100 2"`; + + `rm $TRANSLIT_MODEL/evaluation/$eval_file.moses.table.ini`; + + print "Apply Filter\n"; + + `$MOSES_SRC/scripts/ems/support/substitute-filtered-tables-and-weights.perl \ + $TRANSLIT_MODEL/evaluation/$eval_file.filtered/moses.ini \ + $TRANSLIT_MODEL/model/moses.ini \ + $TRANSLIT_MODEL/tuning/moses.tuned.ini \ + $TRANSLIT_MODEL/evaluation/$eval_file.filtered.ini`; + + `$MOSES_SRC/bin/moses \ + -search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 \ + -threads 16 -drop-unknown -distortion-limit 0 \ + -n-best-list $TRANSLIT_MODEL/evaluation/$eval_file.op.nBest 100 \ + distinct -f $TRANSLIT_MODEL/evaluation/$eval_file.filtered.ini \ + < $TRANSLIT_MODEL/evaluation/$eval_file \ + > $TRANSLIT_MODEL/evaluation/$eval_file.op`; + +} + +################### Read the output of Transliteration Model and Form Corpus ############################### + + +sub form_corpus +{ + + my @list = @_; + my $inp_file = $list[0]; + my $testFile = $list[1]; + my @words; + my $thisStr; + my $features; + my $prev = 0; + my $sNum; + my @UNK; + my %vocab; + + my $antLog = exp(0.2); + my $phraseTable = $list[2]; + + open MYFILE, "<:encoding(UTF-8)", $inp_file or die "Can't open $inp_file: $!\n"; + open PT, ">:encoding(UTF-8)", $phraseTable or die "Can't open $phraseTable: $!\n"; + + while () + { + chomp; + #print "$_\n"; + @words = split(/ /, "$_"); + + $thisStr = ""; + foreach (@words) + { + $thisStr = $thisStr . "$_"; + } + + push(@UNK, $thisStr); + $vocab{$thisStr} = 1; + } + close (MYFILE); + + open MYFILE, "<:encoding(UTF-8)", $testFile or die "Can't open $testFile: $!\n"; + my $inpCount = 0; + + while () + { + chomp; + #print "$_\n"; + @words = split(/ /, "$_"); + + $sNum = $words[0]; + + if ($prev != $sNum){ + $inpCount++; + } + + my $i = 2; + $thisStr = ""; + $features = ""; + + while ($words[$i] ne "|||") + { + $thisStr = $thisStr . $words[$i]; + $i++; + } + + $i++; + + while ($words[$i] ne "|||") + { + if ($words[$i] =~ /Penalty0/ || $words[$i] eq "Distortion0=" || $words[$i] eq "LM0=" ){ + $i++; + } + elsif (looks_like_number($words[$i])){ + $features = $features . " " . exp($words[$i]); + } + + $i++; + } + $i++; + + #$features = $features . " " . $words[$i]; + + if ($thisStr ne ""){ + print PT "$UNK[$inpCount] ||| $thisStr ||| $features ||| 0-0 ||| 0 0 0\n"; + } + $prev = $sNum; + } + close (MYFILE); + close (PT); + + + `gzip $phraseTable`; + +} + + diff --git a/mosesdecoder/scripts/Transliteration/post-decoding-transliteration.pl b/mosesdecoder/scripts/Transliteration/post-decoding-transliteration.pl new file mode 100644 index 0000000000000000000000000000000000000000..54678c139b8b34fc506c761f5bcf5769ff20d5cc --- /dev/null +++ b/mosesdecoder/scripts/Transliteration/post-decoding-transliteration.pl @@ -0,0 +1,332 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use warnings; +use strict; + +use utf8; +use File::Basename; +use Getopt::Long "GetOptions"; +use FindBin qw($RealBin); +use Scalar::Util qw(looks_like_number); +use IO::Handle; +binmode(STDIN, ':utf8'); +binmode(STDOUT, ':utf8'); +binmode(STDERR, ':utf8'); + +my $___FACTOR_DELIMITER = "|"; + +my ($MOSES_SRC_DIR,$TRANSLIT_MODEL,$EVAL_DIR,$OUTPUT_FILE,$OUTPUT_FILE_NAME,$OOV_FILE, $OOV_FILE_NAME, $EXTERNAL_BIN_DIR, $LM_FILE, $INPUT_EXTENSION, $OUTPUT_EXTENSION, $INPUT_FILE,$VERBOSE,$DECODER,$TMP_DIR); +die("ERROR: wrong syntax when invoking postDecodingTransliteration.perl") + unless &GetOptions('moses-src-dir=s' => \$MOSES_SRC_DIR, + 'external-bin-dir=s' => \$EXTERNAL_BIN_DIR, + 'transliteration-model-dir=s' => \$TRANSLIT_MODEL, + 'input-extension=s' => \$INPUT_EXTENSION, + 'output-extension=s' => \$OUTPUT_EXTENSION, + 'decoder=s' => \$DECODER, + 'oov-file=s' => \$OOV_FILE, + 'tmp-dir=s' => \$TMP_DIR, + 'input-file=s' => \$INPUT_FILE, + 'output-file=s' => \$OUTPUT_FILE, + 'verbose' => \$VERBOSE, + 'language-model=s' => \$LM_FILE); + +# check if the files are in place +die("ERROR: you need to define --moses-src-dir --external-bin-dir, --transliteration-model-dir, --oov-file, --output-file --input-extension, --output-extension, and --language-model") + unless (defined($MOSES_SRC_DIR) && + defined($TRANSLIT_MODEL) && + defined($OOV_FILE) && + defined($INPUT_EXTENSION)&& + defined($OUTPUT_EXTENSION)&& + defined($INPUT_FILE)&& + defined($EXTERNAL_BIN_DIR)&& + defined($LM_FILE)); +if (! -e $LM_FILE) { + my $LM_FILE_WORD = `ls $LM_FILE*word*`; + chop($LM_FILE_WORD); + $LM_FILE = $LM_FILE_WORD if $LM_FILE_WORD ne ""; +} +die("ERROR: could not find Language Model '$LM_FILE'") + unless -e $LM_FILE; +die("ERROR: could not find Transliteration Model '$TRANSLIT_MODEL'") + unless -e $TRANSLIT_MODEL; +die("ERROR: could not find OOV file $OOV_FILE'") + unless -e $OOV_FILE; +die("ERROR: could not find Input file $INPUT_FILE'") + unless -e $INPUT_FILE; + +$EVAL_DIR = dirname($INPUT_FILE); +$OUTPUT_FILE_NAME = basename ($OUTPUT_FILE); +$OOV_FILE_NAME = basename ($OOV_FILE); + +$TMP_DIR = $OUTPUT_FILE.".tmp" unless defined($TMP_DIR); + +`mkdir -p $TMP_DIR/transliteration`; +`cp $OOV_FILE $TMP_DIR/transliteration`; +my $translitFile = "$TMP_DIR/transliteration/$OOV_FILE_NAME"; + +print "Preparing for Transliteration\n"; +&prepare_for_transliteration ($OOV_FILE, $translitFile); +print "Run Transliteration\n"; +&run_transliteration ($MOSES_SRC_DIR , $EXTERNAL_BIN_DIR , $TRANSLIT_MODEL , $OOV_FILE_NAME); +print "Pick Best Transliteration\n"; +&form_corpus ($translitFile , $translitFile.".op.nBest" , $EVAL_DIR); +&run_decoder($MOSES_SRC_DIR, $EXTERNAL_BIN_DIR, $LM_FILE); + +################### Read the UNK word file and prepare for Transliteration ############################### + +sub prepare_for_transliteration +{ + my @list = @_; + my $testFile = $list[0]; + my $translitFile = $list[1]; + my %UNK; + my @words; + my $src; + my @tW; + + open MYFILE, "<:encoding(UTF-8)", $testFile or die "Can't open $testFile: $!\n"; + + while () + { + chomp; + #print "$_\n"; + @words = split(/ /, "$_"); + + foreach (@words) + { + + @tW = split /\Q$___FACTOR_DELIMITER/; + + if (defined $tW[0]) + { + + if (! ($tW[0] =~ /[0-9.,]/)) + { + $UNK{$tW[0]} = 1; + } + else + { + print "Not transliterating $tW[0] \n"; + } + } + } + } + close (MYFILE); + + open MYFILE, ">:encoding(UTF-8)", $translitFile or die "Can't open $translitFile: $!\n"; + + foreach my $key ( keys %UNK ) + { + $src=join(' ', split('',$key)); + print MYFILE "$src\n"; + } + close (MYFILE); +} + +################### Run Transliteration Module to Obtain Transliterations ############################### + +sub run_transliteration +{ + my @list = @_; + my $MOSES_SRC = $list[0]; + my $EXTERNAL_BIN_DIR = $list[1]; + my $TRANSLIT_MODEL = $list[2]; + my $eval_file = $list[3]; + print "run_transliteration($MOSES_SRC,$EXTERNAL_BIN_DIR,$TRANSLIT_MODEL,$eval_file)\n"; + + `touch $TMP_DIR/transliteration/$eval_file.moses.table.ini`; + + print "Filter Table... ".`date`; + + my $cmd = "$MOSES_SRC/scripts/training/train-model.perl -dont-zip -first-step 9 -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION -e $OUTPUT_EXTENSION -phrase-translation-table $TRANSLIT_MODEL/model/phrase-table -config $TMP_DIR/transliteration/$eval_file.moses.table.ini -lm 0:3:$TMP_DIR/transliteration/$eval_file.moses.table.ini:8"; + print $cmd."\n"; + `$cmd`; + + $cmd = "$MOSES_SRC/scripts/training/filter-model-given-input.pl $TMP_DIR/transliteration/$eval_file.filtered $TMP_DIR/transliteration/$eval_file.moses.table.ini $TMP_DIR/transliteration/$eval_file -Binarizer \"$MOSES_SRC/bin/CreateOnDiskPt 1 1 4 100 2\""; + print $cmd."\n"; + `$cmd`; + + `rm $TMP_DIR/transliteration/$eval_file.moses.table.ini`; + + print "Apply Filter\n"; + + $cmd = "$MOSES_SRC/scripts/ems/support/substitute-filtered-tables-and-weights.perl $TMP_DIR/transliteration/$eval_file.filtered/moses.ini $TRANSLIT_MODEL/model/moses.ini $TRANSLIT_MODEL/tuning/moses.tuned.ini $TMP_DIR/transliteration/$eval_file.filtered.ini"; + print $cmd."\n"; + `$cmd`; + + my $drop_stderr = $VERBOSE ? "" : " 2>/dev/null"; + $cmd = "$DECODER -search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 -threads 16 -drop-unknown -distortion-limit 0 -n-best-list $TMP_DIR/transliteration/$eval_file.op.nBest 1000 distinct -f $TMP_DIR/transliteration/$eval_file.filtered.ini < $TMP_DIR/transliteration/$eval_file > $TMP_DIR/transliteration/$eval_file.op $drop_stderr"; + print $cmd."\n"; + `$cmd`; +} + +################### Read the output of Transliteration Model and Form Corpus ############################### + + +sub form_corpus +{ + + my @list = @_; + my $inp_file = $list[0]; + my $testFile = $list[1]; + my $EVAL_DIR = $list[2]; + my @words; + my $thisStr; + my $features; + my $prev = 0; + my $sNum; + my @UNK; + my %vocab; + + `mkdir -p $TMP_DIR/retranslation/model`; + my $antLog = exp(0.2); + + my $phraseTable = "$TMP_DIR/retranslation/model/phrase-table"; + + open MYFILE, "<:encoding(UTF-8)", $inp_file or die "Can't open $inp_file: $!\n"; + open PT, ">:encoding(UTF-8)", $phraseTable or die "Can't open $phraseTable: $!\n"; + + while () + { + chomp; + #print "$_\n"; + @words = split(/ /, "$_"); + + $thisStr = ""; + foreach (@words) + { + $thisStr = $thisStr . "$_"; + } + + push(@UNK, $thisStr); + $vocab{$thisStr} = 1; + } + close (MYFILE); + + open MYFILE, "<:encoding(UTF-8)", $testFile or die "Can't open $testFile: $!\n"; + my $inpCount = 0; + + while () + { + chomp; + #print "$_\n"; + @words = split(/ /, "$_"); + + $sNum = $words[0]; + + if ($prev != $sNum){ + $inpCount++; + } + + my $i = 2; + $thisStr = ""; + $features = ""; + + while ($words[$i] ne "|||") + { + $thisStr = $thisStr . $words[$i]; + $i++; + } + + $i++; + + while ($words[$i] ne "|||") + { + if ($words[$i] =~ /Penalty0/ || $words[$i] eq "Distortion0=" || $words[$i] eq "LM0=" ){ + $i++; + } + elsif (looks_like_number($words[$i])){ + $features = $features . " " . exp($words[$i]); + } + + $i++; + } + $i++; + + #$features = $features . " " . $words[$i]; + + if ($thisStr ne ""){ + print PT "$UNK[$inpCount] ||| $thisStr ||| $features ||| 0-0 ||| 0 0 0\n"; + } + $prev = $sNum; + } + close (MYFILE); + + + open MYFILE, "<:encoding(UTF-8)", $INPUT_FILE or die "Can't open $INPUT_FILE: $!\n"; + + my %dd; + + while () + { + chomp; + @words = split(/ /, "$_"); + + foreach (@words) + { + if (! exists $vocab{$_} && ! exists $dd{$_}){ + + print PT "$_ ||| $_ ||| 1.0 1.0 1.0 1.0 ||| 0-0 ||| 0 0 0\n"; + $dd{$_} = 1; + } + } + } + + close (PT); + close (MYFILE); + + `gzip $phraseTable`; + +} + + +################### Run Decoder ############################### + +sub run_decoder +{ + + my @list = @_; + my $MOSES_SRC = $list[0]; + my $EXTERNAL_BIN_DIR = $list[1]; + my $LM_FILE = $list[2]; + my @words; + + `mkdir -p $TMP_DIR/retranslation/evaluation`; + + print "Creating config file... ".`date`; + my $cmd = "$MOSES_SRC/scripts/training/train-model.perl " + ."-mgiza -mgiza-cpus 10 -dont-zip -first-step 9 " + ."-external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION " + ."-e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 " + ."-lmodel-oov-feature \"yes\" -post-decoding-translit \"yes\" " + ."-phrase-translation-table $TMP_DIR/retranslation/model/phrase-table " + ."-config $TMP_DIR/retranslation/model/moses.ini -lm 0:5:$LM_FILE:8"; + print $cmd."\n"; + `$cmd`; + + print "Filtering transliteration phrase table... ".`date`; + $cmd = "$MOSES_SRC/scripts/training/filter-model-given-input.pl " + ."$TMP_DIR/retranslation/filtered " + ."$TMP_DIR/retranslation/model/moses.ini " + ."$INPUT_FILE -Binarizer \"$MOSES_SRC/bin/CreateOnDiskPt " + ."1 1 4 100 2\""; + print $cmd."\n"; + `$cmd`; + + print "Retranslating... ".`date`; + my $drop_stderr = $VERBOSE ? "" : " 2>/dev/null"; + $cmd = "$DECODER " + ."-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 " + ."-threads 16 -feature-overwrite 'TranslationModel0 table-limit=100' " + ."-max-trans-opt-per-coverage 100 " + ."-f $TMP_DIR/retranslation/filtered/moses.ini -distortion-limit 0 " + ."< $INPUT_FILE " + ."> $OUTPUT_FILE $drop_stderr"; + print $cmd."\n"; + `$cmd`; + + print "Done. ".`date`; +} diff --git a/mosesdecoder/scripts/Transliteration/prepare-transliteration-phrase-table.pl b/mosesdecoder/scripts/Transliteration/prepare-transliteration-phrase-table.pl new file mode 100644 index 0000000000000000000000000000000000000000..100ec57471f022dca952ae451e79188069997afe --- /dev/null +++ b/mosesdecoder/scripts/Transliteration/prepare-transliteration-phrase-table.pl @@ -0,0 +1,193 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use warnings; +use strict; + +use utf8; +use Getopt::Long "GetOptions"; +use FindBin qw($RealBin); +use IO::Handle; +use File::Basename; +binmode(STDIN, ':utf8'); +binmode(STDOUT, ':utf8'); +binmode(STDERR, ':utf8'); + +my $OUT_DIR = "/tmp/Transliteration-Phrase-Table.$$"; + +my ($MOSES_SRC_DIR,$TRANSLIT_MODEL,$OOV_FILE,$EXTERNAL_BIN_DIR, $INPUT_EXTENSION, $OUTPUT_EXTENSION); +die("ERROR: wrong syntax when invoking train-transliteration-PT.pl") + unless &GetOptions('moses-src-dir=s' => \$MOSES_SRC_DIR, + 'external-bin-dir=s' => \$EXTERNAL_BIN_DIR, + 'transliteration-model-dir=s' => \$TRANSLIT_MODEL, + 'input-extension=s' => \$INPUT_EXTENSION, + 'output-extension=s' => \$OUTPUT_EXTENSION, + 'out-dir=s' => \$OUT_DIR, + 'oov-file=s' => \$OOV_FILE); + +# check if the files are in place +die("ERROR: you need to define --moses-src-dir --external-bin-dir, --transliteration-model-dir, --oov-file, --input-extension, --output-extension") + unless (defined($MOSES_SRC_DIR) && + defined($TRANSLIT_MODEL) && + defined($OOV_FILE) && + defined($INPUT_EXTENSION)&& + defined($OUTPUT_EXTENSION)); + +die("ERROR: could not find Transliteration Model '$TRANSLIT_MODEL'") + unless -e $TRANSLIT_MODEL; +die("ERROR: could not find OOV file '$OOV_FILE'") + unless -e $OOV_FILE; + + my $UNK_FILE_NAME = basename($OOV_FILE); +`mkdir -p $OUT_DIR/$UNK_FILE_NAME/training`; +`cp $OOV_FILE $OUT_DIR/$UNK_FILE_NAME/$UNK_FILE_NAME`; + +my $translitFile = "$OUT_DIR/" . $UNK_FILE_NAME . "/" . $UNK_FILE_NAME . ".translit"; + +print STDERR "Preparing for Transliteration\n"; +prepare_for_transliteration ($OOV_FILE , $translitFile); +print STDERR "Run Transliteration\n"; +run_transliteration ($MOSES_SRC_DIR , $EXTERNAL_BIN_DIR , $TRANSLIT_MODEL , $translitFile); +print STDERR "Form Transliteration Corpus\n"; +form_corpus ($translitFile , $translitFile.".op.nBest" , $OUT_DIR); + + +################### Read the UNK word file and prepare for Transliteration ############################### + +sub prepare_for_transliteration +{ + my @list = @_; + my $testFile = $list[0]; + my $translitFile = $list[1]; + my %UNK; + my @words; + my $src; + open MYFILE, "<:encoding(UTF-8)", $testFile or die "Can't open $testFile: $!\n"; + + while () + { + chomp; + #print "$_\n"; + @words = split(/ /, "$_"); + + foreach (@words) + { + $UNK{"$_"} = 1; + } + } + close (MYFILE); + + open MYFILE, ">:encoding(UTF-8)", $translitFile or die "Can't open $translitFile: $!\n"; + + foreach my $key ( keys %UNK ) + { + $src=join(' ', split('',$key)); + print MYFILE "$src\n"; + } + close (MYFILE); +} + +################### Run Transliteration Module to Obtain Transliterations ############################### + +sub run_transliteration +{ + my @list = @_; + my $MOSES_SRC = $list[0]; + my $EXTERNAL_BIN_DIR = $list[1]; + my $TRANSLIT_MODEL = $list[2]; + my $eval_file = $list[3]; + + `touch $eval_file.moses.table.ini`; + + print STDERR "Filter Table\n"; + + `$MOSES_SRC/scripts/training/train-model.perl \\ + -mgiza -mgiza-cpus 10 -dont-zip -first-step 9 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -reordering msd-bidirectional-fe -score-options '--KneserNey' \\ + -phrase-translation-table $TRANSLIT_MODEL/model/phrase-table \\ + -reordering-table $TRANSLIT_MODEL/model/reordering-table \\ + -config $eval_file.moses.table.ini \\ + -lm 0:3:$eval_file.moses.table.ini:8`; + + `$MOSES_SRC/scripts/training/filter-model-given-input.pl \\ + $eval_file.filtered $eval_file.moses.table.ini $eval_file \\ + -Binarizer "$MOSES_SRC/bin/CreateOnDiskPt 1 1 4 100 2"`; + + `rm $eval_file.moses.table.ini`; + + print STDERR "Apply Filter\n"; + + `$MOSES_SRC/scripts/ems/support/substitute-filtered-tables-and-weights.perl \\ + $eval_file.filtered/moses.ini $TRANSLIT_MODEL/model/moses.ini \\ + $TRANSLIT_MODEL/tuning/moses.tuned.ini $eval_file.filtered.ini`; + + `$MOSES_SRC/bin/moses \\ + -search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 \\ + -threads 16 -drop-unknown -distortion-limit 0 \\ + -n-best-list $eval_file.op.nBest 50 \\ + -f $eval_file.filtered.ini \\ + < $eval_file \\ + > $eval_file.op`; + +} + +################### Read the output of Transliteration Model and Form Corpus ############################### + + +sub form_corpus +{ + + my @list = @_; + my $inp_file = $list[0]; + my $testFile = $list[1]; + my $EVAL_DIR = $list[2]; + my %vocab; + my @words; + my $thisStr; + + my $UNK_FILE_NAME = basename($OOV_FILE); + my $target = $EVAL_DIR . "/$UNK_FILE_NAME/training/corpus.$OUTPUT_EXTENSION"; + my $outFile = "$EVAL_DIR/out.txt"; + + open MYFILE, "<:encoding(UTF-8)", $testFile or die "Can't open $testFile: $!\n"; + open OUTFILE, ">:encoding(UTF-8)", $outFile or die "Can't open $outFile: $!\n"; + + + while () + { + chomp; + #print "$_\n"; + @words = split(/ /, "$_"); + + + my $i = 2; + my $prob; + + $thisStr = ""; + + while ($words[$i] ne "|||") + { + $thisStr = $thisStr . $words[$i]; + $i++; + } + + $i++; + + while ($words[$i] ne "|||") + { + $i++; + } + + $i++; + $prob = $words[$i]; + + print OUTFILE "$thisStr\t$prob\n"; + } + close (MYFILE); + close (OUTFILE); +} + diff --git a/mosesdecoder/scripts/Transliteration/threshold.pl b/mosesdecoder/scripts/Transliteration/threshold.pl new file mode 100644 index 0000000000000000000000000000000000000000..3baa8e0a7f922bfd5e90c23300adf8956d1ab13b --- /dev/null +++ b/mosesdecoder/scripts/Transliteration/threshold.pl @@ -0,0 +1,34 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use warnings; +use utf8; +require Encode; +use IO::Handle; + +$input = ; +#print $input; + +$filename = shift or die "Error: missing hindi urdu file argument!\n"; +open(FILE,$filename) or die "Error: unable to open file \"$filename\"!\n"; + +binmode(STDIN, ':utf8'); +binmode(STDOUT, ':utf8'); +binmode(STDERR, ':utf8'); +binmode(FILE, ':utf8'); +$c=0; +while () +{ + chomp; + @F=split("\t"); + $hash{$F[0]."\t".$F[1]}=$F[$#F]; + $c++; + if($F[$#F] < $input) + { + print "$F[0]\t$F[1]\n"; + } + +}close FILE; + diff --git a/mosesdecoder/scripts/Transliteration/train-transliteration-module.pl b/mosesdecoder/scripts/Transliteration/train-transliteration-module.pl new file mode 100644 index 0000000000000000000000000000000000000000..929a278502d24a891b35ca414c26112b4987073a --- /dev/null +++ b/mosesdecoder/scripts/Transliteration/train-transliteration-module.pl @@ -0,0 +1,400 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use warnings; +use utf8; +use strict; +use Getopt::Long "GetOptions"; +use FindBin qw($RealBin); +binmode(STDIN, ':utf8'); +binmode(STDOUT, ':utf8'); +binmode(STDERR, ':utf8'); + +print STDERR "Training Transliteration Module - Start\n".`date`; + +my $ORDER = 5; +my $OUT_DIR = "/tmp/Transliteration-Model.$$"; +my $___FACTOR_DELIMITER = "|"; +my ($MOSES_SRC_DIR,$CORPUS_F,$CORPUS_E,$ALIGNMENT,$SRILM_DIR,$FACTOR,$EXTERNAL_BIN_DIR,$INPUT_EXTENSION, $OUTPUT_EXTENSION, $SOURCE_SYNTAX, $TARGET_SYNTAX,$DECODER); + +# utilities +my $ZCAT = "gzip -cd"; +my $BZCAT = "bzcat"; + +die("ERROR: wrong syntax when invoking train-transliteration-module.perl") + unless &GetOptions('moses-src-dir=s' => \$MOSES_SRC_DIR, + 'external-bin-dir=s' => \$EXTERNAL_BIN_DIR, + 'input-extension=s' => \$INPUT_EXTENSION, + 'output-extension=s' => \$OUTPUT_EXTENSION, + 'corpus-f=s' => \$CORPUS_F, + 'corpus-e=s' => \$CORPUS_E, + 'alignment=s' => \$ALIGNMENT, + 'order=i' => \$ORDER, + 'factor=s' => \$FACTOR, + 'srilm-dir=s' => \$SRILM_DIR, + 'out-dir=s' => \$OUT_DIR, + 'decoder=s' => \$DECODER, + 'source-syntax' => \$SOURCE_SYNTAX, + 'target-syntax' => \$TARGET_SYNTAX); + +# check if the files are in place +die("ERROR: you need to define --corpus-e, --corpus-f, --alignment, --srilm-dir, --moses-src-dir --external-bin-dir, --input-extension and --output-extension") + unless (defined($MOSES_SRC_DIR) && + defined($CORPUS_F) && + defined($CORPUS_E) && + defined($ALIGNMENT)&& + defined($INPUT_EXTENSION)&& + defined($OUTPUT_EXTENSION)&& + defined($EXTERNAL_BIN_DIR)&& + defined($SRILM_DIR)); +die("ERROR: could not find input corpus file '$CORPUS_F'") + unless -e $CORPUS_F; +die("ERROR: could not find output corpus file '$CORPUS_E'") + unless -e $CORPUS_E; +die("ERROR: could not find alignment file '$ALIGNMENT'") + unless -e $ALIGNMENT; +$DECODER = "$MOSES_SRC_DIR/bin/moses" unless defined($DECODER); + +`mkdir $OUT_DIR`; + +# strip XML, if present +my $stripped_corpus_f = $CORPUS_F; +if (defined($SOURCE_SYNTAX)) { + $stripped_corpus_f = "$OUT_DIR/stripped.$INPUT_EXTENSION"; + &strip_xml($CORPUS_F, $stripped_corpus_f); +} +my $stripped_corpus_e = $CORPUS_E; +if (defined($TARGET_SYNTAX)) { + $stripped_corpus_e = "$OUT_DIR/stripped.$OUTPUT_EXTENSION"; + &strip_xml($CORPUS_E, $stripped_corpus_e); +} + +# create factors +if (defined($FACTOR)) { + + my @factor_values = split(',', $FACTOR); + + foreach my $factor_val (@factor_values) { + + my ($factor_f,$factor_e) = split(/\-/,$factor_val); + + $stripped_corpus_f =~ /^(.+)\.([^\.]+)/; + my ($corpus_stem_f,$ext_f) = ($1,$2); + $stripped_corpus_e =~ /^(.+)\.([^\.]+)/; + my ($corpus_stem_e,$ext_e) = ($1,$2); + &reduce_factors($stripped_corpus_f,"$corpus_stem_f.$factor_val.$ext_f",$factor_f); + &reduce_factors($stripped_corpus_e,"$corpus_stem_e.$factor_val.$ext_e",$factor_e); + + `ln -s $corpus_stem_f.$factor_val.$ext_f $OUT_DIR/f`; + `ln -s $corpus_stem_e.$factor_val.$ext_e $OUT_DIR/e`; + `ln -s $ALIGNMENT $OUT_DIR/a`; + + + } +} +else { + `ln -s $stripped_corpus_f $OUT_DIR/f`; + `ln -s $stripped_corpus_e $OUT_DIR/e`; + `ln -s $ALIGNMENT $OUT_DIR/a`; + + } + + mine_transliterations($INPUT_EXTENSION, $OUTPUT_EXTENSION); + train_transliteration_module(); + retrain_transliteration_module(); + + +# create model + +print STDERR "Training Transliteration Module - End ".`date`; + +sub learn_transliteration_model{ + + my ($t) = @_; + + `cp $OUT_DIR/training/corpus$t.$OUTPUT_EXTENSION $OUT_DIR/lm/target`; + + print STDERR "Align Corpus\n"; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl \\ + -mgiza -mgiza-cpus 10 -dont-zip -last-step 1 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -score-options '--KneserNey' -corpus $OUT_DIR/training/corpus$t \\ + -corpus-dir $OUT_DIR/training/prepared`; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl -mgiza -mgiza-cpus 10 \\ + -dont-zip -first-step 2 -last-step 2 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -score-options '--KneserNey' -corpus-dir $OUT_DIR/training/prepared \\ + -giza-e2f $OUT_DIR/training/giza -direction 2`; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl \\ + -mgiza -mgiza-cpus 10 -dont-zip -first-step 2 -last-step 2 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -score-options '--KneserNey' -corpus-dir $OUT_DIR/training/prepared \\ + -giza-f2e $OUT_DIR/training/giza-inverse -direction 1`; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl \\ + -mgiza -mgiza-cpus 10 -dont-zip -first-step 3 -last-step 3 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -score-options '--KneserNey' -giza-e2f $OUT_DIR/training/giza \\ + -giza-f2e $OUT_DIR/training/giza-inverse \\ + -alignment-file $OUT_DIR/model/aligned \\ + -alignment-stem $OUT_DIR/model/aligned -alignment grow-diag-final-and`; + + print STDERR "Train Translation Models\n"; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl \\ + -mgiza -mgiza-cpus 10 -dont-zip -first-step 4 -last-step 4 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -score-options '--KneserNey' -lexical-file $OUT_DIR/model/lex \\ + -alignment-file $OUT_DIR/model/aligned \\ + -alignment-stem $OUT_DIR/model/aligned \\ + -corpus $OUT_DIR/training/corpus$t`; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl \\ + -mgiza -mgiza-cpus 10 -dont-zip -first-step 5 -last-step 5 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -score-options '--KneserNey' -alignment-file $OUT_DIR/model/aligned \\ + -alignment-stem $OUT_DIR/model/aligned -extract-file \\ + $OUT_DIR/model/extract -corpus $OUT_DIR/training/corpus$t`; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl \\ + -mgiza -mgiza-cpus 10 -dont-zip -first-step 6 -last-step 6 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -score-options '--KneserNey' -extract-file $OUT_DIR/model/extract \\ + -lexical-file $OUT_DIR/model/lex -phrase-translation-table \\ + $OUT_DIR/model/phrase-table`; + + print STDERR "Train Language Models\n"; + + `$SRILM_DIR/ngram-count \\ + -order 5 -interpolate -kndiscount -addsmooth1 0.0 -unk \\ + -text $OUT_DIR/lm/target -lm $OUT_DIR/lm/targetLM`; + + `$MOSES_SRC_DIR/bin/build_binary \\ + $OUT_DIR/lm/targetLM $OUT_DIR/lm/targetLM.bin`; + + print STDERR "Create Config File\n"; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl \\ + -mgiza -mgiza-cpus 10 -dont-zip -first-step 9 \\ + -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION \\ + -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 \\ + -score-options '--KneserNey' \\ + -phrase-translation-table $OUT_DIR/model/phrase-table \\ + -config $OUT_DIR/model/moses.ini -lm 0:5:$OUT_DIR/lm/targetLM.bin:8`; + +} + +sub retrain_transliteration_module{ + + if (-e "$OUT_DIR/training/corpusA.$OUTPUT_EXTENSION") + { + `rm -r $OUT_DIR/model`; + `rm -r $OUT_DIR/lm`; + `rm -r $OUT_DIR/training/giza`; + `rm -r $OUT_DIR/training/giza-inverse`; + `rm -r $OUT_DIR/training/prepared`; + `mkdir $OUT_DIR/model`; + `mkdir $OUT_DIR/lm`; + + learn_transliteration_model(""); + } +} + +sub train_transliteration_module{ + + `mkdir $OUT_DIR/model`; + `mkdir $OUT_DIR/lm`; + print STDERR "Preparing Corpus\n"; + `$MOSES_SRC_DIR/scripts/Transliteration/corpusCreator.pl $OUT_DIR 1-1.$INPUT_EXTENSION-$OUTPUT_EXTENSION.mined-pairs $INPUT_EXTENSION $OUTPUT_EXTENSION`; + + if (-e "$OUT_DIR/training/corpusA.$OUTPUT_EXTENSION") + { + learn_transliteration_model("A"); + } + else + { + learn_transliteration_model(""); + } + + print STDERR "Running Tuning for Transliteration Module\n"; + + `touch $OUT_DIR/tuning/moses.table.ini`; + + `$MOSES_SRC_DIR/scripts/training/train-model.perl -mgiza -mgiza-cpus 10 -dont-zip -first-step 9 -external-bin-dir $EXTERNAL_BIN_DIR -f $INPUT_EXTENSION -e $OUTPUT_EXTENSION -alignment grow-diag-final-and -parts 5 -score-options '--KneserNey' -phrase-translation-table $OUT_DIR/model/phrase-table -config $OUT_DIR/tuning/moses.table.ini -lm 0:3:$OUT_DIR/tuning/moses.table.ini:8`; + + `$MOSES_SRC_DIR/scripts/training/filter-model-given-input.pl $OUT_DIR/tuning/filtered $OUT_DIR/tuning/moses.table.ini $OUT_DIR/tuning/input -Binarizer "$MOSES_SRC_DIR/bin/CreateOnDiskPt 1 1 4 100 2"`; + + `rm $OUT_DIR/tuning/moses.table.ini`; + + `$MOSES_SRC_DIR/scripts/ems/support/substitute-filtered-tables.perl $OUT_DIR/tuning/filtered/moses.ini < $OUT_DIR/model/moses.ini > $OUT_DIR/tuning/moses.filtered.ini`; + + `$MOSES_SRC_DIR/scripts/training/mert-moses.pl $OUT_DIR/tuning/input $OUT_DIR/tuning/reference $DECODER $OUT_DIR/tuning/moses.filtered.ini --nbest 100 --working-dir $OUT_DIR/tuning/tmp --decoder-flags "-threads 16 -drop-unknown -v 0 -distortion-limit 0" --rootdir $MOSES_SRC_DIR/scripts -mertdir $MOSES_SRC_DIR/bin -threads=16 --no-filter-phrase-table`; + + `cp $OUT_DIR/tuning/tmp/moses.ini $OUT_DIR/tuning/moses.ini`; + + `$MOSES_SRC_DIR/scripts/ems/support/substitute-weights.perl $OUT_DIR/model/moses.ini $OUT_DIR/tuning/moses.ini $OUT_DIR/tuning/moses.tuned.ini`; +} + + + +sub mine_transliterations{ + +my @list = @_; +my $inp_ext = $list[0]; +my $op_ext = $list[1]; +my $count = 0; +my $l1 = 1; +my $l2 = 1; + +print STDERR "Creating Model\n"; + +print STDERR "Extracting 1-1 Alignments\n"; +`$MOSES_SRC_DIR/bin/1-1-Extraction $OUT_DIR/f $OUT_DIR/e $OUT_DIR/a > $OUT_DIR/1-1.$inp_ext-$op_ext`; + +print STDERR "Cleaning the list for Miner\n"; + +`$MOSES_SRC_DIR/scripts/Transliteration/clean.pl $OUT_DIR/1-1.$inp_ext-$op_ext > $OUT_DIR/1-1.$inp_ext-$op_ext.cleaned`; + + + if (-e "$OUT_DIR/1-1.$inp_ext-$op_ext.pair-probs") + { + print STDERR "1-1.$inp_ext-$op_ext.pair-probs in place, reusing\n"; + } + else + { + print STDERR "Extracting Transliteration Pairs \n"; + `$MOSES_SRC_DIR/bin/TMining $OUT_DIR/1-1.$inp_ext-$op_ext.cleaned > $OUT_DIR/1-1.$inp_ext-$op_ext.pair-probs`; + } + +print STDERR "Selecting Transliteration Pairs with threshold 0.5 \n"; +`echo 0.5 | $MOSES_SRC_DIR/scripts/Transliteration/threshold.pl $OUT_DIR/1-1.$inp_ext-$op_ext.pair-probs > $OUT_DIR/1-1.$inp_ext-$op_ext.mined-pairs`; + +} + +# from train-model.perl +sub reduce_factors { + my ($full,$reduced,$factors) = @_; + + my @INCLUDE = sort {$a <=> $b} split(/,/,$factors); + + print STDERR "Reducing factors to produce $reduced @ ".`date`; + while(-e $reduced.".lock") { + sleep(10); + } + if (-e $reduced) { + print STDERR " $reduced in place, reusing\n"; + return; + } + if (-e $reduced.".gz") { + print STDERR " $reduced.gz in place, reusing\n"; + return; + } + + # peek at input, to check if we are asked to produce exactly the + # available factors + my $inh = open_or_zcat($full); + my $firstline = <$inh>; + die "Corpus file $full is empty" unless $firstline; + close $inh; + # pick first word + $firstline =~ s/^\s*//; + $firstline =~ s/\s.*//; + # count factors + my $maxfactorindex = $firstline =~ tr/|/|/; + if (join(",", @INCLUDE) eq join(",", 0..$maxfactorindex)) { + # create just symlink; preserving compression + my $realfull = $full; + if (!-e $realfull && -e $realfull.".gz") { + $realfull .= ".gz"; + $reduced =~ s/(\.gz)?$/.gz/; + } + safesystem("ln -s '$realfull' '$reduced'") + or die "Failed to create symlink $realfull -> $reduced"; + return; + } + + # The default is to select the needed factors + `touch $reduced.lock`; + *IN = open_or_zcat($full); + open(OUT,">".$reduced) or die "ERROR: Can't write $reduced"; + my $nr = 0; + while() { + $nr++; + print STDERR "." if $nr % 10000 == 0; + print STDERR "($nr)" if $nr % 100000 == 0; + chomp; s/ +/ /g; s/^ //; s/ $//; + my $first = 1; + foreach (split) { + my @FACTOR = split /\Q$___FACTOR_DELIMITER/; + # \Q causes to disable metacharacters in regex + print OUT " " unless $first; + $first = 0; + my $first_factor = 1; + foreach my $outfactor (@INCLUDE) { + print OUT "|" unless $first_factor; + $first_factor = 0; + my $out = $FACTOR[$outfactor]; + die "ERROR: Couldn't find factor $outfactor in token \"$_\" in $full LINE $nr" if !defined $out; + print OUT $out; + } + } + print OUT "\n"; + } + print STDERR "\n"; + close(OUT); + close(IN); + `rm -f $reduced.lock`; +} + +sub strip_xml { + my ($source, $dest) = @_; + my $cmd = "$MOSES_SRC_DIR/scripts/generic/strip-xml.perl < '$source' > '$dest'"; + safesystem($cmd); +} + +sub open_or_zcat { + my $fn = shift; + my $read = $fn; + $fn = $fn.".gz" if ! -e $fn && -e $fn.".gz"; + $fn = $fn.".bz2" if ! -e $fn && -e $fn.".bz2"; + if ($fn =~ /\.bz2$/) { + $read = "$BZCAT $fn|"; + } elsif ($fn =~ /\.gz$/) { + $read = "$ZCAT $fn|"; + } + my $hdl; + open($hdl,$read) or die "Can't read $fn ($read)"; + return $hdl; +} + +sub safesystem { + print STDERR "Executing: @_\n"; + system(@_); + if ($? == -1) { + print STDERR "ERROR: Failed to execute: @_\n $!\n"; + exit(1); + } + elsif ($? & 127) { + printf STDERR "ERROR: Execution of: @_\n died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + exit(1); + } + else { + my $exitcode = $? >> 8; + print STDERR "Exit code: $exitcode\n" if $exitcode; + return ! $exitcode; + } +} + diff --git a/mosesdecoder/scripts/analysis/README b/mosesdecoder/scripts/analysis/README new file mode 100644 index 0000000000000000000000000000000000000000..137b5af8714a22b7f26f5e129d365453515d68f0 --- /dev/null +++ b/mosesdecoder/scripts/analysis/README @@ -0,0 +1,10 @@ +Put any scripts useful for human analysis of MT output here. + +sentence-by-sentence.pl [EVH]: show comparison of sentences in reference translation(s)/system output(s)/(truth) in colorful format +-- show all sentences given, with non-matching words in the system output marked, BLEU scores given by sentence, and matching n-grams shown in a table +-- requires all input files be utf8-encoded (you can convert a file with `cat FILE | perl -n -e 'binmode(STDOUT, ":utf8"); print;' > FILE.utf8`) + +show-phrases-used.pl [EVH]: draw colorful diagram of which source phrases map to which target phrases +-- requires the Perl GD module, which in turn requires that gd be installed and in LD_LIBRARY_PATH +-- show average length of source phrases used for each sentence and overall +-- command-line options -r for reference and -s for source; lone filenames are taken to be system outputs diff --git a/mosesdecoder/scripts/analysis/bootstrap-hypothesis-difference-significance.pl b/mosesdecoder/scripts/analysis/bootstrap-hypothesis-difference-significance.pl new file mode 100644 index 0000000000000000000000000000000000000000..822e652dc71f277d8be5084233e7de13d22c7f1b --- /dev/null +++ b/mosesdecoder/scripts/analysis/bootstrap-hypothesis-difference-significance.pl @@ -0,0 +1,568 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. +use utf8; + +############################################### +# An implementation of paired bootstrap resampling for testing the statistical +# significance of the difference between two systems from (Koehn 2004 @ EMNLP) +# +# Usage: ./bootstrap-hypothesis-difference-significance.pl hypothesis_1 hypothesis_2 reference_1 [ reference_2 ... ] +# +# Author: Mark Fishel, fishel@ut.ee +# +# 22.10.2008: altered algorithm according to (Riezler and Maxwell 2005 @ MTSE'05), now computes p-value +# +# 23.01.2010: added NIST p-value and interval computation +############################################### + +use warnings; +use strict; + +#constants +my $TIMES_TO_REPEAT_SUBSAMPLING = 1000; +my $SUBSAMPLE_SIZE = 0; # if 0 then subsample size is equal to the whole set +my $MAX_NGRAMS = 4; +my $IO_ENCODING = "utf8"; # can be replaced with e.g. "encoding(iso-8859-13)" or alike + +#checking cmdline argument consistency +if (@ARGV < 3) { + print STDERR "Usage: ./bootstrap-hypothesis-difference-significance.pl hypothesis_1 hypothesis_2 reference_1 [ reference_2 ... ]\n"; + + unless ($ARGV[0] =~ /^(--help|-help|-h|-\?|\/\?|--usage|-usage)$/) { + die("\nERROR: not enough arguments"); + } + + exit 1; +} + +print STDERR "reading data; " . `date`; + +#read all data +my $data = readAllData(@ARGV); + +my $verbose = $ARGV[3]; + +#calculate each sentence's contribution to BP and ngram precision +print STDERR "performing preliminary calculations (hypothesis 1); " . `date`; +preEvalHypo($data, "hyp1"); + +print STDERR "performing preliminary calculations (hypothesis 2); " . `date`; +preEvalHypo($data, "hyp2"); + +#start comparing +print STDERR "comparing hypotheses -- this may take some time; " . `date`; + +bootstrap_report("BLEU", \&getBleu); +bootstrap_report("NIST", \&getNist); + +##### +# +##### +sub bootstrap_report { + my $title = shift; + my $proc = shift; + + my ($subSampleScoreDiffArr, $subSampleScore1Arr, $subSampleScore2Arr) = bootstrap_pass($proc); + + my $realScore1 = &$proc($data->{refs}, $data->{hyp1}); + my $realScore2 = &$proc($data->{refs}, $data->{hyp2}); + + my $scorePValue = bootstrap_pvalue($subSampleScoreDiffArr, $realScore1, $realScore2); + + my ($scoreAvg1, $scoreVar1) = bootstrap_interval($subSampleScore1Arr); + my ($scoreAvg2, $scoreVar2) = bootstrap_interval($subSampleScore2Arr); + + print "\n---=== $title score ===---\n"; + + print "actual score of hypothesis 1: $realScore1\n"; + print "95% confidence interval for hypothesis 1 score: $scoreAvg1 +- $scoreVar1\n-----\n"; + print "actual score of hypothesis 1: $realScore2\n"; + print "95% confidence interval for hypothesis 2 score: $scoreAvg2 +- $scoreVar2\n-----\n"; + print "Assuming that essentially the same system generated the two hypothesis translations (null-hypothesis),\n"; + print "the probability of actually getting them (p-value) is: $scorePValue.\n"; +} + +##### +# +##### +sub bootstrap_pass { + my $scoreFunc = shift; + + my @subSampleDiffArr; + my @subSample1Arr; + my @subSample2Arr; + + #applying sampling + for my $idx (1..$TIMES_TO_REPEAT_SUBSAMPLING) { + my $subSampleIndices = drawWithReplacement($data->{size}, ($SUBSAMPLE_SIZE? $SUBSAMPLE_SIZE: $data->{size})); + + my $score1 = &$scoreFunc($data->{refs}, $data->{hyp1}, $subSampleIndices); + my $score2 = &$scoreFunc($data->{refs}, $data->{hyp2}, $subSampleIndices); + + push @subSampleDiffArr, abs($score2 - $score1); + push @subSample1Arr, $score1; + push @subSample2Arr, $score2; + + if ($idx % 10 == 0) { + print STDERR "."; + } + if ($idx % 100 == 0) { + print STDERR "$idx\n"; + } + } + + if ($TIMES_TO_REPEAT_SUBSAMPLING % 100 != 0) { + print STDERR ".$TIMES_TO_REPEAT_SUBSAMPLING\n"; + } + + return (\@subSampleDiffArr, \@subSample1Arr, \@subSample2Arr); +} + +##### +# +##### +sub bootstrap_pvalue { + my $subSampleDiffArr = shift; + my $realScore1 = shift; + my $realScore2 = shift; + + my $realDiff = abs($realScore2 - $realScore1); + + #get subsample difference mean + my $averageSubSampleDiff = 0; + + for my $subSampleDiff (@$subSampleDiffArr) { + $averageSubSampleDiff += $subSampleDiff; + } + + $averageSubSampleDiff /= $TIMES_TO_REPEAT_SUBSAMPLING; + + #calculating p-value + my $count = 0; + + my $realScoreDiff = abs($realScore2 - $realScore1); + + for my $subSampleDiff (@$subSampleDiffArr) { + if ($subSampleDiff - $averageSubSampleDiff >= $realDiff) { + $count++; + } + } + + return $count / $TIMES_TO_REPEAT_SUBSAMPLING; +} + +##### +# +##### +sub bootstrap_interval { + my $subSampleArr = shift; + + my @sorted = sort @$subSampleArr; + + my $lowerIdx = int($TIMES_TO_REPEAT_SUBSAMPLING / 40); + my $higherIdx = $TIMES_TO_REPEAT_SUBSAMPLING - $lowerIdx - 1; + + my $lower = $sorted[$lowerIdx]; + my $higher = $sorted[$higherIdx]; + my $diff = $higher - $lower; + + return ($lower + 0.5 * $diff, 0.5 * $diff); +} + +##### +# read 2 hyp and 1 to \infty ref data files +##### +sub readAllData { + my ($hypFile1, $hypFile2, @refFiles) = @_; + + my %result; + + #reading hypotheses and checking for matching sizes + $result{hyp1} = readData($hypFile1); + $result{size} = scalar @{$result{hyp1}}; + + $result{hyp2} = readData($hypFile2); + unless (scalar @{$result{hyp2}} == $result{size}) { + die ("ERROR: sizes of hypothesis sets 1 and 2 don't match"); + } + + #reading reference(s) and checking for matching sizes + $result{refs} = []; + $result{ngramCounts} = { }; + my $i = 0; + + for my $refFile (@refFiles) { + $i++; + my $refDataX = readData($refFile); + + unless (scalar @$refDataX == $result{size}) { + die ("ERROR: ref set $i size doesn't match the size of hyp sets"); + } + + updateCounts($result{ngramCounts}, $refDataX); + + push @{$result{refs}}, $refDataX; + } + + return \%result; +} + +##### +# +##### +sub updateCounts { + my ($countHash, $refData) = @_; + + for my $snt(@$refData) { + my $size = scalar @{$snt->{words}}; + $countHash->{""} += $size; + + for my $order(1..$MAX_NGRAMS) { + my $ngram; + + for my $i (0..($size-$order)) { + $ngram = join(" ", @{$snt->{words}}[$i..($i + $order - 1)]); + + $countHash->{$ngram}++; + } + } + } +} + +##### +# +##### +sub ngramInfo { + my ($data, $ngram) = @_; + + my @nwords = split(/ /, $ngram); + pop @nwords; + my $smallGram = join(" ", @nwords); + + return log($data->{ngramCounts}->{$smallGram} / $data->{ngramCounts}->{$ngram}) / log(2.0); +} + +##### +# read sentences from file +##### +sub readData { + my $file = shift; + my @result; + + open (FILE, $file) or die ("Failed to open `$file' for reading"); + binmode (FILE, ":$IO_ENCODING"); + + while () { + push @result, { words => [split(/\s+/, $_)] }; + } + + close (FILE); + + return \@result; +} + +##### +# calculate each sentence's contribution to the ngram precision and brevity penalty +##### +sub preEvalHypo { + my $data = shift; + my $hypId = shift; + + for my $lineIdx (0..($data->{size} - 1)) { + preEvalHypoSnt($data, $hypId, $lineIdx); + } +} + +##### +# +##### +sub preEvalHypoSnt { + my ($data, $hypId, $lineIdx) = @_; + + my ($correctNgramCounts, $totalNgramCounts); + my ($refNgramCounts, $hypNgramCounts); + my ($coocNgramInfoSum, $totalNgramAmt); + + my $hypSnt = $data->{$hypId}->[$lineIdx]; + + #update total hyp len + $hypSnt->{hyplen} = scalar @{$hypSnt->{words}}; + + #update total ref len with closest current ref len + $hypSnt->{reflen} = getClosestLength($data->{refs}, $lineIdx, $hypSnt->{hyplen}); + $hypSnt->{avgreflen} = getAvgLength($data->{refs}, $lineIdx); + + $hypSnt->{correctNgrams} = []; + $hypSnt->{totalNgrams} = []; + + #update ngram precision for each n-gram order + for my $order (1..$MAX_NGRAMS) { + #hyp ngrams + $hypNgramCounts = groupNgrams($hypSnt, $order); + + #ref ngrams + $refNgramCounts = groupNgramsMultiSrc($data->{refs}, $lineIdx, $order); + + $correctNgramCounts = 0; + $totalNgramCounts = 0; + $coocNgramInfoSum = 0; + $totalNgramAmt = 0; + my $coocUpd; + + #correct, total + for my $ngram (keys %$hypNgramCounts) { + if (!exists $refNgramCounts->{$ngram}) { + $refNgramCounts->{$ngram} = 0; + } + $coocUpd = min($hypNgramCounts->{$ngram}, $refNgramCounts->{$ngram}); + $correctNgramCounts += $coocUpd; + $totalNgramCounts += $hypNgramCounts->{$ngram}; + + if ($coocUpd > 0) { + $coocNgramInfoSum += ngramInfo($data, $ngram); + } + + $totalNgramAmt++; + } + + $hypSnt->{correctNgrams}->[$order] = $correctNgramCounts; + $hypSnt->{totalNgrams}->[$order] = $totalNgramCounts; + $hypSnt->{ngramNistInfoSum}->[$order] = $coocNgramInfoSum; + $hypSnt->{ngramNistCount}->[$order] = $totalNgramAmt; + } +} + +##### +# draw a subsample of size $subSize from set (0..$setSize) with replacement +##### +sub drawWithReplacement { + my ($setSize, $subSize) = @_; + + my @result; + + for (1..$subSize) { + push @result, int(rand($setSize)); + } + + return \@result; +} + +##### +# +##### +sub getNist { + my ($refs, $hyp, $idxs) = @_; + + #default value for $idxs + unless (defined($idxs)) { + $idxs = [0..((scalar @$hyp) - 1)]; + } + + #vars + my ($hypothesisLength, $referenceLength) = (0, 0); + my (@infosum, @totalamt); + + #gather info from each line + for my $lineIdx (@$idxs) { + + my $hypSnt = $hyp->[$lineIdx]; + + #update total hyp len + $hypothesisLength += $hypSnt->{hyplen}; + + #update total ref len with closest current ref len + $referenceLength += $hypSnt->{avgreflen}; + + #update ngram precision for each n-gram order + for my $order (1..$MAX_NGRAMS) { + $infosum[$order] += $hypSnt->{ngramNistInfoSum}->[$order]; + $totalamt[$order] += $hypSnt->{ngramNistCount}->[$order]; + } + } + + my $toplog = log($hypothesisLength / $referenceLength); + my $btmlog = log(2.0/3.0); + + #compose nist score + my $brevityPenalty = ($hypothesisLength > $referenceLength)? 1.0: exp(log(0.5) * $toplog * $toplog / ($btmlog * $btmlog)); + + my $sum = 0; + + for my $order (1..$MAX_NGRAMS) { + $sum += $infosum[$order]/$totalamt[$order]; + } + + my $result = $sum * $brevityPenalty; + + return $result; +} + +##### +# refs: arrayref of different references, reference = array of lines, line = array of words, word = string +# hyp: arrayref of lines of hypothesis translation, line = array of words, word = string +# idxs: indices of lines to include; default value - full set (0..size_of_hyp-1) +##### +sub getBleu { + my ($refs, $hyp, $idxs) = @_; + + #default value for $idxs + unless (defined($idxs)) { + $idxs = [0..((scalar @$hyp) - 1)]; + } + + #vars + my ($hypothesisLength, $referenceLength) = (0, 0); + my (@correctNgramCounts, @totalNgramCounts); + my ($refNgramCounts, $hypNgramCounts); + + #gather info from each line + for my $lineIdx (@$idxs) { + my $hypSnt = $hyp->[$lineIdx]; + + #update total hyp len + $hypothesisLength += $hypSnt->{hyplen}; + + #update total ref len with closest current ref len + $referenceLength += $hypSnt->{reflen}; + + #update ngram precision for each n-gram order + for my $order (1..$MAX_NGRAMS) { + $correctNgramCounts[$order] += $hypSnt->{correctNgrams}->[$order]; + $totalNgramCounts[$order] += $hypSnt->{totalNgrams}->[$order]; + } + } + + #compose bleu score + my $brevityPenalty = ($hypothesisLength < $referenceLength)? exp(1 - $referenceLength/$hypothesisLength): 1; + + my $logsum = 0; + + for my $order (1..$MAX_NGRAMS) { + $logsum += safeLog($correctNgramCounts[$order] / $totalNgramCounts[$order]); + } + + return $brevityPenalty * exp($logsum / $MAX_NGRAMS); +} + +##### +# +##### +sub getAvgLength { + my ($refs, $lineIdx) = @_; + + my $result = 0; + my $count = 0; + + for my $ref (@$refs) { + $result += scalar @{$ref->[$lineIdx]->{words}}; + $count++; + } + + return $result / $count; +} + +##### +# +##### +sub getClosestLength { + my ($refs, $lineIdx, $hypothesisLength) = @_; + + my $bestDiff = infty(); + my $bestLen = infty(); + + my ($currLen, $currDiff); + + for my $ref (@$refs) { + $currLen = scalar @{$ref->[$lineIdx]->{words}}; + $currDiff = abs($currLen - $hypothesisLength); + + if ($currDiff < $bestDiff or ($currDiff == $bestDiff and $currLen < $bestLen)) { + $bestDiff = $currDiff; + $bestLen = $currLen; + } + } + + return $bestLen; +} + +##### +# +##### +sub groupNgrams { + my ($snt, $order) = @_; + my %result; + + my $size = scalar @{$snt->{words}}; + my $ngram; + + for my $i (0..($size-$order)) { + $ngram = join(" ", @{$snt->{words}}[$i..($i + $order - 1)]); + + $result{$ngram}++; + } + + return \%result; +} + +##### +# +##### +sub groupNgramsMultiSrc { + my ($refs, $lineIdx, $order) = @_; + my %result; + + for my $ref (@$refs) { + my $currNgramCounts = groupNgrams($ref->[$lineIdx], $order); + + for my $currNgram (keys %$currNgramCounts) { + if (!exists $result{$currNgram}) { + $result{$currNgram} = 0; + } + $result{$currNgram} = max($result{$currNgram}, $currNgramCounts->{$currNgram}); + } + } + + return \%result; +} + +##### +# +##### +sub safeLog { + my $x = shift; + + return ($x > 0)? log($x): -infty(); +} + +##### +# +##### +sub infty { + return 1e6000; +} + +##### +# +##### +sub min { + my ($a, $b) = @_; + + return ($a < $b)? $a: $b; +} + +##### +# +##### +sub max { + my ($a, $b) = @_; + + return ($a > $b)? $a: $b; +} + +sub poww { + my ($a, $b) = @_; + + return exp($b * log($a)); +} diff --git a/mosesdecoder/scripts/analysis/extract-target-trees.py b/mosesdecoder/scripts/analysis/extract-target-trees.py new file mode 100644 index 0000000000000000000000000000000000000000..5dd097ff05b788d9dc14e34b70e1065c0872faab --- /dev/null +++ b/mosesdecoder/scripts/analysis/extract-target-trees.py @@ -0,0 +1,232 @@ +#!/usr/bin/env python +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +"""Usage: extract-target-trees.py [FILE] + +Reads moses-chart's -T output from FILE or standard input and writes trees to +standard output in Moses' XML tree format. +""" + +import re +import sys + + +class Tree: + def __init__(self, label, children): + self.label = label + self.children = children + + def is_leaf(self): + return len(self.children) == 0 + + +class Derivation(list): + def find_root(self): + assert len(self) > 0 + root = None + for hypothesis in self: + if hypothesis.span[0] != 0: + continue + if root is None or hypothesis.span[1] > root.span[1]: + root = hypothesis + assert root + return root + + def construct_target_tree(self): + hypo_map = {} + for hypothesis in self: + hypo_map[hypothesis.span] = hypothesis + root = self.find_root() + return self._build_tree(root, hypo_map) + + def _build_tree(self, root, hypo_map): + def escape_label(label): + s = label.replace("&", "&") + s = s.replace("<", "<") + s = s.replace(">", ">") + return s + + # Build list of NT spans in source order... + non_term_spans = [] + for item in root.source_symbol_info: + span = item[0] + # In hypo_map iff symbol is NT: + if span != root.span and span in hypo_map: + non_term_spans.append(span) + non_term_spans.sort() + + # ... then convert to target order. + alignment_pairs = root.nt_alignments[:] + alignment_pairs.sort() + target_order_non_term_spans = {} + for i, pair in enumerate(alignment_pairs): + target_order_non_term_spans[pair[1]] = non_term_spans[i] + + children = [] + num_non_terms = 0 + + for i, symbol in enumerate(root.target_rhs): + if i in target_order_non_term_spans: + hyp = hypo_map[target_order_non_term_spans[i]] + children.append(self._build_tree(hyp, hypo_map)) + num_non_terms += 1 + else: + children.append(Tree(escape_label(symbol), [])) + + assert num_non_terms == len(root.nt_alignments) + + return Tree(root.target_lhs, children) + + +class Hypothesis: + def __init__(self): + self.sentence_num = None + self.span = None + self.source_symbol_info = None + self.target_lhs = None + self.target_rhs = None + self.nt_alignments = None + + +def read_derivations(input): + line_num = 0 + start_line_num = None + prev_sentence_num = None + derivation = Derivation() + for line in input: + line_num += 1 + hypothesis = parse_line(line) + if hypothesis.sentence_num != prev_sentence_num: + # We've started reading the next derivation... + prev_sentence_num = hypothesis.sentence_num + if len(derivation): + yield derivation, start_line_num + derivation = Derivation() + start_line_num = line_num + derivation.append(hypothesis) + if len(derivation): + yield derivation, start_line_num + + +def parse_line(s): + if s.startswith("Trans Opt"): + return parse_line_old_format(s) + else: + return parse_line_new_format(s) + + +# Extract the hypothesis components and return a Hypothesis object. +def parse_line_old_format(s): + pattern = r"Trans Opt (\d+) " + \ + r"\[(\d+)\.\.(\d+)\]:" + \ + r"((?: \[\d+\.\.\d+\]=\S+ )+):" + \ + r" (\S+) ->\S+ -> " + \ + r"((?:\S+ )+):" + \ + r"((?:\d+-\d+ )*): c=" + regexp = re.compile(pattern) + match = regexp.match(s) + if not match: + sys.stderr.write("%s\n" % s) + assert match + group = match.groups() + hypothesis = Hypothesis() + hypothesis.sentence_num = int(group[0]) + 1 + hypothesis.span = (int(group[1]), int(group[2])) + hypothesis.source_symbol_info = [] + for item in group[3].split(): + pattern = "\[(\d+)\.\.(\d+)\]=(\S+)" + regexp = re.compile(pattern) + match = regexp.match(item) + assert(match) + start, end, symbol = match.groups() + span = (int(start), int(end)) + hypothesis.source_symbol_info.append((span, symbol)) + hypothesis.target_lhs = group[4] + hypothesis.target_rhs = group[5].split() + hypothesis.nt_alignments = [] + for pair in group[6].split(): + match = re.match(r'(\d+)-(\d+)', pair) + assert match + ai = (int(match.group(1)), int(match.group(2))) + hypothesis.nt_alignments.append(ai) + return hypothesis + + +# Extract the hypothesis components and return a Hypothesis object. +def parse_line_new_format(s): + pattern = r"(\d+) \|\|\|" + \ + r" (\[\S+\]) -> ((?:\S+ )+)\|\|\|" + \ + r" (\[\S+\]) -> ((?:\S+ )+)\|\|\|" + \ + r" ((?:\d+-\d+ )*)\|\|\|" + \ + r"((?: \d+\.\.\d+)*)" + regexp = re.compile(pattern) + match = regexp.match(s) + if not match: + sys.stderr.write("%s\n" % s) + assert match + group = match.groups() + hypothesis = Hypothesis() + hypothesis.sentence_num = int(group[0]) + 1 + spans = [] + for pair in group[6].split(): + match = re.match(r'(\d+)\.\.(\d+)', pair) + assert match + span = (int(match.group(1)), int(match.group(2))) + spans.append(span) + hypothesis.span = (spans[0][0], spans[-1][1]) + hypothesis.source_symbol_info = [] + for i, symbol in enumerate(group[2].split()): + hypothesis.source_symbol_info.append((spans[i], strip_brackets(symbol))) + hypothesis.target_lhs = strip_brackets(group[3]) + hypothesis.target_rhs = group[4].split() + hypothesis.nt_alignments = [] + for pair in group[5].split(): + match = re.match(r'(\d+)-(\d+)', pair) + assert match + ai = (int(match.group(1)), int(match.group(2))) + hypothesis.nt_alignments.append(ai) + return hypothesis + + +def strip_brackets(symbol): + if symbol[0] == '[' and symbol[-1] == ']': + return symbol[1:-1] + return symbol + + +def tree_to_xml(tree): + if tree.is_leaf(): + return tree.label + else: + s = ' ' % tree.label + for child in tree.children: + s += tree_to_xml(child) + s += " " + s += '' + return s + + +def main(): + if len(sys.argv) > 2: + sys.stderr.write("usage: %s [FILE]\n" % sys.argv[0]) + sys.exit(1) + if len(sys.argv) == 1 or sys.argv[1] == "-": + input = sys.stdin + else: + input = open(sys.argv[1]) + for derivation, line_num in read_derivations(input): + try: + tree = derivation.construct_target_tree() + except: + msg = ( + "error processing derivation starting at line %d\n" + % line_num) + sys.stderr.write(msg) + raise + print tree_to_xml(tree) + + +if __name__ == '__main__': + main() diff --git a/mosesdecoder/scripts/analysis/oov.pl b/mosesdecoder/scripts/analysis/oov.pl new file mode 100644 index 0000000000000000000000000000000000000000..5228f0f45b26533333b600ff7f65e4df37967142 --- /dev/null +++ b/mosesdecoder/scripts/analysis/oov.pl @@ -0,0 +1,202 @@ +#!/usr/bin/env perl +# Display OOV rate of a test set against a training corpus or a phrase table. +# Ondrej Bojar +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use strict; +use warnings; + +use Digest::MD5 qw(md5); +use Encode qw(encode_utf8); +use Getopt::Long; + +binmode(STDIN, ":utf8"); +binmode(STDOUT, ":utf8"); +binmode(STDERR, ":utf8"); + +my $verbose = 0; +my $n = 1; +my $srcfile = undef; +my $md5 = 0; +GetOptions( + "n=i" => \$n, # the n-grams to search for (default: unigrams) + "verbose!" => \$verbose, # emit the list of oov words + "md5!" => \$md5, # emit the list of oov words + "src=s" => \$srcfile, # use this source file +) or exit 1; + +my $testf = shift; +if (!defined $testf) { + print STDERR "usage: $0 test-corpus < training-corpus +Options: + --n=1 ... use phrases of n words as the unit + set --n=0 to compare *whole sentences* (forces md5 hashing on) + --md5 ... hash each ngram using md5, saves memory for longer n-grams + --verbose ... emit OOV phrases at the end + --src=test-src ... a word in the test-corpus not deemed OOV if present in the + corresponding source sentence in test-src. + The files test-corpus and test-src must be of equal length. +Synopsis: + Check OOV of a training corpus against a test set: + cat corpus.src.txt | $0 testset.txt + Check target-side OOV of a phrase table against a reference: + cat ttable | sed 's/ ||| //g' | cut -f 2 \ + | $0 reference.txt +"; + exit 1; +} + +my $ngr_or_sent = $n > 0 ? "$n-grams" : "sentences"; + +# load source file to accept ngrams from source +my $source_confirms = undef; +my $srcfilelen = undef; +if (defined $srcfile) { + my $fh = my_open($srcfile); + my $nr = 0; + my $srctokens = 0; + while (<$fh>) { + $nr++; + chomp; + s/^\s+//; + s/\s+$//; + my $ngrams = ngrams($n, $_); + foreach my $ngr (keys %$ngrams) { + $source_confirms->[$nr]->{$ngr} += $ngrams->{$ngr}; + $srctokens += $ngrams->{$ngr}; + } + } + close $fh; + print "Source set sents\t$nr\n"; + print "Source set running $ngr_or_sent\t$srctokens\n" if $n>0; + $srcfilelen = $nr; +} + +my %needed = (); +my $fh = my_open($testf); +my $nr = 0; +my $testtokens = 0; +my %testtypes = (); +while (<$fh>) { + $nr++; + chomp; + s/^\s+//; + s/\s+$//; + my $ngrams = ngrams($n, $_); + foreach my $ngr (keys %$ngrams) { + $needed{$ngr} += $ngrams->{$ngr} + unless $source_confirms->[$nr]->{$ngr}; + $testtokens += $ngrams->{$ngr}; + $testtypes{$ngr} = 1; + } +} +close $fh; +my $testtypesneeded = scalar(keys(%needed)); +my $testtypes = scalar(keys(%testtypes)); +print "Test set sents\t$nr\n"; +print "Test set running $n-grams\t$testtokens\n" if $n>0; +print "Test set unique $ngr_or_sent needed\t$testtypesneeded\n"; +print "Test set unique $ngr_or_sent\t$testtypes\n"; + +die "Mismatching sent count: $srcfile and $testf ($srcfilelen vs. $nr)" + if defined $srcfile && $srcfilelen != $nr; + +my %seen; +$nr = 0; +my $traintokens = 0; +while (<>) { + $nr++; + print STDERR "." if $nr % 10000 == 0; + print STDERR "($nr)" if $nr % 500000 == 0; + chomp; + s/^\s+//; + s/\s+$//; + my $ngrams = ngrams($n, $_); # [ split /\s+/, $_ ]); + foreach my $ngr (keys %$ngrams) { + $seen{$ngr} = 1 if $ngrams->{$ngr}; + $traintokens += $ngrams->{$ngr}; + } +} +foreach my $ngr (keys %needed) { + delete $needed{$ngr} if defined $seen{$ngr}; +} +print STDERR "Done.\n"; +my $traintypes = scalar(keys(%seen)); +print "Training set sents\t$nr\n"; +print "Training set running $n-grams\t$traintokens\n" if $n>0; +print "Training set unique $ngr_or_sent\t$traintypes\n"; + + +my $oovtypes = scalar(keys(%needed)); +my $oovtokens = 0; +foreach my $v (values %needed) { + $oovtokens += $v; +} +printf "OOV $ngr_or_sent types\t%i\t%.1f %%\n", $oovtypes, $oovtypes/$testtypes*100; +printf "OOV $ngr_or_sent tokens\t%i\t%.1f %%\n", $oovtokens, $oovtokens/$testtokens*100; + +if ($verbose) { + foreach my $ngr (sort {$needed{$b} <=> $needed{$a}} keys %needed) { + print "$needed{$ngr}\t$ngr\n"; + } +} + +sub my_open { + my $f = shift; + if ($f eq "-") { + binmode(STDIN, ":utf8"); + return *STDIN; + } + + die "Not found: $f" if ! -e $f; + + my $opn; + my $hdl; + my $ft = `file '$f'`; + # file might not recognize some files! + if ($f =~ /\.gz$/ || $ft =~ /gzip compressed data/) { + $opn = "zcat '$f' |"; + } elsif ($f =~ /\.bz2$/ || $ft =~ /bzip2 compressed data/) { + $opn = "bzcat '$f' |"; + } else { + $opn = "$f"; + } + open $hdl, $opn or die "Can't open '$opn': $!"; + binmode $hdl, ":utf8"; + return $hdl; +} + +sub ngrams { + my $n = shift; + my $sent = shift; + + if ($n == 0) { + return { md5(encode_utf8($sent)) => 1 }; + } else { + my @words = split /\s+/, $sent; + + #factors + if ( $sent =~ m/[|]/) { + my $use_index = 0; # default factor is the first one + @words = map { ( split /[|]/, $_ ) [$use_index] } @words; + } + + my $out; + if ($n == 1) { + foreach my $w (@words) { + my $usew = $md5 ? md5(encode_utf8($$w)) : $w; + $out->{$w}++; + } + } else { + while ($#words >= $n-1) { + my $ngr = join(" ", @words[0..$n-1]); + my $usengr = $md5 ? md5(encode_utf8($ngr)) : $ngr; + $out->{$ngr}++; + shift @words; + } + } + return $out; + } +} diff --git a/mosesdecoder/scripts/analysis/sentence-by-sentence.pl b/mosesdecoder/scripts/analysis/sentence-by-sentence.pl new file mode 100644 index 0000000000000000000000000000000000000000..b9eb6e56d79541d8f2ef54fa3b57d73e7b0bd762 --- /dev/null +++ b/mosesdecoder/scripts/analysis/sentence-by-sentence.pl @@ -0,0 +1,547 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +# $Id$ +#sentence-by-sentence: take in a system output, with any number of factors, and a reference translation, also maybe with factors, and show each sentence and its errors +#usage: sentence-by-sentence SYSOUT [REFERENCE]+ > sentences.html + +use warnings; +use strict; +use Getopt::Long; + +my $sourcefile = undef; +my @truthfiles; +GetOptions( + "source|s=s" => \$sourcefile, + "reference|r=s" => \@truthfiles +) or exit(1); + +my @sysoutfiles = @ARGV; +if (scalar(@sysoutfiles) == 0 || scalar(@truthfiles) == 0) +{ + print STDERR "usage: $0 system_output(s) > sentence-by-sentence.html +Options: + --source,-s STRING foreign input (can be used multiple times) + --reference,-r STRING English truth (can be used multiple times) + +N-grams are colored by the number of supporting references: + red for fewest, green for most, mediate shades otherwise.\n"; + exit(1); +} + +#################################################################################################################### + +my @TRUTHS = () x scalar(@truthfiles); +for(my $i = 0; $i < scalar(@truthfiles); $i++) +{ + open($TRUTHS[$i], "<$truthfiles[$i]") or die "couldn't open '$truthfiles[$i]' for read: $!\n"; + binmode($TRUTHS[$i], ":utf8"); +} +my @SYSOUTS = () x scalar(@sysoutfiles); +for(my $i = 0; $i < scalar(@sysoutfiles); $i++) +{ + open($SYSOUTS[$i], "<$sysoutfiles[$i]") or die "couldn't open '$sysoutfiles[$i]' for read: $!\n"; + binmode($SYSOUTS[$i], ":utf8"); +} +binmode(STDOUT, ":utf8"); +if (defined $sourcefile) +{ + open(SOURCE, "<$sourcefile") or die "couldn't open '$sourcefile' for read: $!\n"; + binmode(SOURCE, ":utf8"); +} +my @bleuScores; +for(my $i = 0; $i < scalar(@sysoutfiles); $i++) {push @bleuScores, [];} +my @htmlSentences; +my @javascripts; +my @htmlColors = ('#99ff99', '#aaaaff', '#ffff99', '#ff9933', '#ff9999'); #color sentences by rank (split in n tiers) +my $ngramSingleRefColor = '#aaffaa'; +my @ngramMultirefColors = ('#ff9999', '#ff9933', '#ffff99', '#a0a0ff', '#99ff99'); #arbitrary-length list; first entry is used for worst n-grams +my $numSentences = 0; +my (@sLines, @eLines); +while(readLines(\@SYSOUTS, \@sLines) && readLines(\@TRUTHS, \@eLines)) +{ + #create array of lines of HTML + my @html = ("
"); #%%%% is a flag to be replaced + + my (@sFactors, @eFactors, $sourceFactors); + #process source + if (defined $sourcefile) + { + my $sourceLine = ; + escapeMetachars($sourceLine); #remove inconsistencies in encoding + $sourceFactors = extractFactorArrays($sourceLine); + push @html, "Source" + . getFactoredSentenceHTML($sourceFactors) . "\n"; + } + #process truth + for(my $j = 0; $j < scalar(@truthfiles); $j++) + { + escapeMetachars($eLines[$j]); #remove inconsistencies in encoding + push @eFactors, extractFactorArrays($eLines[$j]); + push @html, "Ref $j" + . getFactoredSentenceHTML($eFactors[$j]) . "\n"; + } + #process sysouts + my @bleuData; + for(my $j = 0; $j < scalar(@sysoutfiles); $j++) + { + escapeMetachars($sLines[$j]); #remove inconsistencies in encoding + push @sFactors, extractFactorArrays($sLines[$j]); + push @bleuData, getBLEUSentenceDetails($sFactors[$j], \@eFactors, 0); + push @{$bleuScores[$j]}, [$numSentences, $bleuData[$j]->[0], 0]; #the last number will be the rank + my $pwerData = getPWERSentenceDetails($sFactors[$j], \@eFactors, 0); + push @html, "Output $j" + . getFactoredSentenceHTML($sFactors[$j], $pwerData) . "\n"; + push @html, "N-grams" + . getAllNgramsHTML($sFactors[$j], $bleuData[$j]->[1], scalar(@truthfiles)) . "\n"; + } + splice(@html, 1, 0, "
Sentence $numSentences)     BLEU: " + . join("; ", map {sprintf("%.4lg", $_->[0]->[0]) . " (" . join('/', map {sprintf("%.4lg", $_)} @{$_->[0]}[1 .. 4]) . ") "} @bleuData) . "
\n"); + push @html, "
\n"; + push @htmlSentences, join('', @html); + $numSentences++; + @sLines = (); @eLines = (); #clear writable arrays to be refilled +} +foreach my $sysoutfh (@SYSOUTS) {close($sysoutfh);} +foreach my $truthfh (@TRUTHS) {close($truthfh);} + +my $stylesheet = "\n"; + +print "\n"; +print "[" . join(', ', @sysoutfiles) . "] vs. [" . join(', ', @truthfiles) . "]: Sentence-by-Sentence Comparison$stylesheet\n"; + +foreach my $systemScores (@bleuScores) {rankSentencesByBLEU($systemScores);} +#javascript to sort by BLEU for any system, by order in corpus ... +print "\n"; + +#legends for background colors of sentences and n-grams +my (@minBLEU, @maxBLEU); +my @bleuTiers = () x scalar(@htmlSentences); #for each sentence, arrayref of tier indices for each system +for(my $i = 0; $i < scalar(@sysoutfiles); $i++) +{ + my @a = (1e9) x scalar(@htmlColors); + my @b = (-1e9) x scalar(@htmlColors); + for(my $k = 0; $k < scalar(@htmlSentences); $k++) + { + my $tier = int($bleuScores[$i]->[$k]->[2] / (scalar(@htmlSentences) / scalar(@htmlColors))); + push @{$bleuTiers[$k]}, $tier; + if($bleuScores[$i]->[$k]->[1]->[0] < $a[$tier]) {$a[$tier] = $bleuScores[$i]->[$k]->[1]->[0];} + if($bleuScores[$i]->[$k]->[1]->[0] > $b[$tier]) {$b[$tier] = $bleuScores[$i]->[$k]->[1]->[0];} + } + push @minBLEU, \@a; + push @maxBLEU, \@b; +} +print "\n"; +print "
Sentence Background Colors => BLEU Ranges"; +for(my $k = 0; $k < scalar(@htmlColors); $k++) +{ + print ""; +} +print "
" + . sprintf("%.4lg", $minBLEU[0]->[$k]) . " - " . sprintf("%.4lg", $maxBLEU[0]->[$k]); + for(my $j = 0; $j < scalar(@sysoutfiles); $j++) + { + print "" . sprintf("%.4lg", $minBLEU[$j]->[$k]) . " - " . sprintf("%.4lg", $maxBLEU[$j]->[$k]) . ""; + } + print "
N-gram Colors => Number of Matching Reference Translations"; +for(my $k = 1; $k <= scalar(@truthfiles); $k++) +{ + print ""; +} +print "
$k
+PWER errors are marked in red on output sentence displays.
+
Color by system # " + . join(' | ', map {"$_" . (($_ == '0') ? " (default)" : "")} (0 .. scalar(@sysoutfiles) - 1)) . "
+
Sort by BLEU score | corpus order (default)
\n"; + +#sentence boxes +print "
"; +for(my $j = 0; $j < scalar(@htmlSentences); $j++) +{ + print "
"; + print "
" . join('', map {"sentence_tier$_"} @{$bleuTiers[$j]}) . "
"; + print "
"; +# my $bgcolor = getSentenceBGColorHTML($bleuScores[0]->[$j], $i); #i is now # of sentences + my $tierNum = $bleuTiers[$j]->[0]; + $htmlSentences[$j] =~ s/%%%%/tier$tierNum/; + print "$htmlSentences[$j]
\n"; +} +print "
"; + +##################### utils ##################### + +#arguments: a, b (scalars) +sub min +{ + my ($a, $b) = @_; + return ($a < $b) ? $a : $b; +} +#arguments: a, b (scalars) +sub max +{ + my ($a, $b) = @_; + return ($a > $b) ? $a : $b; +} +#arguments: a list of elements +#return undef for an empty list, the max element otherwise +sub maxN +{ + if(scalar @_ == 0) {return undef;} + my $val = shift @_; + foreach my $e (@_) {if($e > $val) {$val = $e;}} + return $val; +} +#arguments: x +sub my_log +{ + return -9999999999 unless $_[0]; + return log($_[0]); +} +#arguments: x +sub round +{ + my $x = shift; + return ($x - int($x) < .5) ? int($x) : int($x) + 1; +} + +#escape HTML metacharacters for display purposes and to allow for consistent string comparison +#arguments: string to be formatted in place +#return: none +sub escapeMetachars +{ + my $str = shift; + $str =~ s/&\s+/& /; + $str =~ s/<\s+/< /; + $str =~ s/>\s+/> /; +} + +############################################################################################################################################################### + +#read one line from each of any number of filehandles +#arguments: arrayref of filehandles, (empty) arrayref to be filled with read lines +#return: 1 on success, 0 on failure (on failure the lines arrayref's value isn't defined) +sub readLines +{ + my ($refFilehandles, $refLines) = @_; + foreach my $fh (@$refFilehandles) + { + my $line = <$fh>; + return 0 unless defined($line); + push @$refLines, $line; + } + return 1; +} + +#arguments: line read from corpus file +#return: sentence (arrayref of arrayrefs of factor strings) taken from line +sub extractFactorArrays +{ + my $line = shift; + die "" if !defined $line; + chomp $line; + $line =~ s/^\s*|\s*$//g; #added by Ondrej to handle moses-mert-parallel output + my @words = split(/\s+/, $line); + my @factors = map {my @f = split(/\|/, $_); \@f;} @words; + return \@factors; +} + +#can handle multiple reference translations; assume at least one +#arguments: sysout sentence (arrayref of arrayrefs of factor strings), truth sentences (arrayref of same), factor index to use +#return: arrayref of [arrayref of [overall BLEU score, n-gram precisions], arrayref of matching n-gram [start index, length, arrayref of indices of matching references]] +sub getBLEUSentenceDetails +{ + my $maxNgramOrder = 4; + my ($refSysOutput, $refTruths, $factorIndex) = @_; + my $length_translation = scalar(@$refSysOutput); #length of sysout sentence + my @length_references = map {scalar(@$_)} @$refTruths; + my $closestTruthLength = (sort(map {abs($_ - $length_translation)} @length_references))[0]; + my @correct = (0) x $maxNgramOrder; #n-gram counts + my @total = (0) x $maxNgramOrder; #n-gram counts + my $returnData = [[], []]; + my %REF_GRAM; #hash from n-gram to arrayref with # of times found in each reference + my $ngramMatches = []; #arrayref of n-gram [start index, length] + for(my $j = 0; $j < scalar(@$refTruths); $j++) + { + for(my $i = 0; $i < $length_references[$j]; $i++) + { + my $gram = ''; + for(my $k = 0; $k < min($i + 1, $maxNgramOrder); $k++) #run over n-gram orders + { + $gram = $refTruths->[$j]->[$i - $k]->[$factorIndex] . " " . $gram; + #increment the count for the given n-gram and given reference number + if(!exists $REF_GRAM{$gram}) + { + my @tmp = (0) x scalar @$refTruths; + $tmp[$j] = 1; + $REF_GRAM{$gram} = \@tmp; + } + else + { + $REF_GRAM{$gram}->[$j]++; + } + } + } + } + for(my $i = 0; $i < $length_translation; $i++) + { + my $gram = ''; + for(my $k = 0; $k < min($i + 1, $maxNgramOrder); $k++) #run over n-gram orders + { + $gram = $refSysOutput->[$i - $k]->[$factorIndex] . " " . $gram; + if(exists $REF_GRAM{$gram}) #this n-gram was found in at least one reference + { + $correct[$k]++; + my @indices = (); + my $notOvercounting = 0; #make sure we don't 'match' against truth n-grams whose instances have all been used already + for(my $m = 0; $m < scalar(@{$REF_GRAM{$gram}}); $m++) + { + if($REF_GRAM{$gram}->[$m] > 0) + { + push @indices, $m; + $REF_GRAM{$gram}->[$m]--; + $notOvercounting = 1; + } + } + if($notOvercounting == 1) {push @$ngramMatches, [$i - $k, $k + 1, \@indices];} + } + } + } + my $brevity = ($length_translation > $closestTruthLength || $length_translation == 0) ? 1 : exp(1 - $closestTruthLength / $length_translation); + my @pct; + my ($logsum, $logcount) = (0, 0); + for(my $i = 0; $i < $maxNgramOrder; $i++) + { + $total[$i] = max(1, $length_translation - $i); + push @pct, ($total[$i] == 0) ? -1 : $correct[$i] / $total[$i]; + if($total[$i] > 0) + { + $logsum += my_log($pct[$i]); + $logcount++; + } + } + my $bleu = $brevity * exp($logsum / $logcount); + $returnData->[0] = [$bleu, @pct]; + $returnData->[1] = $ngramMatches; + return $returnData; +} + +#can handle multiple sentence translations; assume at least one +#arguments: sysout sentence (arrayref of arrayrefs of factor strings), truth sentences (arrayref of same), factor index to use +#return: hashref of sysout word index => whether word matches +sub getPWERSentenceDetails +{ + my ($refSysOutput, $refTruths, $factorIndex) = @_; + my $matches = {}; + my %truthWords; #hash from word to arrayref with number of times seen in each reference (but later holds only the max) + for(my $i = 0; $i < scalar(@$refTruths); $i++) + { + foreach my $eWord (@{$refTruths->[$i]}) + { + my $factor = $eWord->[$factorIndex]; + if(exists $truthWords{$factor}) {$truthWords{$factor}->[$i]++;} + else {my @tmp = (0) x scalar(@$refTruths); $tmp[$i] = 1; $truthWords{$factor} = \@tmp;} + } + } + %truthWords = map {$_ => maxN(@{$truthWords{$_}})} (keys %truthWords); #save only the max times each word is seen in a reference + for(my $j = 0; $j < scalar(@$refSysOutput); $j++) + { + if(exists $truthWords{$refSysOutput->[$j]->[$factorIndex]} && $truthWords{$refSysOutput->[$j]->[$factorIndex]} > 0) + { + $truthWords{$refSysOutput->[$j]->[$factorIndex]}--; + $matches->{$j} = 1; + } + else + { + $matches->{$j} = 0; + } + } + return $matches; +} + +#assign ranks to sentences by BLEU score +#arguments: arrayref of arrayrefs of [sentence index, arrayref of [bleu score, n-gram precisions], rank to be assigned] +#return: none +sub rankSentencesByBLEU +{ + my $bleuData = shift; + my $i = 0; + #sort first on score, then on 1-gram accuracy, then on sentence index + foreach my $sentenceData (reverse sort {my $c = $a->[1]->[0] <=> $b->[1]->[0]; if($c == 0) {my $d = $a->[1]->[1] <=> $b->[1]->[1]; if($d == 0) {$a->[0] cmp $b->[0];} else {$d;}} else {$c;}} @$bleuData) {$sentenceData->[2] = $i++;} +} + +############################################################################################################################################################### + +#write HTML for a sentence containing factors (display words in a row) +#arguments: sentence (arrayref of arrayrefs of factor strings), PWER results (hashref from word indices to 0/1 whether matched a truth word) +#return: HTML string +sub getFactoredSentenceHTML +{ + my $sentence = shift; + my $pwer = 0; if(scalar(@_) > 0) {$pwer = shift;} + my $html = ""; + for(my $i = 0; $i < scalar(@$sentence); $i++) #loop over words + { + my $style = ''; #default + if($pwer ne '0' && $pwer->{$i} == 0) {$style = 'color: #cc0000; font-weight: bold';} + $html .= ""; + } + return $html . "
" . join("
", @{$sentence->[$i]}) . "
"; +} + +#arguments: arrayref of [sentence index, arrayref of [bleu score, n-gram precisions], rank], number of sentences +#return: HTML color string +sub getSentenceBGColorHTML +{ + my ($scoreData, $numSentences) = @_; + my $tier = int($scoreData->[2] / ($numSentences / scalar(@htmlColors))); #0..n-1 + return $htmlColors[$tier]; +} + +#display all matching n-grams in the given sentence, with all 1-grams on one line, then arranged by picking, for each, the first line on which it fits, +# where a given word position can only be filled by one n-gram per line, so that all n-grams can be shown +#arguments: sentence (arrayref of arrayrefs of factor strings), arrayref of arrayrefs of matching n-gram [start, length, arrayref of matching reference indices], +# number of reference translations +#return: HTML string +sub getAllNgramsHTML +{ + my ($sentence, $ngrams, $numTruths) = @_; + my $factorIndex = 0; + my @table = (); #array or arrayrefs each of which represents a line; each position has the index of the occupying n-gram, or -1 if none + my $n = 0; #n-gram index + foreach my $ngram (sort {$a->[0] <=> $b->[0]} @$ngrams) + { + #check for an open slot in an existing row + my $foundRow = 0; + my $r = 0; + foreach my $row (@table) + { + if(rowIsClear($row, $ngram) == 1) + { + @{$row}[$ngram->[0] .. ($ngram->[0] + $ngram->[1] - 1)] = ($n) x $ngram->[1]; + push @$ngram, $r; #add row index + $foundRow = 1; + last; + } + $r++; + } + #add row if necessary + if($foundRow == 0) + { + my @row = (-1) x scalar(@$sentence); + @row[$ngram->[0] .. ($ngram->[0] + $ngram->[1] - 1)] = ($n) x $ngram->[1]; + push @$ngram, scalar(@table); #add row index + push @table, \@row; + } + $n++; + } + + my $html = ""; + + my $numWords = scalar(@$sentence); + my ($curRow, $curCol) = (0, 0); #address in table + $html .= ""; + foreach my $ngram (sort {my $c = $a->[3] <=> $b->[3]; if($c == 0) {$a->[0] <=> $b->[0]} else {$c}} @$ngrams) #sort by row, then word num + { + while($ngram->[0] > $curCol || $ngram->[3] > $curRow) {$html .= ""; $curCol = ($curCol + 1) % $numWords; if($curCol == 0) {$html .= ""; $curRow++;}} + $html .= ""; + $curCol = ($curCol + $ngram->[1]) % $numWords; if($curCol == 0) {$html .= ""; $curRow++;} + } + $html .= ""; + + return $html . "
" . join("", map {$_->[$factorIndex]} @$sentence) . "
[2]}), $numTruths) . "\">" . join(' ', map {$_->[$factorIndex]} @{$sentence}[$ngram->[0] .. $ngram->[0] + $ngram->[1] - 1]) . "
\n"; +} + +#auxiliary to getAllNgramsHTML(): check a table row for an empty piece at the right place for the given n-gram +#arguments: row (arrayref of ints), n-gram (arrayref of [start index, length]) +#return: whether (0/1) row is clear +sub rowIsClear +{ + my ($row, $ngram) = @_; + return (maxN(@{$row}[$ngram->[0] .. $ngram->[0] + $ngram->[1] - 1]) == -1) ? 1 : 0; +} + +#auxiliary to getAllNgramsHTML() +#arguments: number of reference translations matching the n-gram, total number of references +#return: HTML color string +sub getNgramColorHTML +{ + my ($matches, $total) = @_; + if($total == 1) {return $ngramSingleRefColor;} + return $ngramMultirefColors[round($matches / $total * (scalar(@ngramMultirefColors) - 1))]; +} diff --git a/mosesdecoder/scripts/analysis/sg2dot.perl b/mosesdecoder/scripts/analysis/sg2dot.perl new file mode 100644 index 0000000000000000000000000000000000000000..5f9a5ea1dd4c1bb8328eef1415f8ed6d7e9a5425 --- /dev/null +++ b/mosesdecoder/scripts/analysis/sg2dot.perl @@ -0,0 +1,105 @@ +#!/usr/bin/env perl +# +# Author : Loic BARRAULT +# Script to convert MOSES searchgraph to DOT format +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use warnings; +use strict; +use File::Path; +use File::Basename; +use File::Copy; +use Getopt::Long; + +my $organize_to_stacks = 0; +GetOptions( + "organize-to-stacks" => \$organize_to_stacks, +) or exit 1; + +my %stacks = (); +$stacks{0}{0} = 0; + +print STDOUT "digraph searchgraph\n{\nrankdir=LR\n"; + + +my($line, $cpt, $from, $to, $label, $recombined, $transition, $o, $stack, $state); +$cpt = 0; + +$line=<>; #skip first line (the empty hypothesis, no arc in fact) + +my $nr = 0; +while(($line=<>) ) +{ + $nr++; + $from = ""; + $to = ""; + $label = ""; + $recombined = ""; + chomp($line); + #print STDERR "$line\n"; + + #Three kinds of lines in searchgraph + #0 hyp=0 stack=0 forward=1 fscore=-205.192 + #0 hyp=5 stack=1 back=0 score=-0.53862 transition=-0.53862 forward=181 fscore=-205.36 covered=0-0 out=I am , pC=-0.401291, c=-0.98555 + #256 hyp=6566 stack=2 back=23 score=-2.15644 transition=-0.921959 recombined=6302 forward=15519 fscore=-112.807 covered=2-2 out=countries , , pC=-0.640574, c=-1.07215 + + if($line =~ /hyp=(\d+).+stack=(\d+).+back=(\d+).+transition=([^ ]*).+recombined=(\d+).+out=(.*)(, pC|$)/) + { + #print STDERR "hyp=$1, stack=$2, from=$3, transition=$4, recombined=$5, out=$6\n"; + $to = $1; + $stack = $2; + $from = $3; + $transition=$4; + $recombined = $5; + $o = $6; + $label = "[color=blue label="; + + $to = $recombined; + $stacks{$stack}{$recombined} = $recombined if $organize_to_stacks; + #$stack++; + #$stacks{$stack}{$recombined} = $recombined; + } + elsif($line =~ /hyp=(\d+).+stack=(\d+).+back=(\d+).+transition=([^ ]*).+out=(.*)(, pC|$)/) + { + #print STDERR "hyp=$1, stack=$2, from=$3, transition=$4, out=$5\n"; + $to = $1; + $stack = $2; + $from = $3; + $transition=$4; + $o = $5; + $label = "[label="; + $stacks{$stack}{$to} = $to if $organize_to_stacks; + #$stack++; + #$stacks{$stack}{$to} = $to; + } + else{ + die "$nr:Bad line: $line\n"; + } + + $o =~ s/\"/\\"/g ; + #print STDERR "out = $o after regexp\n"; + $label .= "\"$o p=$transition\"]\n"; + #$label .= " p=$transition\"]\n"; + + print STDOUT "$from -> $to $label"; + + $cpt++; +} + +if ($organize_to_stacks) { + foreach $stack (sort (keys(%stacks))) + { + print STDOUT "{ rank=same; "; + foreach $state (sort keys %{ $stacks{$stack} } ) + { + print STDOUT "$stacks{$stack}{$state} "; + } + print STDOUT "}\n"; + } +} + +print STDOUT "\n}\n"; + +print STDERR "Converted $nr lines.\n"; diff --git a/mosesdecoder/scripts/analysis/show-phrases-used.pl b/mosesdecoder/scripts/analysis/show-phrases-used.pl new file mode 100644 index 0000000000000000000000000000000000000000..9428ea9b8f120d696f790e728ca0c934ba53d1ed --- /dev/null +++ b/mosesdecoder/scripts/analysis/show-phrases-used.pl @@ -0,0 +1,267 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +# $Id$ +#show-phrases-used: display all source and target phrases for each sentence in a corpus, and give average phrase length used +#usage: show-phrases-used DECODER_OUTFILE > output.html +# where DECODER_OUTFILE is the output of moses with the -T (show alignments) option + +use warnings; +use strict; + +BEGIN +{ + my $wd= `pawd 2>/dev/null`; + if (!$wd) {$wd = `pwd`;} + chomp $wd; + push @INC, "$wd/perllib/sun4-solaris"; #for GD; if not an absolute path, Polygon.pm throws a fit +} +use lib "perllib/sun4-solaris/auto/GD"; +use GD; +use GD::Image; +use GD::Polygon; + +#parse decoder output +my $infilename = shift @ARGV; +open(INPUT, "<$infilename") or die "couldn't open '$infilename' for read: $!\n"; #stdin +my @sentenceData = ([], [], [], []); #(phrases used; dropped words (as factor arrays); average phrase lengths; phrase max char counts per word) per sentence +my $curSentence = -1; +my @numSrcChars = (); #used for alignment in image +my @numTgtChars = (); +my @numSrcPhrases = (); +my @numTgtPhrases = (); +my ($sentenceSrcChars, $sentenceTgtChars, $sentenceSrcPhrases, $sentenceTgtPhrases, $tgtWords); +my $mode = 'none'; +while(my $line = ) +{ + $mode = 'none' if $line =~ /^\s*\n$/; #a blank line ends any section + if($line =~ /TRANSLATION HYPOTHESIS DETAILS:/) #first useful info printed per sentence, so we have a new sentence + { + $mode = 'opts'; + if($curSentence > -1) + { + push @numSrcChars, $sentenceSrcChars; + push @numTgtChars, $sentenceTgtChars; + push @numSrcPhrases, $sentenceSrcPhrases; + push @numTgtPhrases, $sentenceTgtPhrases; + } + $curSentence++; + $sentenceSrcChars = 0; $sentenceTgtChars = 0; + $sentenceSrcPhrases = 0; $sentenceTgtPhrases = 0; + $tgtWords = 0; + push @{$sentenceData[0]}, []; + push @{$sentenceData[1]}, []; + push @{$sentenceData[2]}, 0; + } + elsif($line =~ /SOURCE\/TARGET SPANS:/) {$mode = 'spans';} #redundant info; we won't check this mode below + elsif($line =~ /WORDS\/PHRASES DROPPED:/) {$mode = 'drops';} + #read info when in a mode + elsif($mode eq 'opts') + { + die "can't parse translation-options info for sentence $curSentence" unless $line =~ /SOURCE:\s+\[(\d+)\.\.(\d+)\]\s+(\S(.*\S)?)\s*$/; + my %details; + $details{'srcStart'} = $1; + $details{'srcEnd'} = $2; + my @srcFactors = map {my @f = split(/\|/, $_); \@f;} (split(/\s+/, $3)); + $details{'srcText'} = \@srcFactors; + $sentenceData[2]->[$curSentence] += $2 - $1 + 1; #build sum of phrase lengths + $details{'srcNumChars'} = 0; + foreach my $word (@srcFactors) {$details{'srcNumChars'} += maxN(map {length($_)} @$word) + 1;} #+1 accounts for interword spacing + $sentenceSrcChars += --$details{'srcNumChars'}; + $sentenceSrcPhrases++; + $line = ; + die "can't parse translation-options info for sentence $curSentence" unless $line =~ /TRANSLATED AS:\s+(\S(.*\S)?)\s*$/; + my @words = split(/\s+/, $1); + if($words[0] eq '') {@words = ();} #source phrase was dropped + else {$sentenceTgtPhrases++;} + my @tgtFactors = map {my @f = split(/\|/, $_); \@f;} (split(/\s+/, $1)); + $details{'tgtText'} = \@tgtFactors; + $details{'tgtNumChars'} = 0; + foreach my $word (@tgtFactors) {$details{'tgtNumChars'} += maxN(map {length($_)} @$word) + 1;} #+1 accounts for interword spacing + $sentenceTgtChars += --$details{'tgtNumChars'}; + $details{'tgtStart'} = $tgtWords; + $tgtWords += scalar(@words); + $details{'tgtEnd'} = $tgtWords - 1; + push @{$sentenceData[0]->[$curSentence]}, \%details; + } + elsif($mode eq 'drops') #redundant info; read it just because we can (stickin' it to the man!) + { + die "can't parse dropped-words info for sentence $curSentence\n" unless $line =~ /\s*(\S.*\S)\s*/; + my @factors = split(/\|/, $1); + push @{$sentenceData[1]->[$curSentence]}, \@factors; + } +} +close(INPUT); +#stats for final sentence, since now we know when it ended +push @numSrcChars, $sentenceSrcChars; +push @numTgtChars, $sentenceTgtChars; +push @numSrcPhrases, $sentenceSrcPhrases; +push @numTgtPhrases, $sentenceTgtPhrases; + +#calculate phrase-length statistics +my ($totalPhraseLength, $totalNumPhrases) = (0, 0); +for(my $i = 0; $i < scalar(@{$sentenceData[0]}); $i++) +{ + $totalPhraseLength += $sentenceData[2]->[$i]; + $totalNumPhrases += scalar(@{$sentenceData[0]->[$i]}); + $sentenceData[2]->[$i] /= scalar(@{$sentenceData[0]->[$i]}); +} + +##### create an image with colored phrases and arrows for each sentence ##### +die "infilename ends in slash! should not be a directory\n" if $infilename !~ /\/([^\/]+)$/; +my $imgdir = "phraseImgs-tmp/${1}_" . time; +`mkdir -p $imgdir`; #-p => create recursively as necessary +my ($srcNumFactors, $tgtNumFactors) = (scalar(@{$sentenceData[0]->[0]->[0]->{'srcText'}->[0]}), scalar(@{$sentenceData[0]->[0]->[0]->{'tgtText'}->[0]})); +my $font = gdLargeFont; +my ($topMargin, $bottomMargin, $leftMargin, $rightMargin) = (1, 1, 1, 1); #extra pixels of background color +my $phraseEdgeHSpace = int($font->width / 2); #number of boundary pixels at horizontal edges of each phrase +my $phraseEdgeVSpace = 1; #number of boundary pixels at vertical edges +my $middleVSpace = $font->height + 6; #vertical pixels used to connect phrase color boxes + +#precompute arrays of pixel coords +my $srcY = $topMargin + $phraseEdgeVSpace; +my @srcFactorYs; +for(my $i = 0; $i < $srcNumFactors; $i++) {push @srcFactorYs, $srcY + ($font->height + $phraseEdgeVSpace) * $i;} +my @tgtFactorYs; +my $tgtY = $srcY + ($font->height + $phraseEdgeVSpace) * $srcNumFactors + $middleVSpace + $phraseEdgeVSpace; +for(my $i = 0; $i < $tgtNumFactors; $i++) {push @tgtFactorYs, $tgtY + ($font->height + $phraseEdgeVSpace) * $i;} + +for(my $i = 0; $i < scalar(@{$sentenceData[0]}); $i++) +{ + #create image + my $img = new GD::Image($leftMargin + $rightMargin + max($font->width * $numSrcChars[$i] + $numSrcPhrases[$i] * 2 * $phraseEdgeHSpace, + $font->width * $numTgtChars[$i] + $numTgtPhrases[$i] * 2 * $phraseEdgeHSpace), + $topMargin + $bottomMargin + $middleVSpace + ($font->height + $phraseEdgeVSpace) * ($srcNumFactors + $tgtNumFactors) + 2 * $phraseEdgeVSpace); + #allocate colors + my $white = $img->colorAllocate(255, 255, 255); + $img->transparent($white); #set white to be transparent + my $black = $img->colorAllocate(0, 0, 0); + my $highlightCol = $img->colorAllocate(255, 0, 0); #used to show deleted source phrases + my @bgCols = #alternating phrase background colors + ( + $img->colorAllocate(165, 255, 138), #green + $img->colorAllocate(237, 239, 133), #yellow + $img->colorAllocate(255, 200, 72), #tan + $img->colorAllocate(255, 172, 98), #orange + $img->colorAllocate(255, 151, 151), #red + $img->colorAllocate(254, 152, 241), #purple + $img->colorAllocate(170, 170, 255), #blue + $img->colorAllocate(165, 254, 250) #cyan + ); + $img->setThickness(2); #for lines connecting phrases + #get order of source phrases and source-phrase background colors + my @srcPhraseIndices = (); #in each position, which phrase will be displayed next + my @srcBGCols = () x $numSrcPhrases[$i]; #indices into bgCols + my $nextWord = 0; #current starting index we're looking for + while(scalar(@srcPhraseIndices) < $numSrcPhrases[$i]) + { + for(my $k = 0; $k < $numSrcPhrases[$i]; $k++) + { + if($sentenceData[0]->[$i]->[$k]->{'srcStart'} == $nextWord) + { + $srcBGCols[$k] = scalar(@srcPhraseIndices) % scalar(@bgCols); + push @srcPhraseIndices, $k; + $nextWord = $sentenceData[0]->[$i]->[$k]->{'srcEnd'} + 1; + last; + } + } + } + #calculate source-phrase pixel addresses + my @srcStartX = () x $numSrcPhrases[$i]; + my $srcX = $leftMargin; #in pixels + for(my $j = 0; $j < $numSrcPhrases[$i]; $j++) + { + $srcStartX[$j] = $srcX; + $srcX += $font->width * $sentenceData[0]->[$i]->[$j]->{'srcNumChars'} + 2 * $phraseEdgeHSpace; + } + #get target-phrase pixel coords + my @tgtStartX = () x $numSrcPhrases[$i]; #elements belonging to deleted source phrases simply aren't used + my $tgtX = $leftMargin; #in pixels + for(my $j = 0; $j < $numSrcPhrases[$i]; $j++) + { + my $k = $srcPhraseIndices[$j]; + if(length($sentenceData[0]->[$i]->[$k]->{'tgtText'}) > 0) #non-empty target phrase + { + $tgtStartX[$j] = $tgtX; + $tgtX += $font->width * $sentenceData[0]->[$i]->[$k]->{'tgtNumChars'} + 2 * $phraseEdgeHSpace; + } + } + #background + $img->filledRectangle(0, 0, $img->width, $img->height, $white); + #write phrase pairs + for(my $j = 0; $j < $numSrcPhrases[$i]; $j++) + { + my $k = $srcPhraseIndices[$j]; + my $srcBottomY = $srcY + ($font->height + $phraseEdgeVSpace) * $srcNumFactors; #bottom of color + $img->filledRectangle($srcStartX[$k], $srcY - $phraseEdgeVSpace, $srcStartX[$k] + $font->width * $sentenceData[0]->[$i]->[$k]->{'srcNumChars'} + 2 * $phraseEdgeHSpace, + $srcBottomY, $bgCols[$srcBGCols[$k]]); + if(length $sentenceData[0]->[$i]->[$k]->{'tgtText'} > 0) #non-empty target phrase + { + $img->filledRectangle($tgtStartX[$j], $tgtY - $phraseEdgeVSpace, $tgtStartX[$j] + $font->width * $sentenceData[0]->[$i]->[$k]->{'tgtNumChars'} + 2 * $phraseEdgeHSpace, + $tgtY + ($font->height + $phraseEdgeVSpace) * $tgtNumFactors, $bgCols[$srcBGCols[$k]]); + my ($srcMidX, $tgtMidX) = ($srcStartX[$k] + $font->width * $sentenceData[0]->[$i]->[$k]->{'srcNumChars'} / 2 + $phraseEdgeHSpace, + $tgtStartX[$j] + $font->width * $sentenceData[0]->[$i]->[$k]->{'tgtNumChars'} / 2 + $phraseEdgeHSpace); + $img->line($srcMidX, $srcBottomY, $tgtMidX, $tgtY, $bgCols[$srcBGCols[$k]]); + writeFactoredStringGD($img, $srcStartX[$k] + $phraseEdgeHSpace, \@srcFactorYs, $sentenceData[0]->[$i]->[$k]->{'srcText'}, $font, $black); + writeFactoredStringGD($img, $tgtStartX[$j] + $phraseEdgeHSpace, \@tgtFactorYs, $sentenceData[0]->[$i]->[$k]->{'tgtText'}, $font, $black); + } + else #empty target phrase; only show source + { + writeFactoredStringGD($img, $srcStartX[$k] + $phraseEdgeHSpace, \@srcFactorYs, $sentenceData[0]->[$i]->[$k]->{'srcText'}, $font, $highlightCol); + } + } + #write image file + my $imgfilename = "$imgdir/$i.png"; + open(IMAGE, ">$imgfilename") or die "couldn't create tmp image '$imgfilename': $!\n"; + print IMAGE $img->png(); + close(IMAGE); +} + +#display HTML output +my $stylesheet = < +div.sentence {} + +EOHTML +print "Translation Options Used$stylesheet\n"; +print "Overall Average Phrase Length: " . sprintf("%.3lf", $totalPhraseLength / $totalNumPhrases) . "

\n"; +for(my $i = 0; $i < scalar(@{$sentenceData[0]}); $i++) +{ + if($i > 0) {print "


";} + print "
Average Phrase Length: " . sprintf("%.3lf", $sentenceData[2]->[$i]) . "

\n"; +} +print ""; + +############################################################################################################################################ + +#2-argument +sub max +{ + my ($a, $b) = @_; + return ($a > $b) ? $a : $b; +} + +#N-argument +sub maxN +{ + die "maxN(): empty array!\n" if scalar(@_) == 0; + my $max = shift @_; + map {$max = $_ if $_ > $max;} @_; + return $max; +} + +#arguments: image, startX, arrayref of y-coords for writing, arrayref of arrayrefs of factor strings, font, color +sub writeFactoredStringGD +{ + my ($img, $startX, $ys, $factors, $font, $color) = @_; + foreach my $word (@$factors) + { + for(my $i = 0; $i < scalar(@$ys); $i++) + { + $img->string($font, $startX, $ys->[$i], $word->[$i], $color); + } + $startX += $font->width * (maxN(map {length($_)} @$word) + 1); + } +} diff --git a/mosesdecoder/scripts/analysis/suspicious_tokenization.pl b/mosesdecoder/scripts/analysis/suspicious_tokenization.pl new file mode 100644 index 0000000000000000000000000000000000000000..f807153d9102cd5c4c27fd3c3348e0b9685799ee --- /dev/null +++ b/mosesdecoder/scripts/analysis/suspicious_tokenization.pl @@ -0,0 +1,82 @@ +#!/usr/bin/env perl +# Collects and prints all n-grams that appear in the given corpus both +# tokenized as well as untokenized. +# Ondrej Bojar +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +use strict; +use warnings; + +use Getopt::Long; + +binmode(STDIN, ":utf8"); +binmode(STDOUT, ":utf8"); +binmode(STDERR, ":utf8"); + +my $usage = 0; +my $lowercase = 0; +my $n = 2; +GetOptions( + "n=i" => \$n, # the n-grams to search for (default: bigrams) + "lc|lowercase" => \$lowercase, # ignore case + "h|help|usage" => \$usage, # show info +) or exit 1; + +my $nl = 0; +my $ngrams; +my $words; +while (<>) { + $nl++; + print STDERR "." if $nl % 100000 == 0; + print STDERR "($nl)" if $nl % 500000 == 0; + chomp; + $_ = lc($_) if $lowercase; + my @words = split /\s+/; + foreach my $w (@words) { + $words->{$w}++; + } + $ngrams = ngrams($n, \@words, $ngrams); # add ngram counts from this +} +print STDERR "Done.\n"; + +# Find suspicious +my $report; +foreach my $ngr (keys %$ngrams) { + my $w = $ngr; + $w =~ s/ //g; + my $untokcnt = $words->{$w}; + next if ! $untokcnt; # never seen untokenized + my $tokcnt = $ngrams->{$ngr}; + $report->{$ngr}->{"tok"} = $tokcnt; + $report->{$ngr}->{"untok"} = $untokcnt; + $report->{$ngr}->{"diff"} = abs($untokcnt-$tokcnt); + $report->{$ngr}->{"sum"} = $untokcnt+$tokcnt; +} + +# Report +foreach my $ngr (sort { + $report->{$a}->{"diff"} <=> $report->{$b}->{"diff"} + || $report->{$b}->{"sum"} <=> $report->{$a}->{"sum"} + } + keys %$report) { + print "$ngr\t$report->{$ngr}->{untok}\t$report->{$ngr}->{tok}\t$report->{$ngr}->{diff}\n"; +} + +sub ngrams { + my $n = shift; + my @words = @{shift()}; + my $out = shift; + if ($n == 1) { + foreach my $w (@words) { + $out->{$w}++; + } + } else { + while ($#words >= $n-1) { + $out->{join(" ", @words[0..$n-1])}++; + shift @words; + } + } + return $out; +} diff --git a/mosesdecoder/scripts/analysis/weight-scan.pl b/mosesdecoder/scripts/analysis/weight-scan.pl new file mode 100644 index 0000000000000000000000000000000000000000..b51a6bcd115dc94d43eac12b322429cbe71304f8 --- /dev/null +++ b/mosesdecoder/scripts/analysis/weight-scan.pl @@ -0,0 +1,263 @@ +#!/usr/bin/env perl +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +# runs Moses many times changing the values of one weight, all others fixed +# nbest lists are always produced to allow for comparison of real and +# 'projected' BLEU (BLEU estimated from n-best lists collected at a neighouring +# node) +# usage: weight-scan.pl tm_2 --range=0.0,0.1,1.0 + +use strict; +use warnings; +use Getopt::Long; +use FindBin qw($RealBin); +use File::Basename; +use File::Path; +my $SCRIPTS_ROOTDIR = $RealBin; +$SCRIPTS_ROOTDIR =~ s/\/training$//; +$SCRIPTS_ROOTDIR = $ENV{"SCRIPTS_ROOTDIR"} if defined($ENV{"SCRIPTS_ROOTDIR"}); + +my $prec = 3; # precision of weightvalue within filename +my $jobs = 0; +my $workdir = "weight-scan"; +my $range = "0.0,0.1,1.0"; +my $input_type = 0; +my $normalize = 0; # normalize +my $nbestsize = 100; +my $decoderflags = ""; +my $moses_parallel_cmd = "$SCRIPTS_ROOTDIR/generic/moses-parallel.pl"; +my $qsubwrapper="$SCRIPTS_ROOTDIR/generic/qsub-wrapper.pl"; +my $queue_flags = "-hard"; # extra parameters for parallelizer +GetOptions( + "jobs=i" => \$jobs, + "range=s" => \$range, + "working-dir=s" => \$workdir, + "normalize!" => \$normalize, + "nbest=i" => \$nbestsize, + "decoderflags=s" => \$decoderflags, +) or exit 1; + +my $inf = shift; +my $decoder = shift; +my $config = shift; +my $weightspec = shift; + +if (!defined $inf || ! defined $decoder || !defined $config || !defined $weightspec) { + print STDERR "usage: $0 tm_2 --range=0.0,0.1,1.0 +Options: + --working-dir=weight-scan + --jobs=0 + --range=0.0,0.1,1.0 +"; + exit 1; +} + +print STDERR "Using SCRIPTS_ROOTDIR: $SCRIPTS_ROOTDIR\n"; + +die "Not executable: $moses_parallel_cmd" if defined $jobs && ! -x $moses_parallel_cmd; +die "Not executable: $qsubwrapper" if defined $jobs && ! -x $qsubwrapper; +die "Not executable: $decoder" if ! -x $decoder; + +my $inf_abs = ensure_full_path($inf); +die "File not found: $inf (interpreted as $inf_abs)." + if ! -e $inf_abs; +$inf = $inf_abs; + +my $decoder_abs = ensure_full_path($decoder); +die "File not executable: $decoder (interpreted as $decoder_abs)." + if ! -x $decoder_abs; +$decoder = $decoder_abs; + +my $config_abs = ensure_full_path($config); +die "File not found: $config (interpreted as $config_abs)." + if ! -e $config_abs; +$config = $config_abs; + + +my ($startvalue, $step, $stopvalue) = split /,/, $range; +die "Bad range: $range; expected start,step,stop" + if !defined $startvalue || !defined $step || !defined $stopvalue; + + +my $featlist = get_featlist_from_moses($config); + +# $weightidx is within features of the name $weightname +# $weightindex is global +my ($weightname, $weightidx) = split /_/, $weightspec; +my $weightindex; + +# scan the weights, find the one we'll test and remember values of all of the +# given name +my $only_one_expected = 0; +if (!defined $weightidx) { + $only_one_expected = 1; + $weightidx = 0; +} +my @weightvalues = (); +my $idx = 0; +for(my $i=0; $i{"names"}}); $i++) { + my $name = $featlist->{"names"}->[$i]; + if ($name eq $weightname) { + push @weightvalues, $featlist->{"values"}->[$i]; + $weightindex = $i if $idx == $weightidx; # remember the global index of the weight + $idx++; + } +} + +die "You specified only '$weightspec' but there are $idx features of the given name.\nUse e.g.: ${weightspec}_0\n" + if $only_one_expected && $idx > 1; +die "Failed to find weights of the name '$weightname' in moses config." + if !defined $weightindex; + + + +#store current directory and create the working directory (if needed) +my $cwd = `pawd 2>/dev/null`; +if(!$cwd){$cwd = `pwd`;} +chomp($cwd); + +mkpath($workdir); +{ +# open local scope + +#chdir to the working directory +chdir($workdir) or die "Can't chdir to $workdir"; + +## MAIN LOOP +for(my $weightvalue = $startvalue; $weightvalue <= $stopvalue; $weightvalue+=$step) { + my $nbestout = run_decoder($featlist, $weightvalue); +} + + +#chdir back to the original directory # useless, just to remind we were not there +chdir($cwd); +} # end of local scope + +sub run_decoder { + my ($featlist, $weightvalue) = @_; + my $filebase = sprintf("%${prec}f", $weightvalue); + my $nbestfilename = "best$nbestsize.$filebase"; + my $filename = "out.$filebase"; + + # user-supplied parameters + print STDERR "params = $decoderflags\n"; + + # parameters to set all model weights (to override moses.ini) + my @vals = @{$featlist->{"values"}}; + $vals[$weightindex] = $weightvalue; # set the one we're scanning + if ($normalize) { + print STDERR "Normalizing lambdas: @vals\n"; + my $totlambda=0; + grep($totlambda+=abs($_),@vals); + grep($_/=$totlambda,@vals); + } + # moses now does not seem accept "-tm X -tm Y" but needs "-tm X Y" + my %model_weights; + for(my $i=0; $i{"names"}}); $i++) { + my $name = $featlist->{"names"}->[$i]; + $model_weights{$name} = "-$name" if !defined $model_weights{$name}; + $model_weights{$name} .= sprintf " %.6f", $vals[$i]; + } + my $decoder_config = join(" ", values %model_weights); + print STDERR "DECODER_CFG = $decoder_config\n"; + + # write the weights for future use + open OUTF, ">weights.$filebase" or die "Can't write weights"; + print OUTF join(" ", map { sprintf("%.6f", $_) } @vals)."\n"; + close OUTF; + + # run the decoder + my $nBest_cmd = "-n-best-size $nbestsize"; + my $decoder_cmd; + + if ($jobs) { + $decoder_cmd = "$moses_parallel_cmd -config $config -inputtype $input_type -qsub-prefix scan$weightvalue -queue-parameters \"$queue_flags\" -decoder-parameters \"$decoderflags $decoder_config\" -n-best-list \"$nbestfilename $nbestsize\" -input-file $inf -jobs $jobs -decoder $decoder > $filename"; + } else { + $decoder_cmd = "$decoder $decoderflags -config $config -inputtype $input_type $decoder_config -n-best-list $nbestfilename $nbestsize -input-file $inf > $filename"; + } + + safesystem($decoder_cmd) or die "The decoder died. CONFIG WAS $decoder_config \n"; + + return $nbestfilename; +} + +sub get_featlist_from_moses { + # run moses with the given config file and return the list of features and + # their initial values + my $configfn = shift; + my $featlistfn = "./features.list"; + if (-e $featlistfn) { + print STDERR "Using cached features list: $featlistfn\n"; + } else { + print STDERR "Asking moses for feature names and values from $configfn\n"; + my $cmd = "$decoder $decoderflags -config $configfn -inputtype $input_type -show-weights > $featlistfn"; + safesystem($cmd) or die "Failed to run moses with the config $configfn"; + } + + # read feature list + my @names = (); + my @startvalues = (); + open(INI,$featlistfn) or die "Can't read $featlistfn"; + my $nr = 0; + my @errs = (); + while () { + $nr++; + chomp; + my ($longname, $feature, $value) = split / /; + push @errs, "$featlistfn:$nr:Bad initial value of $feature: $value\n" + if $value !~ /^[+-]?[0-9.e]+$/; + #push @errs, "$featlistfn:$nr:Unknown feature '$feature', please add it to \@ABBR_FULL_MAP\n" + # if !defined $ABBR2FULL{$feature}; + push @names, $feature; + push @startvalues, $value; + } + close INI; + if (scalar @errs) { + print STDERR join("", @errs); + exit 1; + } + return {"names"=>\@names, "values"=>\@startvalues}; +} + +sub safesystem { + print STDERR "Executing: @_\n"; + system(@_); + if ($? == -1) { + print STDERR "Failed to execute: @_\n $!\n"; + exit(1); + } + elsif ($? & 127) { + printf STDERR "Execution of: @_\n died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + exit(1); + } + else { + my $exitcode = $? >> 8; + print STDERR "Exit code: $exitcode\n" if $exitcode; + return ! $exitcode; + } +} + +sub ensure_full_path { + my $PATH = shift; +$PATH =~ s/\/nfsmnt//; + return $PATH if $PATH =~ /^\//; + my $dir = `pawd 2>/dev/null`; + if(!$dir){$dir = `pwd`;} + chomp($dir); + $PATH = $dir."/".$PATH; + $PATH =~ s/[\r\n]//g; + $PATH =~ s/\/\.\//\//g; + $PATH =~ s/\/+/\//g; + my $sanity = 0; + while($PATH =~ /\/\.\.\// && $sanity++<10) { + $PATH =~ s/\/+/\//g; + $PATH =~ s/\/[^\/]+\/\.\.\//\//g; + } + $PATH =~ s/\/[^\/]+\/\.\.$//; + $PATH =~ s/\/+$//; +$PATH =~ s/\/nfsmnt//; + return $PATH; +} diff --git a/mosesdecoder/scripts/ems/example/config.basic b/mosesdecoder/scripts/ems/example/config.basic new file mode 100644 index 0000000000000000000000000000000000000000..282204f36b6a61525eeeb1789d847b84cbeda202 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/config.basic @@ -0,0 +1,718 @@ +################################################ +### CONFIGURATION FILE FOR AN SMT EXPERIMENT ### +################################################ + +[GENERAL] + +### directory in which experiment is run +# +working-dir = /home/pkoehn/experiment + +# specification of the language pair +input-extension = fr +output-extension = en +pair-extension = fr-en + +### directories that contain tools and data +# +# moses +moses-src-dir = /home/pkoehn/moses +# +# moses binaries +moses-bin-dir = $moses-src-dir/bin +# +# moses scripts +moses-script-dir = $moses-src-dir/scripts +# +# directory where GIZA++/MGIZA programs resides +external-bin-dir = /Users/hieuhoang/workspace/bin/training-tools +# +# srilm +srilm-dir = $moses-src-dir/srilm/bin/i686 +# +# irstlm +irstlm-dir = $moses-src-dir/irstlm/bin +# +# randlm +randlm-dir = $moses-src-dir/randlm/bin +# +# data +wmt12-data = $working-dir/data + +### basic tools +# +# moses decoder +decoder = $moses-bin-dir/moses + +# conversion of rule table into binary on-disk format +ttable-binarizer = "$moses-bin-dir/CreateOnDiskPt 1 1 4 100 2" + +# tokenizers - comment out if all your data is already tokenized +input-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $input-extension" +output-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $output-extension" + +# For Arabic tokenizer try Farasa (download: http://qatsdemo.cloudapp.net/farasa/) +# Abdelali, Darwish, Durrani, Mubarak (NAACL demo 2016) +# "Farasa: A Fast and Furious Segmenter for Arabic" +#input-tokenizer = "$farasa-dir/farasa_moses.sh" + + +# truecasers - comment out if you do not use the truecaser +input-truecaser = $moses-script-dir/recaser/truecase.perl +output-truecaser = $moses-script-dir/recaser/truecase.perl +detruecaser = $moses-script-dir/recaser/detruecase.perl + +# lowercaser - comment out if you use truecasing +#input-lowercaser = $moses-script-dir/tokenizer/lowercase.perl +#output-lowercaser = $moses-script-dir/tokenizer/lowercase.perl + +### generic parallelizer for cluster and multi-core machines +# you may specify a script that allows the parallel execution +# parallizable steps (see meta file). you also need specify +# the number of jobs (cluster) or cores (multicore) +# +#generic-parallelizer = $moses-script-dir/ems/support/generic-parallelizer.perl +#generic-parallelizer = $moses-script-dir/ems/support/generic-multicore-parallelizer.perl + +### cluster settings (if run on a cluster machine) +# number of jobs to be submitted in parallel +# +#jobs = 10 + +# arguments to qsub when scheduling a job +#qsub-settings = "" + +# project for priviledges and usage accounting +#qsub-project = iccs_smt + +# memory and time +#qsub-memory = 4 +#qsub-hours = 48 + +### multi-core settings +# when the generic parallelizer is used, the number of cores +# specified here +cores = 4 + +################################################################# +# PARALLEL CORPUS PREPARATION: +# create a tokenized, sentence-aligned corpus, ready for training + +[CORPUS] + +### long sentences are filtered out, since they slow down GIZA++ +# and are a less reliable source of data. set here the maximum +# length of a sentence +# +max-sentence-length = 80 + +[CORPUS:europarl] IGNORE + +### command to run to get raw corpus files +# +# get-corpus-script = + +### raw corpus files (untokenized, but sentence aligned) +# +raw-stem = $wmt12-data/training/europarl-v7.$pair-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-stem = + +### if sentence filtering should be skipped, +# point to the clean training data +# +#clean-stem = + +### if corpus preparation should be skipped, +# point to the prepared training data +# +#lowercased-stem = + +[CORPUS:nc] +raw-stem = $wmt12-data/training/news-commentary-v7.$pair-extension + +[CORPUS:un] IGNORE +raw-stem = $wmt12-data/training/undoc.2000.$pair-extension + +################################################################# +# LANGUAGE MODEL TRAINING + +[LM] + +### tool to be used for language model training +# kenlm training +lm-training = "$moses-script-dir/ems/support/lmplz-wrapper.perl -bin $moses-bin-dir/lmplz" +settings = "--prune '0 0 1' -T $working-dir/lm -S 20% --discount_fallback" + +# srilm +#lm-training = $srilm-dir/ngram-count +#settings = "-interpolate -kndiscount -unk" + +# irstlm training +# msb = modified kneser ney; p=0 no singleton pruning +#lm-training = "$moses-script-dir/generic/trainlm-irst2.perl -cores $cores -irst-dir $irstlm-dir -temp-dir $working-dir/tmp" +#settings = "-s msb -p 0" + +# order of the language model +order = 5 + +### tool to be used for training randomized language model from scratch +# (more commonly, a SRILM is trained) +# +#rlm-training = "$moses-src-dir/randlm/bin/buildlm -falsepos 8 -values 8" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### each language model to be used has its own section here + +[LM:europarl] IGNORE + +### command to run to get raw corpus files +# +#get-corpus-script = "" + +### raw corpus (untokenized) +# +raw-corpus = $wmt12-data/training/europarl-v7.$output-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-corpus = + +### if corpus preparation should be skipped, +# point to the prepared language model +# +#lm = + +[LM:nc] +raw-corpus = $wmt12-data/training/news-commentary-v7.$pair-extension.$output-extension + +[LM:un] IGNORE +raw-corpus = $wmt12-data/training/undoc.2000.$pair-extension.$output-extension + +[LM:news] IGNORE +raw-corpus = $wmt12-data/training/news.$output-extension.shuffled + + +################################################################# +# INTERPOLATING LANGUAGE MODELS + +[INTERPOLATED-LM] IGNORE + +# if multiple language models are used, these may be combined +# by optimizing perplexity on a tuning set +# see, for instance [Koehn and Schwenk, IJCNLP 2008] + +### script to interpolate language models +# if commented out, no interpolation is performed +# +script = $moses-script-dir/ems/support/interpolate-lm.perl + +### tuning set +# you may use the same set that is used for mert tuning (reference set) +# +tuning-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-tuning = +#tokenized-tuning = +#factored-tuning = +#lowercased-tuning = +#split-tuning = + +### group language models for hierarchical interpolation +# (flat interpolation is limited to 10 language models) +#group = "first,second fourth,fifth" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +################################################################# +# MODIFIED MOORE LEWIS FILTERING + +[MML] IGNORE + +### specifications for language models to be trained +# +#lm-training = $srilm-dir/ngram-count +#lm-settings = "-interpolate -kndiscount -unk" +#lm-binarizer = $moses-src-dir/bin/build_binary +#lm-query = $moses-src-dir/bin/query +#order = 5 + +### in-/out-of-domain source/target corpora to train the 4 language model +# +# in-domain: point either to a parallel corpus +#outdomain-stem = [CORPUS:toy:clean-split-stem] + +# ... or to two separate monolingual corpora +#indomain-target = [LM:toy:lowercased-corpus] +#raw-indomain-source = $toy-data/nc-5k.$input-extension + +# point to out-of-domain parallel corpus +#outdomain-stem = [CORPUS:giga:clean-split-stem] + +# settings: number of lines sampled from the corpora to train each language model on +# (if used at all, should be small as a percentage of corpus) +#settings = "--line-count 100000" + +################################################################# +# TRANSLATION MODEL TRAINING + +[TRAINING] + +### training script to be used: either a legacy script or +# current moses training script (default) +# +script = $moses-script-dir/training/train-model.perl + +### general options +# these are options that are passed on to train-model.perl, for instance +# * "-mgiza -mgiza-cpus 8" to use mgiza instead of giza +# * "-sort-buffer-size 8G -sort-compress gzip" to reduce on-disk sorting +# * "-sort-parallel 8 -cores 8" to speed up phrase table building +# * "-parallel" for parallel execution of mkcls and giza +# +#training-options = "" + +### factored training: specify here which factors used +# if none specified, single factor training is assumed +# (one translation step, surface to surface) +# +#input-factors = word lemma pos morph +#output-factors = word lemma pos +#alignment-factors = "word -> word" +#translation-factors = "word -> word" +#reordering-factors = "word -> word" +#generation-factors = "word -> pos" +#decoding-steps = "t0, g0" + +### parallelization of data preparation step +# the two directions of the data preparation can be run in parallel +# comment out if not needed +# +parallel = yes + +### pre-computation for giza++ +# giza++ has a more efficient data structure that needs to be +# initialized with snt2cooc. if run in parallel, this may reduces +# memory requirements. set here the number of parts +# +#run-giza-in-parts = 5 + +### symmetrization method to obtain word alignments from giza output +# (commonly used: grow-diag-final-and) +# +alignment-symmetrization-method = grow-diag-final-and + +### use of Chris Dyer's fast align for word alignment +# +#fast-align-settings = "-d -o -v" + +### use of berkeley aligner for word alignment +# +#use-berkeley = true +#alignment-symmetrization-method = berkeley +#berkeley-train = $moses-script-dir/ems/support/berkeley-train.sh +#berkeley-process = $moses-script-dir/ems/support/berkeley-process.sh +#berkeley-jar = /your/path/to/berkeleyaligner-1.1/berkeleyaligner.jar +#berkeley-java-options = "-server -mx30000m -ea" +#berkeley-training-options = "-Main.iters 5 5 -EMWordAligner.numThreads 8" +#berkeley-process-options = "-EMWordAligner.numThreads 8" +#berkeley-posterior = 0.5 + +### use of baseline alignment model (incremental training) +# +#baseline = 68 +#baseline-alignment-model = "$working-dir/training/prepared.$baseline/$input-extension.vcb \ +# $working-dir/training/prepared.$baseline/$output-extension.vcb \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.cooc \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.cooc \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.thmm.5 \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.hhmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.thmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.hhmm.5" + +### if word alignment should be skipped, +# point to word alignment files +# +#word-alignment = $working-dir/model/aligned.1 + +### filtering some corpora with modified Moore-Lewis +# specify corpora to be filtered and ratio to be kept, either before or after word alignment +#mml-filter-corpora = toy +#mml-before-wa = "-proportion 0.9" +#mml-after-wa = "-proportion 0.9" + +### build memory mapped suffix array phrase table +# (binarizing the reordering table is a good idea, since filtering makes little sense) +#mmsapt = "num-features=9 pfwd=g+ pbwd=g+ smooth=0 sample=1000 workers=1" +#binarize-all = $moses-script-dir/training/binarize-model.perl + +### create a bilingual concordancer for the model +# +#biconcor = $moses-bin-dir/biconcor + +## Operation Sequence Model (OSM) +# Durrani, Schmid and Fraser. (2011): +# "A Joint Sequence Translation Model with Integrated Reordering" +# compile Moses with --max-kenlm-order=9 if higher order is required +# +#operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "-lmplz '$moses-src-dir/bin/lmplz -S 40% '" +# +# OR if you want to use with SRILM +# +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64" + +## Class-based Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Koehn, Schmid, Fraser (COLING, 2014). +#Investigating the Usefulness of Generalized Word Representations in SMT +# +#operation-sequence-model-settings = "--factor 0-0+1-1" + +## Interpolated Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Sajjad, Joty, Abdelali and Vogel (Mt Summit, 2015). +# Using Joint Models for Domain Adaptation in Statistical Machine Translation +# +#interpolated-operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64 --tune /path-to-tune-folder/tune_file" +#Interpolated OSM can only be used with SRILM because of the interpolation script + + +# if OSM training should be skipped, point to OSM Model +#osm-model = + +### unsupervised transliteration module +# Durrani, Sajjad, Hoang and Koehn (EACL, 2014). +# "Integrating an Unsupervised Transliteration Model +# into Statistical Machine Translation." +# +#transliteration-module = "yes" +#post-decoding-transliteration = "yes" + +### lexicalized reordering: specify orientation type +# (default: only distance-based reordering model) +# +lexicalized-reordering = msd-bidirectional-fe + +### hierarchical rule set +# +#hierarchical-rule-set = true + +### settings for rule extraction +# +#extract-settings = "" +max-phrase-length = 5 + +### add extracted phrases from baseline model +# +#baseline-extract = $working-dir/model/extract.$baseline +# +# requires aligned parallel corpus for re-estimating lexical translation probabilities +#baseline-corpus = $working-dir/training/corpus.$baseline +#baseline-alignment = $working-dir/model/aligned.$baseline.$alignment-symmetrization-method + + +### unknown word labels (target syntax only) +# enables use of unknown word labels during decoding +# label file is generated during rule extraction +# +#use-unknown-word-labels = true + +### if phrase extraction should be skipped, +# point to stem for extract files +# +# extracted-phrases = + +### settings for rule scoring +# +score-settings = "--GoodTuring --MinScore 2:0.0001" + +### include word alignment in phrase table +# +#include-word-alignment-in-rules = yes + +### sparse lexical features +# +#sparse-features = "target-word-insertion top 50, source-word-deletion top 50, word-translation top 50 50, phrase-length" + +### domain adaptation settings +# options: sparse, any of: indicator, subset, ratio +#domain-features = "subset" + +### if phrase table training should be skipped, +# point to phrase translation table +# +# phrase-translation-table = + +### if reordering table training should be skipped, +# point to reordering table +# +# reordering-table = + +### filtering the phrase table based on significance tests +# Johnson, Martin, Foster and Kuhn. (2007): "Improving Translation Quality by Discarding Most of the Phrasetable" +# options: -n number of translations; -l 'a+e', 'a-e', or a positive real value -log prob threshold +#salm-index = /path/to/project/salm/Bin/Linux/Index/IndexSA.O64 +#sigtest-filter = "-l a+e -n 50" + +### if training should be skipped, +# point to a configuration file that contains +# pointers to all relevant model files +# +#config = + +##################################################### +### TUNING: finding good weights for model components + +[TUNING] + +### instead of tuning with this setting, old weights may be recycled +# specify here an old configuration file with matching weights +# +#weight-config = $working-dir/tuning/moses.weight-reused.ini.1 + +### tuning script to be used +# +tuning-script = $moses-script-dir/training/mert-moses.pl +tuning-settings = "-mertdir $moses-bin-dir" + +### specify the corpus used for tuning +# it should contain 1000s of sentences +# +input-sgm = $wmt12-data/dev/newstest2010-src.$input-extension.sgm +#raw-input = +#tokenized-input = +#factorized-input = +#input = +# +reference-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-reference = +#tokenized-reference = +#factorized-reference = +#reference = + +### size of n-best list used (typically 100) +# +nbest = 100 + +### ranges for weights for random initialization +# if not specified, the tuning script will use generic ranges +# it is not clear, if this matters +# +# lambda = + +### additional flags for the filter script +# +filter-settings = "" + +### additional flags for the decoder +# +decoder-settings = "-threads $cores" + +### if tuning should be skipped, specify this here +# and also point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +######################################################### +## RECASER: restore case, this part only trains the model + +[RECASING] IGNORE + +### training data +# raw input needs to be still tokenized, +# also also tokenized input may be specified +# +#tokenized = [LM:europarl:tokenized-corpus] + +### additinal settings +# +recasing-settings = "" +#lm-training = $srilm-dir/ngram-count +decoder = $moses-bin-dir/moses + +# already a trained recaser? point to config file +#recase-config = + +####################################################### +## TRUECASER: train model to truecase corpora and input + +[TRUECASER] + +### script to train truecaser models +# +trainer = $moses-script-dir/recaser/train-truecaser.perl + +### training data +# data on which truecaser is trained +# if no training data is specified, parallel corpus is used +# +# raw-stem = +# tokenized-stem = + +### trained model +# +# truecase-model = + +###################################################################### +## EVALUATION: translating a test set using the tuned system and score it + +[EVALUATION] + +### number of jobs (if parallel execution on cluster) +# +#jobs = 10 + +### additional flags for the filter script +# +#filter-settings = "" + +### additional decoder settings +# switches for the Moses decoder +# common choices: +# "-threads N" for multi-threading +# "-mbr" for MBR decoding +# "-drop-unknown" for dropping unknown source words +# "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000" for cube pruning +# +decoder-settings = "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 -threads $cores" + +### specify size of n-best list, if produced +# +#nbest = 100 + +### multiple reference translations +# +#multiref = yes + +### prepare system output for scoring +# this may include detokenization and wrapping output in sgm +# (needed for nist-bleu, ter, meteor) +# +detokenizer = "$moses-script-dir/tokenizer/detokenizer.perl -l $output-extension" +#recaser = $moses-script-dir/recaser/recase.perl +wrapping-script = "$moses-script-dir/ems/support/wrap-xml.perl $output-extension" +#output-sgm = + +### BLEU +# +nist-bleu = $moses-script-dir/generic/mteval-v13a.pl +nist-bleu-c = "$moses-script-dir/generic/mteval-v13a.pl -c" +#multi-bleu = "$moses-script-dir/generic/multi-bleu.perl -lc" +#multi-bleu-c = $moses-script-dir/generic/multi-bleu.perl +#ibm-bleu = +#sacre-bleu = "sacrebleu -lc" +#sacre-bleu-c = "sacrebleu" + +### TER: translation error rate (BBN metric) based on edit distance +# not yet integrated +# +# ter = + +### METEOR: gives credit to stem / worknet synonym matches +## recently integrated - use with care +## only for supported languages, needs to be installed separately +## +## uncomment following 3 lines, modify first one adding the location of meteor installation on your disk +# meteor-script = "/project/software/meteor-1.3/meteor-1.3.jar" +# meteor = "java -Xmx2G -jar $meteor-script" +# meteor-params = " -l $output-extension -norm" + +### Analysis: carry out various forms of analysis on the output +# +analysis = $moses-script-dir/ems/support/analysis.perl +# +# also report on input coverage +analyze-coverage = yes +# +# also report on phrase mappings used +report-segmentation = yes +# +# report precision of translations for each input word, broken down by +# count of input word in corpus and model +#report-precision-by-coverage = yes +# +# further precision breakdown by factor +#precision-by-coverage-factor = pos +# +# visualization of the search graph in tree-based models +#analyze-search-graph = yes + +[EVALUATION:newstest2011] + +### input data +# +input-sgm = $wmt12-data/dev/newstest2011-src.$input-extension.sgm +# raw-input = +# tokenized-input = +# factorized-input = +# input = + +### reference data +# +reference-sgm = $wmt12-data/dev/newstest2011-ref.$output-extension.sgm +# raw-reference = +# tokenized-reference = +# reference = + +### analysis settings +# may contain any of the general evaluation analysis settings +# specific setting: base coverage statistics on earlier run +# +#precision-by-coverage-base = $working-dir/evaluation/test.analysis.5 + +### wrapping frame +# for nist-bleu and other scoring scripts, the output needs to be wrapped +# in sgm markup (typically like the input sgm) +# +wrapping-frame = $input-sgm + +########################################## +### REPORTING: summarize evaluation scores + +[REPORTING] + +### currently no parameters for reporting section + diff --git a/mosesdecoder/scripts/ems/example/config.basic.moses2 b/mosesdecoder/scripts/ems/example/config.basic.moses2 new file mode 100644 index 0000000000000000000000000000000000000000..9cb7f5c07d4ad3c5f21045355dde52ca6e8891a3 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/config.basic.moses2 @@ -0,0 +1,718 @@ +################################################ +### CONFIGURATION FILE FOR AN SMT EXPERIMENT ### +################################################ + +[GENERAL] + +### directory in which experiment is run +# +working-dir = /home/pkoehn/experiment + +# specification of the language pair +input-extension = fr +output-extension = en +pair-extension = fr-en + +### directories that contain tools and data +# +# moses +moses-src-dir = /home/pkoehn/moses +# +# moses binaries +moses-bin-dir = $moses-src-dir/bin +# +# moses scripts +moses-script-dir = $moses-src-dir/scripts +# +# directory where GIZA++/MGIZA programs resides +external-bin-dir = /Users/hieuhoang/workspace/bin/training-tools +# +# srilm +srilm-dir = $moses-src-dir/srilm/bin/i686 +# +# irstlm +irstlm-dir = $moses-src-dir/irstlm/bin +# +# randlm +randlm-dir = $moses-src-dir/randlm/bin +# +# data +wmt12-data = $working-dir/data + +### basic tools +# +# moses decoder +decoder = $moses-bin-dir/moses2 + +# conversion of rule table into binary on-disk format +ttable-binarizer = "$moses-bin-dir/CreateProbingPT" + +# tokenizers - comment out if all your data is already tokenized +input-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $input-extension" +output-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $output-extension" + +# For Arabic tokenizer try Farasa (download: http://qatsdemo.cloudapp.net/farasa/) +# Abdelali, Darwish, Durrani, Mubarak (NAACL demo 2016) +# "Farasa: A Fast and Furious Segmenter for Arabic" +#input-tokenizer = "$farasa-dir/farasa_moses.sh" + + +# truecasers - comment out if you do not use the truecaser +input-truecaser = $moses-script-dir/recaser/truecase.perl +output-truecaser = $moses-script-dir/recaser/truecase.perl +detruecaser = $moses-script-dir/recaser/detruecase.perl + +# lowercaser - comment out if you use truecasing +#input-lowercaser = $moses-script-dir/tokenizer/lowercase.perl +#output-lowercaser = $moses-script-dir/tokenizer/lowercase.perl + +### generic parallelizer for cluster and multi-core machines +# you may specify a script that allows the parallel execution +# parallizable steps (see meta file). you also need specify +# the number of jobs (cluster) or cores (multicore) +# +#generic-parallelizer = $moses-script-dir/ems/support/generic-parallelizer.perl +#generic-parallelizer = $moses-script-dir/ems/support/generic-multicore-parallelizer.perl + +### cluster settings (if run on a cluster machine) +# number of jobs to be submitted in parallel +# +#jobs = 10 + +# arguments to qsub when scheduling a job +#qsub-settings = "" + +# project for priviledges and usage accounting +#qsub-project = iccs_smt + +# memory and time +#qsub-memory = 4 +#qsub-hours = 48 + +### multi-core settings +# when the generic parallelizer is used, the number of cores +# specified here +cores = 16 + +################################################################# +# PARALLEL CORPUS PREPARATION: +# create a tokenized, sentence-aligned corpus, ready for training + +[CORPUS] + +### long sentences are filtered out, since they slow down GIZA++ +# and are a less reliable source of data. set here the maximum +# length of a sentence +# +max-sentence-length = 80 + +[CORPUS:europarl] IGNORE + +### command to run to get raw corpus files +# +# get-corpus-script = + +### raw corpus files (untokenized, but sentence aligned) +# +raw-stem = $wmt12-data/training/europarl-v7.$pair-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-stem = + +### if sentence filtering should be skipped, +# point to the clean training data +# +#clean-stem = + +### if corpus preparation should be skipped, +# point to the prepared training data +# +#lowercased-stem = + +[CORPUS:nc] +raw-stem = $wmt12-data/training/news-commentary-v7.$pair-extension + +[CORPUS:un] IGNORE +raw-stem = $wmt12-data/training/undoc.2000.$pair-extension + +################################################################# +# LANGUAGE MODEL TRAINING + +[LM] + +### tool to be used for language model training +# kenlm training +lm-training = "$moses-script-dir/ems/support/lmplz-wrapper.perl -bin $moses-bin-dir/lmplz" +settings = "--prune '0 0 1' -T $working-dir/lm -S 20% --discount_fallback" + +# srilm +#lm-training = $srilm-dir/ngram-count +#settings = "-interpolate -kndiscount -unk" + +# irstlm training +# msb = modified kneser ney; p=0 no singleton pruning +#lm-training = "$moses-script-dir/generic/trainlm-irst2.perl -cores $cores -irst-dir $irstlm-dir -temp-dir $working-dir/tmp" +#settings = "-s msb -p 0" + +# order of the language model +order = 5 + +### tool to be used for training randomized language model from scratch +# (more commonly, a SRILM is trained) +# +#rlm-training = "$moses-src-dir/randlm/bin/buildlm -falsepos 8 -values 8" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### each language model to be used has its own section here + +[LM:europarl] IGNORE + +### command to run to get raw corpus files +# +#get-corpus-script = "" + +### raw corpus (untokenized) +# +raw-corpus = $wmt12-data/training/europarl-v7.$output-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-corpus = + +### if corpus preparation should be skipped, +# point to the prepared language model +# +#lm = + +[LM:nc] +raw-corpus = $wmt12-data/training/news-commentary-v7.$pair-extension.$output-extension + +[LM:un] IGNORE +raw-corpus = $wmt12-data/training/undoc.2000.$pair-extension.$output-extension + +[LM:news] IGNORE +raw-corpus = $wmt12-data/training/news.$output-extension.shuffled + + +################################################################# +# INTERPOLATING LANGUAGE MODELS + +[INTERPOLATED-LM] IGNORE + +# if multiple language models are used, these may be combined +# by optimizing perplexity on a tuning set +# see, for instance [Koehn and Schwenk, IJCNLP 2008] + +### script to interpolate language models +# if commented out, no interpolation is performed +# +script = $moses-script-dir/ems/support/interpolate-lm.perl + +### tuning set +# you may use the same set that is used for mert tuning (reference set) +# +tuning-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-tuning = +#tokenized-tuning = +#factored-tuning = +#lowercased-tuning = +#split-tuning = + +### group language models for hierarchical interpolation +# (flat interpolation is limited to 10 language models) +#group = "first,second fourth,fifth" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +################################################################# +# MODIFIED MOORE LEWIS FILTERING + +[MML] IGNORE + +### specifications for language models to be trained +# +#lm-training = $srilm-dir/ngram-count +#lm-settings = "-interpolate -kndiscount -unk" +#lm-binarizer = $moses-src-dir/bin/build_binary +#lm-query = $moses-src-dir/bin/query +#order = 5 + +### in-/out-of-domain source/target corpora to train the 4 language model +# +# in-domain: point either to a parallel corpus +#outdomain-stem = [CORPUS:toy:clean-split-stem] + +# ... or to two separate monolingual corpora +#indomain-target = [LM:toy:lowercased-corpus] +#raw-indomain-source = $toy-data/nc-5k.$input-extension + +# point to out-of-domain parallel corpus +#outdomain-stem = [CORPUS:giga:clean-split-stem] + +# settings: number of lines sampled from the corpora to train each language model on +# (if used at all, should be small as a percentage of corpus) +#settings = "--line-count 100000" + +################################################################# +# TRANSLATION MODEL TRAINING + +[TRAINING] + +### training script to be used: either a legacy script or +# current moses training script (default) +# +script = $moses-script-dir/training/train-model.perl + +### general options +# these are options that are passed on to train-model.perl, for instance +# * "-mgiza -mgiza-cpus 8" to use mgiza instead of giza +# * "-sort-buffer-size 8G -sort-compress gzip" to reduce on-disk sorting +# * "-sort-parallel 8 -cores 8" to speed up phrase table building +# * "-parallel" for parallel execution of mkcls and giza +# +#training-options = "" + +### factored training: specify here which factors used +# if none specified, single factor training is assumed +# (one translation step, surface to surface) +# +#input-factors = word lemma pos morph +#output-factors = word lemma pos +#alignment-factors = "word -> word" +#translation-factors = "word -> word" +#reordering-factors = "word -> word" +#generation-factors = "word -> pos" +#decoding-steps = "t0, g0" + +### parallelization of data preparation step +# the two directions of the data preparation can be run in parallel +# comment out if not needed +# +parallel = yes + +### pre-computation for giza++ +# giza++ has a more efficient data structure that needs to be +# initialized with snt2cooc. if run in parallel, this may reduces +# memory requirements. set here the number of parts +# +#run-giza-in-parts = 5 + +### symmetrization method to obtain word alignments from giza output +# (commonly used: grow-diag-final-and) +# +alignment-symmetrization-method = grow-diag-final-and + +### use of Chris Dyer's fast align for word alignment +# +#fast-align-settings = "-d -o -v" + +### use of berkeley aligner for word alignment +# +#use-berkeley = true +#alignment-symmetrization-method = berkeley +#berkeley-train = $moses-script-dir/ems/support/berkeley-train.sh +#berkeley-process = $moses-script-dir/ems/support/berkeley-process.sh +#berkeley-jar = /your/path/to/berkeleyaligner-1.1/berkeleyaligner.jar +#berkeley-java-options = "-server -mx30000m -ea" +#berkeley-training-options = "-Main.iters 5 5 -EMWordAligner.numThreads 8" +#berkeley-process-options = "-EMWordAligner.numThreads 8" +#berkeley-posterior = 0.5 + +### use of baseline alignment model (incremental training) +# +#baseline = 68 +#baseline-alignment-model = "$working-dir/training/prepared.$baseline/$input-extension.vcb \ +# $working-dir/training/prepared.$baseline/$output-extension.vcb \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.cooc \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.cooc \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.thmm.5 \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.hhmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.thmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.hhmm.5" + +### if word alignment should be skipped, +# point to word alignment files +# +#word-alignment = $working-dir/model/aligned.1 + +### filtering some corpora with modified Moore-Lewis +# specify corpora to be filtered and ratio to be kept, either before or after word alignment +#mml-filter-corpora = toy +#mml-before-wa = "-proportion 0.9" +#mml-after-wa = "-proportion 0.9" + +### build memory mapped suffix array phrase table +# (binarizing the reordering table is a good idea, since filtering makes little sense) +#mmsapt = "num-features=9 pfwd=g+ pbwd=g+ smooth=0 sample=1000 workers=1" +#binarize-all = $moses-script-dir/training/binarize-model.perl + +### create a bilingual concordancer for the model +# +#biconcor = $moses-bin-dir/biconcor + +## Operation Sequence Model (OSM) +# Durrani, Schmid and Fraser. (2011): +# "A Joint Sequence Translation Model with Integrated Reordering" +# compile Moses with --max-kenlm-order=9 if higher order is required +# +#operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "-lmplz '$moses-src-dir/bin/lmplz -S 40% '" +# +# OR if you want to use with SRILM +# +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64" + +## Class-based Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Koehn, Schmid, Fraser (COLING, 2014). +#Investigating the Usefulness of Generalized Word Representations in SMT +# +#operation-sequence-model-settings = "--factor 0-0+1-1" + +## Interpolated Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Sajjad, Joty, Abdelali and Vogel (Mt Summit, 2015). +# Using Joint Models for Domain Adaptation in Statistical Machine Translation +# +#interpolated-operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64 --tune /path-to-tune-folder/tune_file" +#Interpolated OSM can only be used with SRILM because of the interpolation script + + +# if OSM training should be skipped, point to OSM Model +#osm-model = + +### unsupervised transliteration module +# Durrani, Sajjad, Hoang and Koehn (EACL, 2014). +# "Integrating an Unsupervised Transliteration Model +# into Statistical Machine Translation." +# +#transliteration-module = "yes" +#post-decoding-transliteration = "yes" + +### lexicalized reordering: specify orientation type +# (default: only distance-based reordering model) +# +lexicalized-reordering = msd-bidirectional-fe + +### hierarchical rule set +# +#hierarchical-rule-set = true + +### settings for rule extraction +# +#extract-settings = "" +max-phrase-length = 5 + +### add extracted phrases from baseline model +# +#baseline-extract = $working-dir/model/extract.$baseline +# +# requires aligned parallel corpus for re-estimating lexical translation probabilities +#baseline-corpus = $working-dir/training/corpus.$baseline +#baseline-alignment = $working-dir/model/aligned.$baseline.$alignment-symmetrization-method + + +### unknown word labels (target syntax only) +# enables use of unknown word labels during decoding +# label file is generated during rule extraction +# +#use-unknown-word-labels = true + +### if phrase extraction should be skipped, +# point to stem for extract files +# +# extracted-phrases = + +### settings for rule scoring +# +score-settings = "--GoodTuring --MinScore 2:0.0001" + +### include word alignment in phrase table +# +#include-word-alignment-in-rules = yes + +### sparse lexical features +# +#sparse-features = "target-word-insertion top 50, source-word-deletion top 50, word-translation top 50 50, phrase-length" + +### domain adaptation settings +# options: sparse, any of: indicator, subset, ratio +#domain-features = "subset" + +### if phrase table training should be skipped, +# point to phrase translation table +# +# phrase-translation-table = + +### if reordering table training should be skipped, +# point to reordering table +# +# reordering-table = + +### filtering the phrase table based on significance tests +# Johnson, Martin, Foster and Kuhn. (2007): "Improving Translation Quality by Discarding Most of the Phrasetable" +# options: -n number of translations; -l 'a+e', 'a-e', or a positive real value -log prob threshold +#salm-index = /path/to/project/salm/Bin/Linux/Index/IndexSA.O64 +#sigtest-filter = "-l a+e -n 50" + +### if training should be skipped, +# point to a configuration file that contains +# pointers to all relevant model files +# +#config = + +##################################################### +### TUNING: finding good weights for model components + +[TUNING] + +### instead of tuning with this setting, old weights may be recycled +# specify here an old configuration file with matching weights +# +#weight-config = $working-dir/tuning/moses.weight-reused.ini.1 + +### tuning script to be used +# +tuning-script = $moses-script-dir/training/mert-moses.pl +tuning-settings = "-mertdir $moses-bin-dir" + +### specify the corpus used for tuning +# it should contain 1000s of sentences +# +input-sgm = $wmt12-data/dev/newstest2010-src.$input-extension.sgm +#raw-input = +#tokenized-input = +#factorized-input = +#input = +# +reference-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-reference = +#tokenized-reference = +#factorized-reference = +#reference = + +### size of n-best list used (typically 100) +# +nbest = 100 + +### ranges for weights for random initialization +# if not specified, the tuning script will use generic ranges +# it is not clear, if this matters +# +# lambda = + +### additional flags for the filter script +# +filter-settings = "" + +### additional flags for the decoder +# +decoder-settings = "-threads $cores" + +### if tuning should be skipped, specify this here +# and also point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +######################################################### +## RECASER: restore case, this part only trains the model + +[RECASING] IGNORE + +### training data +# raw input needs to be still tokenized, +# also also tokenized input may be specified +# +#tokenized = [LM:europarl:tokenized-corpus] + +### additinal settings +# +recasing-settings = "" +#lm-training = $srilm-dir/ngram-count +decoder = $moses-bin-dir/moses + +# already a trained recaser? point to config file +#recase-config = + +####################################################### +## TRUECASER: train model to truecase corpora and input + +[TRUECASER] + +### script to train truecaser models +# +trainer = $moses-script-dir/recaser/train-truecaser.perl + +### training data +# data on which truecaser is trained +# if no training data is specified, parallel corpus is used +# +# raw-stem = +# tokenized-stem = + +### trained model +# +# truecase-model = + +###################################################################### +## EVALUATION: translating a test set using the tuned system and score it + +[EVALUATION] + +### number of jobs (if parallel execution on cluster) +# +#jobs = 10 + +### additional flags for the filter script +# +#filter-settings = "" + +### additional decoder settings +# switches for the Moses decoder +# common choices: +# "-threads N" for multi-threading +# "-mbr" for MBR decoding +# "-drop-unknown" for dropping unknown source words +# "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000" for cube pruning +# +decoder-settings = "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 -threads $cores" + +### specify size of n-best list, if produced +# +#nbest = 100 + +### multiple reference translations +# +#multiref = yes + +### prepare system output for scoring +# this may include detokenization and wrapping output in sgm +# (needed for nist-bleu, ter, meteor) +# +detokenizer = "$moses-script-dir/tokenizer/detokenizer.perl -l $output-extension" +#recaser = $moses-script-dir/recaser/recase.perl +wrapping-script = "$moses-script-dir/ems/support/wrap-xml.perl $output-extension" +#output-sgm = + +### BLEU +# +nist-bleu = $moses-script-dir/generic/mteval-v13a.pl +nist-bleu-c = "$moses-script-dir/generic/mteval-v13a.pl -c" +#multi-bleu = "$moses-script-dir/generic/multi-bleu.perl -lc" +#multi-bleu-c = $moses-script-dir/generic/multi-bleu.perl +#ibm-bleu = +#sacre-bleu = "sacrebleu -lc" +#sacre-bleu-c = "sacrebleu" + +### TER: translation error rate (BBN metric) based on edit distance +# not yet integrated +# +# ter = + +### METEOR: gives credit to stem / worknet synonym matches +## recently integrated - use with care +## only for supported languages, needs to be installed separately +## +## uncomment following 3 lines, modify first one adding the location of meteor installation on your disk +# meteor-script = "/project/software/meteor-1.3/meteor-1.3.jar" +# meteor = "java -Xmx2G -jar $meteor-script" +# meteor-params = " -l $output-extension -norm" + +### Analysis: carry out various forms of analysis on the output +# +analysis = $moses-script-dir/ems/support/analysis.perl +# +# also report on input coverage +analyze-coverage = yes +# +# also report on phrase mappings used +report-segmentation = yes +# +# report precision of translations for each input word, broken down by +# count of input word in corpus and model +#report-precision-by-coverage = yes +# +# further precision breakdown by factor +#precision-by-coverage-factor = pos +# +# visualization of the search graph in tree-based models +#analyze-search-graph = yes + +[EVALUATION:newstest2011] + +### input data +# +input-sgm = $wmt12-data/dev/newstest2011-src.$input-extension.sgm +# raw-input = +# tokenized-input = +# factorized-input = +# input = + +### reference data +# +reference-sgm = $wmt12-data/dev/newstest2011-ref.$output-extension.sgm +# raw-reference = +# tokenized-reference = +# reference = + +### analysis settings +# may contain any of the general evaluation analysis settings +# specific setting: base coverage statistics on earlier run +# +#precision-by-coverage-base = $working-dir/evaluation/test.analysis.5 + +### wrapping frame +# for nist-bleu and other scoring scripts, the output needs to be wrapped +# in sgm markup (typically like the input sgm) +# +wrapping-frame = $input-sgm + +########################################## +### REPORTING: summarize evaluation scores + +[REPORTING] + +### currently no parameters for reporting section + diff --git a/mosesdecoder/scripts/ems/example/config.factored b/mosesdecoder/scripts/ems/example/config.factored new file mode 100644 index 0000000000000000000000000000000000000000..633bd4b5a0bddd03743b8fd3bc0463b0907cec28 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/config.factored @@ -0,0 +1,731 @@ +################################################ +### CONFIGURATION FILE FOR AN SMT EXPERIMENT ### +################################################ + +[GENERAL] + +### directory in which experiment is run +# +working-dir = /home/pkoehn/experiment + +# specification of the language pair +input-extension = fr +output-extension = en +pair-extension = fr-en + +### directories that contain tools and data +# +# moses +moses-src-dir = /home/pkoehn/moses +# +# moses binaries +moses-bin-dir = $moses-src-dir/bin +# +# moses scripts +moses-script-dir = $moses-src-dir/scripts +# +# directory where GIZA++/MGIZA programs resides +external-bin-dir = /Users/hieuhoang/workspace/bin/training-tools +# +# srilm +srilm-dir = $moses-src-dir/srilm/bin/i686 +# +# irstlm +irstlm-dir = $moses-src-dir/irstlm/bin +# +# randlm +randlm-dir = $moses-src-dir/randlm/bin +# +# data +wmt12-data = $working-dir/data + +### basic tools +# +# moses decoder +decoder = $moses-bin-dir/moses + +# conversion of rule table into binary on-disk format +ttable-binarizer = "$moses-bin-dir/CreateOnDiskPt 1 1 4 100 2" + +# tokenizers - comment out if all your data is already tokenized +input-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $input-extension" +output-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $output-extension" + +# For Arabic tokenizer try Farasa (download: http://qatsdemo.cloudapp.net/farasa/) +# Abdelali, Darwish, Durrani, Mubarak (NAACL demo 2016) +# "Farasa: A Fast and Furious Segmenter for Arabic" +#input-tokenizer = "$farasa-dir/farasa_moses.sh" + +# truecasers - comment out if you do not use the truecaser +input-truecaser = $moses-script-dir/recaser/truecase.perl +output-truecaser = $moses-script-dir/recaser/truecase.perl +detruecaser = $moses-script-dir/recaser/detruecase.perl + +# lowercaser - comment out if you use truecasing +#input-lowercaser = $moses-script-dir/tokenizer/lowercase.perl +#output-lowercaser = $moses-script-dir/tokenizer/lowercase.perl + +### generic parallelizer for cluster and multi-core machines +# you may specify a script that allows the parallel execution +# parallizable steps (see meta file). you also need specify +# the number of jobs (cluster) or cores (multicore) +# +#generic-parallelizer = $moses-script-dir/ems/support/generic-parallelizer.perl +#generic-parallelizer = $moses-script-dir/ems/support/generic-multicore-parallelizer.perl + +### cluster settings (if run on a cluster machine) +# number of jobs to be submitted in parallel +# +#jobs = 10 + +# arguments to qsub when scheduling a job +#qsub-settings = "" + +# project for priviledges and usage accounting +#qsub-project = iccs_smt + +# memory and time +#qsub-memory = 4 +#qsub-hours = 48 + +### multi-core settings +# when the generic parallelizer is used, the number of cores +# specified here +cores = 4 + +################################################################# +# PARALLEL CORPUS PREPARATION: +# create a tokenized, sentence-aligned corpus, ready for training + +[CORPUS] + +### long sentences are filtered out, since they slow down GIZA++ +# and are a less reliable source of data. set here the maximum +# length of a sentence +# +max-sentence-length = 80 + +[CORPUS:europarl] IGNORE + +### command to run to get raw corpus files +# +# get-corpus-script = + +### raw corpus files (untokenized, but sentence aligned) +# +raw-stem = $wmt12-data/training/europarl-v7.$pair-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-stem = + +### if sentence filtering should be skipped, +# point to the clean training data +# +#clean-stem = + +### if corpus preparation should be skipped, +# point to the prepared training data +# +#lowercased-stem = + +[CORPUS:nc] +raw-stem = $wmt12-data/training/news-commentary-v7.$pair-extension + +[CORPUS:un] IGNORE +raw-stem = $wmt12-data/training/undoc.2000.$pair-extension + +################################################################# +# LANGUAGE MODEL TRAINING + +[LM] + +### tool to be used for language model training +# kenlm training +lm-training = "$moses-script-dir/ems/support/lmplz-wrapper.perl -bin $moses-bin-dir/lmplz" +settings = "--prune '0 0 1' -T $working-dir/lm -S 20%" + +# srilm +#lm-training = $srilm-dir/ngram-count +#settings = "-interpolate -kndiscount -unk" + +# irstlm training +# msb = modified kneser ney; p=0 no singleton pruning +#lm-training = "$moses-script-dir/generic/trainlm-irst2.perl -cores $cores -irst-dir $irstlm-dir -temp-dir $working-dir/tmp" +#settings = "-s msb -p 0" + +# order of the language model +order = 5 + +### tool to be used for training randomized language model from scratch +# (more commonly, a SRILM is trained) +# +#rlm-training = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +#lm-binarizer = $moses-bin-dir/build_binary +#type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### each language model to be used has its own section here + +[LM:europarl] IGNORE + +### command to run to get raw corpus files +# +#get-corpus-script = "" + +### raw corpus (untokenized) +# +raw-corpus = $wmt12-data/training/europarl-v7.$output-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-corpus = + +### if corpus preparation should be skipped, +# point to the prepared language model +# +#lm = + +[LM:nc] +raw-corpus = $wmt12-data/training/news-commentary-v7.$pair-extension.$output-extension + +[LM:un] IGNORE +raw-corpus = $wmt12-data/training/undoc.2000.$pair-extension.$output-extension + +[LM:news] IGNORE +raw-corpus = $wmt12-data/training/news.$output-extension.shuffled + +[LM:nc=pos] +factors = "pos" +order = 7 +settings = "-interpolate -unk" +raw-corpus = $wmt12-data/training/news-commentary-v7.$pair-extension.$output-extension + +################################################################# +# INTERPOLATING LANGUAGE MODELS + +[INTERPOLATED-LM] IGNORE + +# if multiple language models are used, these may be combined +# by optimizing perplexity on a tuning set +# see, for instance [Koehn and Schwenk, IJCNLP 2008] + +### script to interpolate language models +# if commented out, no interpolation is performed +# +script = $moses-script-dir/ems/support/interpolate-lm.perl + +### tuning set +# you may use the same set that is used for mert tuning (reference set) +# +tuning-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-tuning = +#tokenized-tuning = +#factored-tuning = +#lowercased-tuning = +#split-tuning = + +### group language models for hierarchical interpolation +# (flat interpolation is limited to 10 language models) +#group = "first,second fourth,fifth" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +#lm-binarizer = $moses-bin-dir/build_binary +#type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +################################################################# +# FACTOR DEFINITION + +[INPUT-FACTOR] + +# also used for output factors +temp-dir = $working-dir/training/factor + +[OUTPUT-FACTOR:pos] + +### script that generates this factor +# +mxpost = /home/pkoehn/bin/mxpost +factor-script = "$moses-script-dir/training/wrappers/make-factor-en-pos.mxpost.perl -mxpost $mxpost" + +################################################################# +# MODIFIED MOORE LEWIS FILTERING + +[MML] IGNORE + +### specifications for language models to be trained +# +#lm-training = $srilm-dir/ngram-count +#lm-settings = "-interpolate -kndiscount -unk" +#lm-binarizer = $moses-src-dir/bin/build_binary +#lm-query = $moses-src-dir/bin/query +#order = 5 + +### in-/out-of-domain source/target corpora to train the 4 language model +# +# in-domain: point either to a parallel corpus +#outdomain-stem = [CORPUS:toy:clean-split-stem] + +# ... or to two separate monolingual corpora +#indomain-target = [LM:toy:lowercased-corpus] +#raw-indomain-source = $toy-data/nc-5k.$input-extension + +# point to out-of-domain parallel corpus +#outdomain-stem = [CORPUS:giga:clean-split-stem] + +# settings: number of lines sampled from the corpora to train each language model on +# (if used at all, should be small as a percentage of corpus) +#settings = "--line-count 100000" + +################################################################# +# TRANSLATION MODEL TRAINING + +[TRAINING] + +### training script to be used: either a legacy script or +# current moses training script (default) +# +script = $moses-script-dir/training/train-model.perl + +### general options +# these are options that are passed on to train-model.perl, for instance +# * "-mgiza -mgiza-cpus 8" to use mgiza instead of giza +# * "-sort-buffer-size 8G -sort-compress gzip" to reduce on-disk sorting +# * "-sort-parallel 8 -cores 8" to speed up phrase table building +# * "-parallel" for parallel execution of mkcls and giza +# +#training-options = "" + +### factored training: specify here which factors used +# if none specified, single factor training is assumed +# (one translation step, surface to surface) +# +input-factors = word +output-factors = word pos +alignment-factors = "word -> word" +translation-factors = "word -> word+pos" +reordering-factors = "word -> word" +#generation-factors = +decoding-steps = "t0" + +### parallelization of data preparation step +# the two directions of the data preparation can be run in parallel +# comment out if not needed +# +parallel = yes + +### pre-computation for giza++ +# giza++ has a more efficient data structure that needs to be +# initialized with snt2cooc. if run in parallel, this may reduces +# memory requirements. set here the number of parts +# +#run-giza-in-parts = 5 + +### symmetrization method to obtain word alignments from giza output +# (commonly used: grow-diag-final-and) +# +alignment-symmetrization-method = grow-diag-final-and + +### use of Chris Dyer's fast align for word alignment +# +#fast-align-settings = "-d -o -v" + +### use of berkeley aligner for word alignment +# +#use-berkeley = true +#alignment-symmetrization-method = berkeley +#berkeley-train = $moses-script-dir/ems/support/berkeley-train.sh +#berkeley-process = $moses-script-dir/ems/support/berkeley-process.sh +#berkeley-jar = /your/path/to/berkeleyaligner-1.1/berkeleyaligner.jar +#berkeley-java-options = "-server -mx30000m -ea" +#berkeley-training-options = "-Main.iters 5 5 -EMWordAligner.numThreads 8" +#berkeley-process-options = "-EMWordAligner.numThreads 8" +#berkeley-posterior = 0.5 + +### use of baseline alignment model (incremental training) +# +#baseline = 68 +#baseline-alignment-model = "$working-dir/training/prepared.$baseline/$input-extension.vcb \ +# $working-dir/training/prepared.$baseline/$output-extension.vcb \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.cooc \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.cooc \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.thmm.5 \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.hhmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.thmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.hhmm.5" + +### if word alignment should be skipped, +# point to word alignment files +# +#word-alignment = $working-dir/model/aligned.1 + +### filtering some corpora with modified Moore-Lewis +# specify corpora to be filtered and ratio to be kept, either before or after word alignment +#mml-filter-corpora = toy +#mml-before-wa = "-proportion 0.9" +#mml-after-wa = "-proportion 0.9" + +### build memory mapped suffix array phrase table +# (binarizing the reordering table is a good idea, since filtering makes little sense) +#mmsapt = "num-features=9 pfwd=g+ pbwd=g+ smooth=0 sample=1000 workers=1" +#binarize-all = $moses-script-dir/training/binarize-model.perl + +### create a bilingual concordancer for the model +# +#biconcor = $moses-bin-dir/biconcor + +## Operation Sequence Model (OSM) +# Durrani, Schmid and Fraser. (2011): +# "A Joint Sequence Translation Model with Integrated Reordering" +# compile Moses with --max-kenlm-order=9 if higher order is required +# +#operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "-lmplz '$moses-src-dir/bin/lmplz -S 40%'" +# +# OR if you want to use with SRILM +# +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64" + +## Class-based Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Koehn, Schmid, Fraser (COLING, 2014). +#Investigating the Usefulness of Generalized Word Representations in SMT +# +#operation-sequence-model-settings = "--factor 0-0+1-1" + +## Interpolated Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Sajjad, Joty, Abdelali and Vogel (Mt Summit, 2015). +# Using Joint Models for Domain Adaptation in Statistical Machine Translation +# +#interpolated-operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64 --tune /path-to-tune-folder/tune_file" +#Interpolated OSM can only be used with SRILM because of the interpolation script + + +# if OSM training should be skipped, point to OSM Model +#osm-model = +### unsupervised transliteration module +# Durrani, Sajjad, Hoang and Koehn (EACL, 2014). +# "Integrating an Unsupervised Transliteration Model +# into Statistical Machine Translation." +# +#transliteration-module = "yes" +#post-decoding-transliteration = "yes" + +### lexicalized reordering: specify orientation type +# (default: only distance-based reordering model) +# +lexicalized-reordering = msd-bidirectional-fe + +### hierarchical rule set +# +#hierarchical-rule-set = true + +### settings for rule extraction +# +#extract-settings = "" +max-phrase-length = 5 + +### add extracted phrases from baseline model +# +#baseline-extract = $working-dir/model/extract.$baseline +# +# requires aligned parallel corpus for re-estimating lexical translation probabilities +#baseline-corpus = $working-dir/training/corpus.$baseline +#baseline-alignment = $working-dir/model/aligned.$baseline.$alignment-symmetrization-method + +### unknown word labels (target syntax only) +# enables use of unknown word labels during decoding +# label file is generated during rule extraction +# +#use-unknown-word-labels = true + +### if phrase extraction should be skipped, +# point to stem for extract files +# +# extracted-phrases = + +### settings for rule scoring +# +score-settings = "--GoodTuring --MinScore 2:0.0001" + +### include word alignment in phrase table +# +#include-word-alignment-in-rules = yes + +### sparse lexical features +# +#sparse-features = "target-word-insertion top 50, source-word-deletion top 50, word-translation top 50 50, phrase-length" + +### domain adaptation settings +# options: sparse, any of: indicator, subset, ratio +#domain-features = "subset" + +### if phrase table training should be skipped, +# point to phrase translation table +# +# phrase-translation-table = + +### if reordering table training should be skipped, +# point to reordering table +# +# reordering-table = + +### filtering the phrase table based on significance tests +# Johnson, Martin, Foster and Kuhn. (2007): "Improving Translation Quality by Discarding Most of the Phrasetable" +# options: -n number of translations; -l 'a+e', 'a-e', or a positive real value -log prob threshold +#salm-index = /path/to/project/salm/Bin/Linux/Index/IndexSA.O64 +#sigtest-filter = "-l a+e -n 50" + +### if training should be skipped, +# point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +##################################################### +### TUNING: finding good weights for model components + +[TUNING] + +### instead of tuning with this setting, old weights may be recycled +# specify here an old configuration file with matching weights +# +#weight-config = $working-dir/tuning/moses.weight-reused.ini.1 + +### tuning script to be used +# +tuning-script = $moses-script-dir/training/mert-moses.pl +tuning-settings = "-mertdir $moses-bin-dir" + +### specify the corpus used for tuning +# it should contain 1000s of sentences +# +input-sgm = $wmt12-data/dev/newstest2010-src.$input-extension.sgm +#raw-input = +#tokenized-input = +#factorized-input = +#input = +# +reference-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-reference = +#tokenized-reference = +#factorized-reference = +#reference = + +### size of n-best list used (typically 100) +# +nbest = 100 + +### ranges for weights for random initialization +# if not specified, the tuning script will use generic ranges +# it is not clear, if this matters +# +# lambda = + +### additional flags for the filter script +# +filter-settings = "" + +### additional flags for the decoder +# +decoder-settings = "-threads $cores" + +### if tuning should be skipped, specify this here +# and also point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +######################################################### +## RECASER: restore case, this part only trains the model + +[RECASING] IGNORE + +### training data +# raw input needs to be still tokenized, +# also also tokenized input may be specified +# +#tokenized = [LM:europarl:tokenized-corpus] + +### additinal settings +# +recasing-settings = "" +#lm-training = $srilm-dir/ngram-count +decoder = $moses-bin-dir/moses + +# already a trained recaser? point to config file +#recase-config = + +####################################################### +## TRUECASER: train model to truecase corpora and input + +[TRUECASER] + +### script to train truecaser models +# +trainer = $moses-script-dir/recaser/train-truecaser.perl + +### training data +# data on which truecaser is trained +# if no training data is specified, parallel corpus is used +# +# raw-stem = +# tokenized-stem = + +### trained model +# +# truecase-model = + +###################################################################### +## EVALUATION: translating a test set using the tuned system and score it + +[EVALUATION] + +### number of jobs (if parallel execution on cluster) +# +#jobs = 10 + +### additional flags for the filter script +# +#filter-settings = "" + +### additional decoder settings +# switches for the Moses decoder +# common choices: +# "-threads N" for multi-threading +# "-mbr" for MBR decoding +# "-drop-unknown" for dropping unknown source words +# "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000" for cube pruning +# +decoder-settings = "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 -threads $cores" + +### specify size of n-best list, if produced +# +#nbest = 100 + +### multiple reference translations +# +#multiref = yes + +### prepare system output for scoring +# this may include detokenization and wrapping output in sgm +# (needed for nist-bleu, ter, meteor) +# +detokenizer = "$moses-script-dir/tokenizer/detokenizer.perl -l $output-extension" +#recaser = $moses-script-dir/recaser/recase.perl +wrapping-script = "$moses-script-dir/ems/support/wrap-xml.perl $output-extension" +#output-sgm = + +### BLEU +# +nist-bleu = $moses-script-dir/generic/mteval-v13a.pl +nist-bleu-c = "$moses-script-dir/generic/mteval-v13a.pl -c" +#multi-bleu = "$moses-script-dir/generic/multi-bleu.perl -lc" +#multi-bleu-c = $moses-script-dir/generic/multi-bleu.perl +#ibm-bleu = +#sacre-bleu = "sacrebleu -lc" +#sacre-bleu-c = "sacrebleu" + +### TER: translation error rate (BBN metric) based on edit distance +# not yet integrated +# +# ter = + +### METEOR: gives credit to stem / worknet synonym matches +# not yet integrated +# +# meteor = + +### Analysis: carry out various forms of analysis on the output +# +analysis = $moses-script-dir/ems/support/analysis.perl +# +# also report on input coverage +analyze-coverage = yes +# +# also report on phrase mappings used +report-segmentation = yes +# +# report precision of translations for each input word, broken down by +# count of input word in corpus and model +#report-precision-by-coverage = yes +# +# further precision breakdown by factor +#precision-by-coverage-factor = pos +# +# visualization of the search graph in tree-based models +#analyze-search-graph = yes + +[EVALUATION:newstest2011] + +### input data +# +input-sgm = $wmt12-data/dev/newstest2011-src.$input-extension.sgm +# raw-input = +# tokenized-input = +# factorized-input = +# input = + +### reference data +# +reference-sgm = $wmt12-data/dev/newstest2011-ref.$output-extension.sgm +# raw-reference = +# tokenized-reference = +# reference = + +### analysis settings +# may contain any of the general evaluation analysis settings +# specific setting: base coverage statistics on earlier run +# +#precision-by-coverage-base = $working-dir/evaluation/test.analysis.5 + +### wrapping frame +# for nist-bleu and other scoring scripts, the output needs to be wrapped +# in sgm markup (typically like the input sgm) +# +wrapping-frame = $input-sgm + +########################################## +### REPORTING: summarize evaluation scores + +[REPORTING] + +### currently no parameters for reporting section + diff --git a/mosesdecoder/scripts/ems/example/config.hierarchical b/mosesdecoder/scripts/ems/example/config.hierarchical new file mode 100644 index 0000000000000000000000000000000000000000..de234183b9303dc9e9cc86823c5389bd964d2e95 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/config.hierarchical @@ -0,0 +1,692 @@ +################################################ +### CONFIGURATION FILE FOR AN SMT EXPERIMENT ### +################################################ + +[GENERAL] + +### directory in which experiment is run +# +working-dir = /home/pkoehn/experiment + +# specification of the language pair +input-extension = fr +output-extension = en +pair-extension = fr-en + +### directories that contain tools and data +# +# moses +moses-src-dir = /home/pkoehn/moses +# +# moses binaries +moses-bin-dir = $moses-src-dir/bin +# +# moses scripts +moses-script-dir = $moses-src-dir/scripts +# +# directory where GIZA++/MGIZA programs resides +external-bin-dir = /Users/hieuhoang/workspace/bin/training-tools +# +# srilm +srilm-dir = $moses-src-dir/srilm/bin/i686 +# +# irstlm +irstlm-dir = $moses-src-dir/irstlm/bin +# +# randlm +randlm-dir = $moses-src-dir/randlm/bin +# +# data +wmt12-data = $working-dir/data + +### basic tools +# +# moses decoder +decoder = $moses-bin-dir/moses_chart + +# conversion of phrase table into binary on-disk format +#ttable-binarizer = $moses-bin-dir/processPhraseTable + +# conversion of rule table into binary on-disk format +ttable-binarizer = "$moses-bin-dir/CreateOnDiskPt 1 1 4 100 2" + +# tokenizers - comment out if all your data is already tokenized +input-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $input-extension" +output-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $output-extension" + +# For Arabic tokenizer try Farasa (download: http://qatsdemo.cloudapp.net/farasa/) +# Abdelali, Darwish, Durrani, Mubarak (NAACL demo 2016) +# "Farasa: A Fast and Furious Segmenter for Arabic" +#input-tokenizer = "$farasa-dir/farasa_moses.sh" + +# truecasers - comment out if you do not use the truecaser +input-truecaser = $moses-script-dir/recaser/truecase.perl +output-truecaser = $moses-script-dir/recaser/truecase.perl +detruecaser = $moses-script-dir/recaser/detruecase.perl + +# lowercaser - comment out if you use truecasing +#input-lowercaser = $moses-script-dir/tokenizer/lowercase.perl +#output-lowercaser = $moses-script-dir/tokenizer/lowercase.perl + +### generic parallelizer for cluster and multi-core machines +# you may specify a script that allows the parallel execution +# parallizable steps (see meta file). you also need specify +# the number of jobs (cluster) or cores (multicore) +# +#generic-parallelizer = $moses-script-dir/ems/support/generic-parallelizer.perl +#generic-parallelizer = $moses-script-dir/ems/support/generic-multicore-parallelizer.perl + +### cluster settings (if run on a cluster machine) +# number of jobs to be submitted in parallel +# +#jobs = 10 + +# arguments to qsub when scheduling a job +#qsub-settings = "" + +# project for priviledges and usage accounting +#qsub-project = iccs_smt + +# memory and time +#qsub-memory = 4 +#qsub-hours = 48 + +### multi-core settings +# when the generic parallelizer is used, the number of cores +# specified here +cores = 4 + +################################################################# +# PARALLEL CORPUS PREPARATION: +# create a tokenized, sentence-aligned corpus, ready for training + +[CORPUS] + +### long sentences are filtered out, since they slow down GIZA++ +# and are a less reliable source of data. set here the maximum +# length of a sentence +# +max-sentence-length = 80 + +[CORPUS:europarl] IGNORE + +### command to run to get raw corpus files +# +# get-corpus-script = + +### raw corpus files (untokenized, but sentence aligned) +# +raw-stem = $wmt12-data/training/europarl-v7.$pair-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-stem = + +### if sentence filtering should be skipped, +# point to the clean training data +# +#clean-stem = + +### if corpus preparation should be skipped, +# point to the prepared training data +# +#lowercased-stem = + +[CORPUS:nc] +raw-stem = $wmt12-data/training/news-commentary-v7.$pair-extension + +[CORPUS:un] IGNORE +raw-stem = $wmt12-data/training/undoc.2000.$pair-extension + +################################################################# +# LANGUAGE MODEL TRAINING + +[LM] + +### tool to be used for language model training +# kenlm training +lm-training = "$moses-script-dir/ems/support/lmplz-wrapper.perl -bin $moses-bin-dir/lmplz" +settings = "--prune '0 0 1' -T $working-dir/lm -S 20%" + +# srilm +#lm-training = $srilm-dir/ngram-count +#settings = "-interpolate -kndiscount -unk" + +# irstlm training +# msb = modified kneser ney; p=0 no singleton pruning +#lm-training = "$moses-script-dir/generic/trainlm-irst2.perl -cores $cores -irst-dir $irstlm-dir -temp-dir $working-dir/tmp" +#settings = "-s msb -p 0" + +# order of the language model +order = 5 + +### tool to be used for training randomized language model from scratch +# (more commonly, a SRILM is trained) +# +#rlm-training = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### each language model to be used has its own section here + +[LM:europarl] IGNORE + +### command to run to get raw corpus files +# +#get-corpus-script = "" + +### raw corpus (untokenized) +# +raw-corpus = $wmt12-data/training/europarl-v7.$output-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-corpus = + +### if corpus preparation should be skipped, +# point to the prepared language model +# +#lm = + +[LM:nc] +raw-corpus = $wmt12-data/training/news-commentary-v7.$pair-extension.$output-extension + +[LM:un] IGNORE +raw-corpus = $wmt12-data/training/undoc.2000.$pair-extension.$output-extension + +[LM:news] IGNORE +raw-corpus = $wmt12-data/training/news.$output-extension.shuffled + + +################################################################# +# INTERPOLATING LANGUAGE MODELS + +[INTERPOLATED-LM] IGNORE + +# if multiple language models are used, these may be combined +# by optimizing perplexity on a tuning set +# see, for instance [Koehn and Schwenk, IJCNLP 2008] + +### script to interpolate language models +# if commented out, no interpolation is performed +# +script = $moses-script-dir/ems/support/interpolate-lm.perl + +### tuning set +# you may use the same set that is used for mert tuning (reference set) +# +tuning-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-tuning = +#tokenized-tuning = +#factored-tuning = +#lowercased-tuning = +#split-tuning = + +### group language models for hierarchical interpolation +# (flat interpolation is limited to 10 language models) +#group = "first,second fourth,fifth" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +################################################################# +# MODIFIED MOORE LEWIS FILTERING + +[MML] IGNORE + +### specifications for language models to be trained +# +#lm-training = $srilm-dir/ngram-count +#lm-settings = "-interpolate -kndiscount -unk" +#lm-binarizer = $moses-src-dir/bin/build_binary +#lm-query = $moses-src-dir/bin/query +#order = 5 + +### in-/out-of-domain source/target corpora to train the 4 language model +# +# in-domain: point either to a parallel corpus +#outdomain-stem = [CORPUS:toy:clean-split-stem] + +# ... or to two separate monolingual corpora +#indomain-target = [LM:toy:lowercased-corpus] +#raw-indomain-source = $toy-data/nc-5k.$input-extension + +# point to out-of-domain parallel corpus +#outdomain-stem = [CORPUS:giga:clean-split-stem] + +# settings: number of lines sampled from the corpora to train each language model on +# (if used at all, should be small as a percentage of corpus) +#settings = "--line-count 100000" + +################################################################# +# TRANSLATION MODEL TRAINING + +[TRAINING] + +### training script to be used: either a legacy script or +# current moses training script (default) +# +script = $moses-script-dir/training/train-model.perl + +### general options +# these are options that are passed on to train-model.perl, for instance +# * "-mgiza -mgiza-cpus 8" to use mgiza instead of giza +# * "-sort-buffer-size 8G -sort-compress gzip" to reduce on-disk sorting +# * "-sort-parallel 8 -cores 8" to speed up phrase table building +# * "-parallel" for parallel execution of mkcls and giza +# +#training-options = "" + +### factored training: specify here which factors used +# if none specified, single factor training is assumed +# (one translation step, surface to surface) +# +#input-factors = word lemma pos morph +#output-factors = word lemma pos +#alignment-factors = "word -> word" +#translation-factors = "word -> word" +#reordering-factors = "word -> word" +#generation-factors = "word -> pos" +#decoding-steps = "t0, g0" + +### parallelization of data preparation step +# the two directions of the data preparation can be run in parallel +# comment out if not needed +# +parallel = yes + +### pre-computation for giza++ +# giza++ has a more efficient data structure that needs to be +# initialized with snt2cooc. if run in parallel, this may reduces +# memory requirements. set here the number of parts +# +#run-giza-in-parts = 5 + +### symmetrization method to obtain word alignments from giza output +# (commonly used: grow-diag-final-and) +# +alignment-symmetrization-method = grow-diag-final-and + +### use of Chris Dyer's fast align for word alignment +# +#fast-align-settings = "-d -o -v" + +### use of berkeley aligner for word alignment +# +#use-berkeley = true +#alignment-symmetrization-method = berkeley +#berkeley-train = $moses-script-dir/ems/support/berkeley-train.sh +#berkeley-process = $moses-script-dir/ems/support/berkeley-process.sh +#berkeley-jar = /your/path/to/berkeleyaligner-1.1/berkeleyaligner.jar +#berkeley-java-options = "-server -mx30000m -ea" +#berkeley-training-options = "-Main.iters 5 5 -EMWordAligner.numThreads 8" +#berkeley-process-options = "-EMWordAligner.numThreads 8" +#berkeley-posterior = 0.5 + +### use of baseline alignment model (incremental training) +# +#baseline = 68 +#baseline-alignment-model = "$working-dir/training/prepared.$baseline/$input-extension.vcb \ +# $working-dir/training/prepared.$baseline/$output-extension.vcb \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.cooc \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.cooc \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.thmm.5 \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.hhmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.thmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.hhmm.5" + +### if word alignment should be skipped, +# point to word alignment files +# +#word-alignment = $working-dir/model/aligned.1 + +### filtering some corpora with modified Moore-Lewis +# specify corpora to be filtered and ratio to be kept, either before or after word alignment +#mml-filter-corpora = toy +#mml-before-wa = "-proportion 0.9" +#mml-after-wa = "-proportion 0.9" + +### build memory mapped suffix array phrase table +# (binarizing the reordering table is a good idea, since filtering makes little sense) +#mmsapt = "num-features=9 pfwd=g+ pbwd=g+ smooth=0 sample=1000 workers=1" +#binarize-all = $moses-script-dir/training/binarize-model.perl + +### create a bilingual concordancer for the model +# +#biconcor = $moses-bin-dir/biconcor + +## Operation Sequence Model (OSM) +# Durrani, Schmid and Fraser. (2011): +# "A Joint Sequence Translation Model with Integrated Reordering" +# compile Moses with --max-kenlm-order=9 if higher order is required +# +#operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "-lmplz '$moses-src-dir/bin/lmplz -S 40%'" +# +# if OSM training should be skipped, point to OSM Model +#osm-model = + +### unsupervised transliteration module +# Durrani, Sajjad, Hoang and Koehn (EACL, 2014). +# "Integrating an Unsupervised Transliteration Model +# into Statistical Machine Translation." +# +#transliteration-module = "yes" +#post-decoding-transliteration = "yes" + +### lexicalized reordering: specify orientation type +# (default: only distance-based reordering model) +# +#lexicalized-reordering = msd-bidirectional-fe + +### hierarchical rule set +# +hierarchical-rule-set = true + +### settings for rule extraction +# +#extract-settings = "" + +### add extracted phrases from baseline model +# +#baseline-extract = $working-dir/model/extract.$baseline +# +# requires aligned parallel corpus for re-estimating lexical translation probabilities +#baseline-corpus = $working-dir/training/corpus.$baseline +#baseline-alignment = $working-dir/model/aligned.$baseline.$alignment-symmetrization-method + +### unknown word labels (target syntax only) +# enables use of unknown word labels during decoding +# label file is generated during rule extraction +# +#use-unknown-word-labels = true + +### if phrase extraction should be skipped, +# point to stem for extract files +# +# extracted-phrases = + +### settings for rule scoring +# +score-settings = "--GoodTuring --MinScore 2:0.0001" + +### include word alignment in phrase table +# +#include-word-alignment-in-rules = yes + +### sparse lexical features +# +#sparse-features = "target-word-insertion top 50, source-word-deletion top 50, word-translation top 50 50, phrase-length" + +### domain adaptation settings +# options: sparse, any of: indicator, subset, ratio +#domain-features = "subset" + +### if phrase table training should be skipped, +# point to phrase translation table +# +# phrase-translation-table = + +### if reordering table training should be skipped, +# point to reordering table +# +# reordering-table = + +### filtering the phrase table based on significance tests +# Johnson, Martin, Foster and Kuhn. (2007): "Improving Translation Quality by Discarding Most of the Phrasetable" +# options: -n number of translations; -l 'a+e', 'a-e', or a positive real value -log prob threshold +#salm-index = /path/to/project/salm/Bin/Linux/Index/IndexSA.O64 +#sigtest-filter = "-l a+e -n 50" + +### if training should be skipped, +# point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +##################################################### +### TUNING: finding good weights for model components + +[TUNING] + +### instead of tuning with this setting, old weights may be recycled +# specify here an old configuration file with matching weights +# +#weight-config = $working-dir/tuning/moses.weight-reused.ini.1 + +### tuning script to be used +# +tuning-script = $moses-script-dir/training/mert-moses.pl +tuning-settings = "-mertdir $moses-bin-dir" + +### specify the corpus used for tuning +# it should contain 1000s of sentences +# +input-sgm = $wmt12-data/dev/newstest2010-src.$input-extension.sgm +#raw-input = +#tokenized-input = +#factorized-input = +#input = +# +reference-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-reference = +#tokenized-reference = +#factorized-reference = +#reference = + +### size of n-best list used (typically 100) +# +nbest = 100 + +### ranges for weights for random initialization +# if not specified, the tuning script will use generic ranges +# it is not clear, if this matters +# +# lambda = + +### additional flags for the filter script +# +filter-settings = "" + +### additional flags for the decoder +# +decoder-settings = "-threads $cores" + +### if tuning should be skipped, specify this here +# and also point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +######################################################### +## RECASER: restore case, this part only trains the model + +[RECASING] IGNORE + +### training data +# raw input needs to be still tokenized, +# also also tokenized input may be specified +# +#tokenized = [LM:europarl:tokenized-corpus] + +### additinal settings +# +recasing-settings = "" +#lm-training = $srilm-dir/ngram-count +decoder = $moses-bin-dir/moses + +# already a trained recaser? point to config file +#recase-config = + +####################################################### +## TRUECASER: train model to truecase corpora and input + +[TRUECASER] + +### script to train truecaser models +# +trainer = $moses-script-dir/recaser/train-truecaser.perl + +### training data +# data on which truecaser is trained +# if no training data is specified, parallel corpus is used +# +# raw-stem = +# tokenized-stem = + +### trained model +# +# truecase-model = + +###################################################################### +## EVALUATION: translating a test set using the tuned system and score it + +[EVALUATION] + +### number of jobs (if parallel execution on cluster) +# +#jobs = 10 + +### additional flags for the filter script +# +#filter-settings = "" + +### additional decoder settings +# switches for the Moses decoder +# common choices: +# "-threads N" for multi-threading +# "-mbr" for MBR decoding +# "-drop-unknown" for dropping unknown source words +# "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000" for cube pruning +# +decoder-settings = "-threads $cores" + +### specify size of n-best list, if produced +# +#nbest = 100 + +### multiple reference translations +# +#multiref = yes + +### prepare system output for scoring +# this may include detokenization and wrapping output in sgm +# (needed for nist-bleu, ter, meteor) +# +detokenizer = "$moses-script-dir/tokenizer/detokenizer.perl -l $output-extension" +#recaser = $moses-script-dir/recaser/recase.perl +wrapping-script = "$moses-script-dir/ems/support/wrap-xml.perl $output-extension" +#output-sgm = + +### BLEU +# +nist-bleu = $moses-script-dir/generic/mteval-v13a.pl +nist-bleu-c = "$moses-script-dir/generic/mteval-v13a.pl -c" +#multi-bleu = "$moses-script-dir/generic/multi-bleu.perl -lc" +#multi-bleu-c = $moses-script-dir/generic/multi-bleu.perl +#ibm-bleu = +#sacre-bleu = "sacrebleu -lc" +#sacre-bleu-c = "sacrebleu" + +### TER: translation error rate (BBN metric) based on edit distance +# not yet integrated +# +# ter = + +### METEOR: gives credit to stem / worknet synonym matches +# not yet integrated +# +# meteor = + +### Analysis: carry out various forms of analysis on the output +# +analysis = $moses-script-dir/ems/support/analysis.perl +# +# also report on input coverage +analyze-coverage = yes +# +# also report on phrase mappings used +report-segmentation = yes +# +# report precision of translations for each input word, broken down by +# count of input word in corpus and model +#report-precision-by-coverage = yes +# +# further precision breakdown by factor +#precision-by-coverage-factor = pos +# +# visualization of the search graph in tree-based models +#analyze-search-graph = yes + +[EVALUATION:newstest2011] + +### input data +# +input-sgm = $wmt12-data/dev/newstest2011-src.$input-extension.sgm +# raw-input = +# tokenized-input = +# factorized-input = +# input = + +### reference data +# +reference-sgm = $wmt12-data/dev/newstest2011-ref.$output-extension.sgm +# raw-reference = +# tokenized-reference = +# reference = + +### analysis settings +# may contain any of the general evaluation analysis settings +# specific setting: base coverage statistics on earlier run +# +#precision-by-coverage-base = $working-dir/evaluation/test.analysis.5 + +### wrapping frame +# for nist-bleu and other scoring scripts, the output needs to be wrapped +# in sgm markup (typically like the input sgm) +# +wrapping-frame = $input-sgm + +########################################## +### REPORTING: summarize evaluation scores + +[REPORTING] + +### currently no parameters for reporting section + diff --git a/mosesdecoder/scripts/ems/example/config.syntax b/mosesdecoder/scripts/ems/example/config.syntax new file mode 100644 index 0000000000000000000000000000000000000000..c643768f210b3392fd9b3a9fad35f19ee02674d3 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/config.syntax @@ -0,0 +1,696 @@ +################################################ +### CONFIGURATION FILE FOR AN SMT EXPERIMENT ### +################################################ + +[GENERAL] + +### directory in which experiment is run +# +working-dir = /home/pkoehn/experiment + +# specification of the language pair +input-extension = fr +output-extension = en +pair-extension = fr-en + +### directories that contain tools and data +# +# moses +moses-src-dir = /home/pkoehn/moses +# +# moses binaries +moses-bin-dir = $moses-src-dir/bin +# +# moses scripts +moses-script-dir = $moses-src-dir/scripts +# +# directory where GIZA++/MGIZA programs resides +external-bin-dir = /Users/hieuhoang/workspace/bin/training-tools +# +# srilm +srilm-dir = $moses-src-dir/srilm/bin/i686 +# +# irstlm +irstlm-dir = $moses-src-dir/irstlm/bin +# +# randlm +randlm-dir = $moses-src-dir/randlm/bin +# +# data +wmt12-data = $working-dir/data + +### basic tools +# +# moses decoder +decoder = $moses-bin-dir/moses_chart + +# conversion of phrase table into binary on-disk format +#ttable-binarizer = $moses-bin-dir/processPhraseTable + +# conversion of rule table into binary on-disk format +ttable-binarizer = "$moses-bin-dir/CreateOnDiskPt 1 1 4 100 2" + +# tokenizers - comment out if all your data is already tokenized +input-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $input-extension" +output-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $output-extension" + +# For Arabic tokenizer try Farasa (download: http://qatsdemo.cloudapp.net/farasa/) +# Abdelali, Darwish, Durrani, Mubarak (NAACL demo 2016) +# "Farasa: A Fast and Furious Segmenter for Arabic" +#input-tokenizer = "$farasa-dir/farasa_moses.sh" + +# truecasers - comment out if you do not use the truecaser +input-truecaser = $moses-script-dir/recaser/truecase.perl +output-truecaser = $moses-script-dir/recaser/truecase.perl +detruecaser = $moses-script-dir/recaser/detruecase.perl + +# lowercaser - comment out if you use truecasing +#input-lowercaser = $moses-script-dir/tokenizer/lowercase.perl +#output-lowercaser = $moses-script-dir/tokenizer/lowercase.perl + +# syntactic parsers +collins = /home/pkoehn/bin/COLLINS-PARSER +output-parser = "$moses-script-dir/training/wrappers/parse-en-collins.perl" + +### generic parallelizer for cluster and multi-core machines +# you may specify a script that allows the parallel execution +# parallizable steps (see meta file). you also need specify +# the number of jobs (cluster) or cores (multicore) +# +#generic-parallelizer = $moses-script-dir/ems/support/generic-parallelizer.perl +#generic-parallelizer = $moses-script-dir/ems/support/generic-multicore-parallelizer.perl + +### cluster settings (if run on a cluster machine) +# number of jobs to be submitted in parallel +# +#jobs = 10 + +# arguments to qsub when scheduling a job +#qsub-settings = "" + +# project for priviledges and usage accounting +#qsub-project = iccs_smt + +# memory and time +#qsub-memory = 4 +#qsub-hours = 48 + +### multi-core settings +# when the generic parallelizer is used, the number of cores +# specified here +cores = 4 + +################################################################# +# PARALLEL CORPUS PREPARATION: +# create a tokenized, sentence-aligned corpus, ready for training + +[CORPUS] + +### long sentences are filtered out, since they slow down GIZA++ +# and are a less reliable source of data. set here the maximum +# length of a sentence +# +max-sentence-length = 80 + +[CORPUS:europarl] IGNORE + +### command to run to get raw corpus files +# +# get-corpus-script = + +### raw corpus files (untokenized, but sentence aligned) +# +raw-stem = $wmt12-data/training/europarl-v7.$pair-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-stem = + +### if sentence filtering should be skipped, +# point to the clean training data +# +#clean-stem = + +### if corpus preparation should be skipped, +# point to the prepared training data +# +#lowercased-stem = + +[CORPUS:nc] +raw-stem = $wmt12-data/training/news-commentary-v7.$pair-extension + +[CORPUS:un] IGNORE +raw-stem = $wmt12-data/training/undoc.2000.$pair-extension + +################################################################# +# LANGUAGE MODEL TRAINING + +[LM] + +### tool to be used for language model training +# kenlm training +lm-training = "$moses-script-dir/ems/support/lmplz-wrapper.perl -bin $moses-bin-dir/lmplz" +settings = "--prune '0 0 1' -T $working-dir/lm -S 20%" + +# srilm +#lm-training = $srilm-dir/ngram-count +#settings = "-interpolate -kndiscount -unk" + +# irstlm training +# msb = modified kneser ney; p=0 no singleton pruning +#lm-training = "$moses-script-dir/generic/trainlm-irst2.perl -cores $cores -irst-dir $irstlm-dir -temp-dir $working-dir/tmp" +#settings = "-s msb -p 0" + +# order of the language model +order = 5 + +### tool to be used for training randomized language model from scratch +# (more commonly, a SRILM is trained) +# +#rlm-training = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### each language model to be used has its own section here + +[LM:europarl] IGNORE + +### command to run to get raw corpus files +# +#get-corpus-script = "" + +### raw corpus (untokenized) +# +raw-corpus = $wmt12-data/training/europarl-v7.$output-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-corpus = + +### if corpus preparation should be skipped, +# point to the prepared language model +# +#lm = + +[LM:nc] +raw-corpus = $wmt12-data/training/news-commentary-v7.$pair-extension.$output-extension + +[LM:un] IGNORE +raw-corpus = $wmt12-data/training/undoc.2000.$pair-extension.$output-extension + +[LM:news] IGNORE +raw-corpus = $wmt12-data/training/news.$output-extension.shuffled + + +################################################################# +# INTERPOLATING LANGUAGE MODELS + +[INTERPOLATED-LM] IGNORE + +# if multiple language models are used, these may be combined +# by optimizing perplexity on a tuning set +# see, for instance [Koehn and Schwenk, IJCNLP 2008] + +### script to interpolate language models +# if commented out, no interpolation is performed +# +script = $moses-script-dir/ems/support/interpolate-lm.perl + +### tuning set +# you may use the same set that is used for mert tuning (reference set) +# +tuning-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-tuning = +#tokenized-tuning = +#factored-tuning = +#lowercased-tuning = +#split-tuning = + +### group language models for hierarchical interpolation +# (flat interpolation is limited to 10 language models) +#group = "first,second fourth,fifth" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +################################################################# +# MODIFIED MOORE LEWIS FILTERING + +[MML] IGNORE + +### specifications for language models to be trained +# +#lm-training = $srilm-dir/ngram-count +#lm-settings = "-interpolate -kndiscount -unk" +#lm-binarizer = $moses-src-dir/bin/build_binary +#lm-query = $moses-src-dir/bin/query +#order = 5 + +### in-/out-of-domain source/target corpora to train the 4 language model +# +# in-domain: point either to a parallel corpus +#outdomain-stem = [CORPUS:toy:clean-split-stem] + +# ... or to two separate monolingual corpora +#indomain-target = [LM:toy:lowercased-corpus] +#raw-indomain-source = $toy-data/nc-5k.$input-extension + +# point to out-of-domain parallel corpus +#outdomain-stem = [CORPUS:giga:clean-split-stem] + +# settings: number of lines sampled from the corpora to train each language model on +# (if used at all, should be small as a percentage of corpus) +#settings = "--line-count 100000" + +################################################################# +# TRANSLATION MODEL TRAINING + +[TRAINING] + +### training script to be used: either a legacy script or +# current moses training script (default) +# +script = $moses-script-dir/training/train-model.perl + +### general options +# these are options that are passed on to train-model.perl, for instance +# * "-mgiza -mgiza-cpus 8" to use mgiza instead of giza +# * "-sort-buffer-size 8G -sort-compress gzip" to reduce on-disk sorting +# * "-sort-parallel 8 -cores 8" to speed up phrase table building +# * "-parallel" for parallel execution of mkcls and giza +# +#training-options = "" + +### factored training: specify here which factors used +# if none specified, single factor training is assumed +# (one translation step, surface to surface) +# +#input-factors = word lemma pos morph +#output-factors = word lemma pos +#alignment-factors = "word -> word" +#translation-factors = "word -> word" +#reordering-factors = "word -> word" +#generation-factors = "word -> pos" +#decoding-steps = "t0, g0" + +### parallelization of data preparation step +# the two directions of the data preparation can be run in parallel +# comment out if not needed +# +parallel = yes + +### pre-computation for giza++ +# giza++ has a more efficient data structure that needs to be +# initialized with snt2cooc. if run in parallel, this may reduces +# memory requirements. set here the number of parts +# +#run-giza-in-parts = 5 + +### symmetrization method to obtain word alignments from giza output +# (commonly used: grow-diag-final-and) +# +alignment-symmetrization-method = grow-diag-final-and + +### use of Chris Dyer's fast align for word alignment +# +#fast-align-settings = "-d -o -v" + +### use of berkeley aligner for word alignment +# +#use-berkeley = true +#alignment-symmetrization-method = berkeley +#berkeley-train = $moses-script-dir/ems/support/berkeley-train.sh +#berkeley-process = $moses-script-dir/ems/support/berkeley-process.sh +#berkeley-jar = /your/path/to/berkeleyaligner-1.1/berkeleyaligner.jar +#berkeley-java-options = "-server -mx30000m -ea" +#berkeley-training-options = "-Main.iters 5 5 -EMWordAligner.numThreads 8" +#berkeley-process-options = "-EMWordAligner.numThreads 8" +#berkeley-posterior = 0.5 + +### use of baseline alignment model (incremental training) +# +#baseline = 68 +#baseline-alignment-model = "$working-dir/training/prepared.$baseline/$input-extension.vcb \ +# $working-dir/training/prepared.$baseline/$output-extension.vcb \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.cooc \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.cooc \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.thmm.5 \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.hhmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.thmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.hhmm.5" + +### if word alignment should be skipped, +# point to word alignment files +# +#word-alignment = $working-dir/model/aligned.1 + +### filtering some corpora with modified Moore-Lewis +# specify corpora to be filtered and ratio to be kept, either before or after word alignment +#mml-filter-corpora = toy +#mml-before-wa = "-proportion 0.9" +#mml-after-wa = "-proportion 0.9" + +### build memory mapped suffix array phrase table +# (binarizing the reordering table is a good idea, since filtering makes little sense) +#mmsapt = "num-features=9 pfwd=g+ pbwd=g+ smooth=0 sample=1000 workers=1" +#binarize-all = $moses-script-dir/training/binarize-model.perl + +### create a bilingual concordancer for the model +# +#biconcor = $moses-bin-dir/biconcor + +## Operation Sequence Model (OSM) +# Durrani, Schmid and Fraser. (2011): +# "A Joint Sequence Translation Model with Integrated Reordering" +# compile Moses with --max-kenlm-order=9 if higher order is required +# +#operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "-lmplz '$moses-src-dir/bin/lmplz -S 40%'" +# +# if OSM training should be skipped, point to OSM Model +#osm-model = + +### unsupervised transliteration module +# Durrani, Sajjad, Hoang and Koehn (EACL, 2014). +# "Integrating an Unsupervised Transliteration Model +# into Statistical Machine Translation." +# +#transliteration-module = "yes" +#post-decoding-transliteration = "yes" + +### lexicalized reordering: specify orientation type +# (default: only distance-based reordering model) +# +#lexicalized-reordering = msd-bidirectional-fe + +### hierarchical rule set +# +hierarchical-rule-set = true + +### settings for rule extraction +# +extract-settings = "--MinHoleSource 1 --NonTermConsecSource" + +### add extracted phrases from baseline model +# +#baseline-extract = $working-dir/model/extract.$baseline +# +# requires aligned parallel corpus for re-estimating lexical translation probabilities +#baseline-corpus = $working-dir/training/corpus.$baseline +#baseline-alignment = $working-dir/model/aligned.$baseline.$alignment-symmetrization-method + +### unknown word labels (target syntax only) +# enables use of unknown word labels during decoding +# label file is generated during rule extraction +# +#use-unknown-word-labels = true + +### if phrase extraction should be skipped, +# point to stem for extract files +# +# extracted-phrases = + +### settings for rule scoring +# +score-settings = "--GoodTuring --MinScore 2:0.0001" + +### include word alignment in phrase table +# +#include-word-alignment-in-rules = yes + +### sparse lexical features +# +#sparse-features = "target-word-insertion top 50, source-word-deletion top 50, word-translation top 50 50, phrase-length" + +### domain adaptation settings +# options: sparse, any of: indicator, subset, ratio +#domain-features = "subset" + +### if phrase table training should be skipped, +# point to phrase translation table +# +# phrase-translation-table = + +### if reordering table training should be skipped, +# point to reordering table +# +# reordering-table = + +### filtering the phrase table based on significance tests +# Johnson, Martin, Foster and Kuhn. (2007): "Improving Translation Quality by Discarding Most of the Phrasetable" +# options: -n number of translations; -l 'a+e', 'a-e', or a positive real value -log prob threshold +#salm-index = /path/to/project/salm/Bin/Linux/Index/IndexSA.O64 +#sigtest-filter = "-l a+e -n 50" + +### if training should be skipped, +# point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +##################################################### +### TUNING: finding good weights for model components + +[TUNING] + +### instead of tuning with this setting, old weights may be recycled +# specify here an old configuration file with matching weights +# +#weight-config = $working-dir/tuning/moses.weight-reused.ini.1 + +### tuning script to be used +# +tuning-script = $moses-script-dir/training/mert-moses.pl +tuning-settings = "-mertdir $moses-bin-dir" + +### specify the corpus used for tuning +# it should contain 1000s of sentences +# +input-sgm = $wmt12-data/dev/newstest2010-src.$input-extension.sgm +#raw-input = +#tokenized-input = +#factorized-input = +#input = +# +reference-sgm = $wmt12-data/dev/newstest2010-ref.$output-extension.sgm +#raw-reference = +#tokenized-reference = +#factorized-reference = +#reference = + +### size of n-best list used (typically 100) +# +nbest = 100 + +### ranges for weights for random initialization +# if not specified, the tuning script will use generic ranges +# it is not clear, if this matters +# +# lambda = + +### additional flags for the filter script +# +filter-settings = "" + +### additional flags for the decoder +# +decoder-settings = "-threads $cores" + +### if tuning should be skipped, specify this here +# and also point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +######################################################### +## RECASER: restore case, this part only trains the model + +[RECASING] IGNORE + +### training data +# raw input needs to be still tokenized, +# also also tokenized input may be specified +# +#tokenized = [LM:europarl:tokenized-corpus] + +### additinal settings +# +recasing-settings = "" +#lm-training = $srilm-dir/ngram-count +decoder = $moses-bin-dir/moses + +# already a trained recaser? point to config file +#recase-config = + +####################################################### +## TRUECASER: train model to truecase corpora and input + +[TRUECASER] + +### script to train truecaser models +# +trainer = $moses-script-dir/recaser/train-truecaser.perl + +### training data +# data on which truecaser is trained +# if no training data is specified, parallel corpus is used +# +# raw-stem = +# tokenized-stem = + +### trained model +# +# truecase-model = + +###################################################################### +## EVALUATION: translating a test set using the tuned system and score it + +[EVALUATION] + +### number of jobs (if parallel execution on cluster) +# +#jobs = 10 + +### additional flags for the filter script +# +#filter-settings = "" + +### additional decoder settings +# switches for the Moses decoder +# common choices: +# "-threads N" for multi-threading +# "-mbr" for MBR decoding +# "-drop-unknown" for dropping unknown source words +# "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000" for cube pruning +# +decoder-settings = "-threads $cores" + +### specify size of n-best list, if produced +# +#nbest = 100 + +### multiple reference translations +# +#multiref = yes + +### prepare system output for scoring +# this may include detokenization and wrapping output in sgm +# (needed for nist-bleu, ter, meteor) +# +detokenizer = "$moses-script-dir/tokenizer/detokenizer.perl -l $output-extension" +#recaser = $moses-script-dir/recaser/recase.perl +wrapping-script = "$moses-script-dir/ems/support/wrap-xml.perl $output-extension" +#output-sgm = + +### BLEU +# +nist-bleu = $moses-script-dir/generic/mteval-v13a.pl +nist-bleu-c = "$moses-script-dir/generic/mteval-v13a.pl -c" +#multi-bleu = "$moses-script-dir/generic/multi-bleu.perl -lc" +#multi-bleu-c = $moses-script-dir/generic/multi-bleu.perl +#ibm-bleu = +#sacre-bleu = "sacrebleu -lc" +#sacre-bleu-c = "sacrebleu" + +### TER: translation error rate (BBN metric) based on edit distance +# not yet integrated +# +# ter = + +### METEOR: gives credit to stem / worknet synonym matches +# not yet integrated +# +# meteor = + +### Analysis: carry out various forms of analysis on the output +# +analysis = $moses-script-dir/ems/support/analysis.perl +# +# also report on input coverage +analyze-coverage = yes +# +# also report on phrase mappings used +report-segmentation = yes +# +# report precision of translations for each input word, broken down by +# count of input word in corpus and model +#report-precision-by-coverage = yes +# +# further precision breakdown by factor +#precision-by-coverage-factor = pos +# +# visualization of the search graph in tree-based models +#analyze-search-graph = yes + +[EVALUATION:newstest2011] + +### input data +# +input-sgm = $wmt12-data/dev/newstest2011-src.$input-extension.sgm +# raw-input = +# tokenized-input = +# factorized-input = +# input = + +### reference data +# +reference-sgm = $wmt12-data/dev/newstest2011-ref.$output-extension.sgm +# raw-reference = +# tokenized-reference = +# reference = + +### analysis settings +# may contain any of the general evaluation analysis settings +# specific setting: base coverage statistics on earlier run +# +#precision-by-coverage-base = $working-dir/evaluation/test.analysis.5 + +### wrapping frame +# for nist-bleu and other scoring scripts, the output needs to be wrapped +# in sgm markup (typically like the input sgm) +# +wrapping-frame = $input-sgm + +########################################## +### REPORTING: summarize evaluation scores + +[REPORTING] + +### currently no parameters for reporting section + diff --git a/mosesdecoder/scripts/ems/example/config.toy b/mosesdecoder/scripts/ems/example/config.toy new file mode 100644 index 0000000000000000000000000000000000000000..6c3c4eb5298e591a0862d21c0adc5101d0e7fdc7 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/config.toy @@ -0,0 +1,692 @@ +################################################ +### CONFIGURATION FILE FOR AN SMT EXPERIMENT ### +################################################ + +[GENERAL] + +### directory in which experiment is run +# +working-dir = /home/pkoehn/experiment + +# specification of the language pair +input-extension = fr +output-extension = en +pair-extension = fr-en + +### directories that contain tools and data +# +# moses +moses-src-dir = /home/pkoehn/moses +# +# moses binaries +moses-bin-dir = $moses-src-dir/bin +# +# moses scripts +moses-script-dir = $moses-src-dir/scripts +# +# directory where GIZA++/MGIZA programs resides +external-bin-dir = /Users/hieuhoang/workspace/bin/training-tools +# +# srilm +srilm-dir = $moses-src-dir/srilm/bin/i686 +# +# irstlm +irstlm-dir = $moses-src-dir/irstlm/bin +# +# randlm +randlm-dir = $moses-src-dir/randlm/bin +# +# data +toy-data = $moses-script-dir/ems/example/data + +### basic tools +# +# moses decoder +decoder = $moses-bin-dir/moses + +# conversion of rule table into binary on-disk format +ttable-binarizer = "$moses-bin-dir/CreateOnDiskPt 1 1 4 100 2" + +# tokenizers - comment out if all your data is already tokenized +input-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $input-extension" +output-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $output-extension" + +# For Arabic tokenizer try Farasa (download: http://qatsdemo.cloudapp.net/farasa/) +# Abdelali, Darwish, Durrani, Mubarak (NAACL demo 2016) +# "Farasa: A Fast and Furious Segmenter for Arabic" +#input-tokenizer = "$farasa-dir/farasa_moses.sh" + +# truecasers - comment out if you do not use the truecaser +input-truecaser = $moses-script-dir/recaser/truecase.perl +output-truecaser = $moses-script-dir/recaser/truecase.perl +detruecaser = $moses-script-dir/recaser/detruecase.perl + +# lowercaser - comment out if you use truecasing +#input-lowercaser = $moses-script-dir/tokenizer/lowercase.perl +#output-lowercaser = $moses-script-dir/tokenizer/lowercase.perl + +### generic parallelizer for cluster and multi-core machines +# you may specify a script that allows the parallel execution +# parallizable steps (see meta file). you also need specify +# the number of jobs (cluster) or cores (multicore) +# +#generic-parallelizer = $moses-script-dir/ems/support/generic-parallelizer.perl +#generic-parallelizer = $moses-script-dir/ems/support/generic-multicore-parallelizer.perl + +### cluster settings (if run on a cluster machine) +# number of jobs to be submitted in parallel +# +#jobs = 10 + +# arguments to qsub when scheduling a job +#qsub-settings = "" + +# project for priviledges and usage accounting +#qsub-project = iccs_smt + +# memory and time +#qsub-memory = 4 +#qsub-hours = 48 + +### multi-core settings +# when the generic parallelizer is used, the number of cores +# specified here +cores = 4 + +################################################################# +# PARALLEL CORPUS PREPARATION: +# create a tokenized, sentence-aligned corpus, ready for training + +[CORPUS] + +### long sentences are filtered out, since they slow down GIZA++ +# and are a less reliable source of data. set here the maximum +# length of a sentence +# +max-sentence-length = 80 + +[CORPUS:toy] + +### command to run to get raw corpus files +# +# get-corpus-script = + +### raw corpus files (untokenized, but sentence aligned) +# +raw-stem = $toy-data/nc-5k + +### tokenized corpus files (may contain long sentences) +# +#tokenized-stem = + +### if sentence filtering should be skipped, +# point to the clean training data +# +#clean-stem = + +### if corpus preparation should be skipped, +# point to the prepared training data +# +#lowercased-stem = + +################################################################# +# LANGUAGE MODEL TRAINING + +[LM] + +### tool to be used for language model training +# kenlm training +lm-training = "$moses-script-dir/ems/support/lmplz-wrapper.perl -bin $moses-bin-dir/lmplz" +settings = "--prune '0 0 1' -T $working-dir/lm -S 20%" + +# srilm +#lm-training = $srilm-dir/ngram-count +#settings = "-interpolate -kndiscount -unk" + +# irstlm training +# msb = modified kneser ney; p=0 no singleton pruning +#lm-training = "$moses-script-dir/generic/trainlm-irst2.perl -cores $cores -irst-dir $irstlm-dir -temp-dir $working-dir/tmp" +#settings = "-s msb -p 0" + +# order of the language model +order = 5 + +### tool to be used for training randomized language model from scratch +# (more commonly, a SRILM is trained) +# +#rlm-training = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### each language model to be used has its own section here + +[LM:toy] + +### command to run to get raw corpus files +# +#get-corpus-script = "" + +### raw corpus (untokenized) +# +raw-corpus = $toy-data/nc-5k.$output-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-corpus = + +### if corpus preparation should be skipped, +# point to the prepared language model +# +#lm = + +################################################################# +# INTERPOLATING LANGUAGE MODELS + +[INTERPOLATED-LM] + +# if multiple language models are used, these may be combined +# by optimizing perplexity on a tuning set +# see, for instance [Koehn and Schwenk, IJCNLP 2008] + +### script to interpolate language models +# if commented out, no interpolation is performed +# +# script = $moses-script-dir/ems/support/interpolate-lm.perl + +### tuning set +# you may use the same set that is used for mert tuning (reference set) +# +#tuning-sgm = +#raw-tuning = +#tokenized-tuning = +#factored-tuning = +#lowercased-tuning = +#split-tuning = + +### group language models for hierarchical interpolation +# (flat interpolation is limited to 10 language models) +#group = "first,second fourth,fifth" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +################################################################# +# MODIFIED MOORE LEWIS FILTERING + +[MML] IGNORE + +### specifications for language models to be trained +# +#lm-training = $srilm-dir/ngram-count +#lm-settings = "-interpolate -kndiscount -unk" +#lm-binarizer = $moses-src-dir/bin/build_binary +#lm-query = $moses-src-dir/bin/query +#order = 5 + +### in-/out-of-domain source/target corpora to train the 4 language model +# +# in-domain: point either to a parallel corpus +#outdomain-stem = [CORPUS:toy:clean-split-stem] + +# ... or to two separate monolingual corpora +#indomain-target = [LM:toy:lowercased-corpus] +#raw-indomain-source = $toy-data/nc-5k.$input-extension + +# point to out-of-domain parallel corpus +#outdomain-stem = [CORPUS:giga:clean-split-stem] + +# settings: number of lines sampled from the corpora to train each language model on +# (if used at all, should be small as a percentage of corpus) +#settings = "--line-count 100000" + +################################################################# +# TRANSLATION MODEL TRAINING + +[TRAINING] + +### training script to be used: either a legacy script or +# current moses training script (default) +# +script = $moses-script-dir/training/train-model.perl + +### general options +# these are options that are passed on to train-model.perl, for instance +# * "-mgiza -mgiza-cpus 8" to use mgiza instead of giza +# * "-sort-buffer-size 8G -sort-compress gzip" to reduce on-disk sorting +# * "-sort-parallel 8 -cores 8" to speed up phrase table building +# * "-parallel" for parallel execution of mkcls and giza +# +#training-options = "" + +### factored training: specify here which factors used +# if none specified, single factor training is assumed +# (one translation step, surface to surface) +# +#input-factors = word lemma pos morph +#output-factors = word lemma pos +#alignment-factors = "word -> word" +#translation-factors = "word -> word" +#reordering-factors = "word -> word" +#generation-factors = "word -> pos" +#decoding-steps = "t0, g0" + +### parallelization of data preparation step +# the two directions of the data preparation can be run in parallel +# comment out if not needed +# +parallel = yes + +### pre-computation for giza++ +# giza++ has a more efficient data structure that needs to be +# initialized with snt2cooc. if run in parallel, this may reduces +# memory requirements. set here the number of parts +# +#run-giza-in-parts = 5 + +### symmetrization method to obtain word alignments from giza output +# (commonly used: grow-diag-final-and) +# +alignment-symmetrization-method = grow-diag-final-and + +### use of Chris Dyer's fast align for word alignment +# +#fast-align-settings = "-d -o -v" + +### use of berkeley aligner for word alignment +# +#use-berkeley = true +#alignment-symmetrization-method = berkeley +#berkeley-train = $moses-script-dir/ems/support/berkeley-train.sh +#berkeley-process = $moses-script-dir/ems/support/berkeley-process.sh +#berkeley-jar = /your/path/to/berkeleyaligner-1.1/berkeleyaligner.jar +#berkeley-java-options = "-server -mx30000m -ea" +#berkeley-training-options = "-Main.iters 5 5 -EMWordAligner.numThreads 8" +#berkeley-process-options = "-EMWordAligner.numThreads 8" +#berkeley-posterior = 0.5 + +### use of baseline alignment model (incremental training) +# +#baseline = 68 +#baseline-alignment-model = "$working-dir/training/prepared.$baseline/$input-extension.vcb \ +# $working-dir/training/prepared.$baseline/$output-extension.vcb \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.cooc \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.cooc \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.thmm.5 \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.hhmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.thmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.hhmm.5" + +### if word alignment should be skipped, +# point to word alignment files +# +#word-alignment = $working-dir/model/aligned.1 + +### filtering some corpora with modified Moore-Lewis +# specify corpora to be filtered and ratio to be kept, either before or after word alignment +#mml-filter-corpora = toy +#mml-before-wa = "-proportion 0.9" +#mml-after-wa = "-proportion 0.9" + +### build memory mapped suffix array phrase table +# (binarizing the reordering table is a good idea, since filtering makes little sense) +#mmsapt = "num-features=9 pfwd=g+ pbwd=g+ smooth=0 sample=1000 workers=1" +#binarize-all = $moses-script-dir/training/binarize-model.perl + +### create a bilingual concordancer for the model +# +#biconcor = $moses-bin-dir/biconcor + +## Operation Sequence Model (OSM) +# Durrani, Schmid and Fraser. (2011): +# "A Joint Sequence Translation Model with Integrated Reordering" +# compile Moses with --max-kenlm-order=9 if higher order is required +# +#operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "-lmplz '$moses-src-dir/bin/lmplz -S 40%'" +# +# OR if you want to use with SRILM +# +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64" + +## Class-based Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Koehn, Schmid, Fraser (COLING, 2014). +#Investigating the Usefulness of Generalized Word Representations in SMT +# +#operation-sequence-model-settings = "--factor 0-0+1-1" + +## Interpolated Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Sajjad, Joty, Abdelali and Vogel (Mt Summit, 2015). +# Using Joint Models for Domain Adaptation in Statistical Machine Translation +# +#interpolated-operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64 --tune /path-to-tune-folder/tune_file" +#Interpolated OSM can only be used with SRILM because of the interpolation script + + +# if OSM training should be skipped, point to OSM Model +#osm-model = + +### unsupervised transliteration module +# Durrani, Sajjad, Hoang and Koehn (EACL, 2014). +# "Integrating an Unsupervised Transliteration Model +# into Statistical Machine Translation." +# +#transliteration-module = "yes" +#post-decoding-transliteration = "yes" + +### lexicalized reordering: specify orientation type +# (default: only distance-based reordering model) +# +lexicalized-reordering = msd-bidirectional-fe + +### hierarchical rule set +# +#hierarchical-rule-set = true + +### settings for rule extraction +# +#extract-settings = "" +max-phrase-length = 5 + +### add extracted phrases from baseline model +# +#baseline-extract = $working-dir/model/extract.$baseline +# +# requires aligned parallel corpus for re-estimating lexical translation probabilities +#baseline-corpus = $working-dir/training/corpus.$baseline +#baseline-alignment = $working-dir/model/aligned.$baseline.$alignment-symmetrization-method + +### unknown word labels (target syntax only) +# enables use of unknown word labels during decoding +# label file is generated during rule extraction +# +#use-unknown-word-labels = true + +### if phrase extraction should be skipped, +# point to stem for extract files +# +# extracted-phrases = + +### settings for rule scoring +# +score-settings = "--GoodTuring --MinScore 2:0.0001" + +### include word alignment in phrase table +# +#include-word-alignment-in-rules = yes + +### sparse lexical features +# +#sparse-features = "target-word-insertion top 50, source-word-deletion top 50, word-translation top 50 50, phrase-length" + +### domain adaptation settings +# options: sparse, any of: indicator, subset, ratio +#domain-features = "subset" + +### if phrase table training should be skipped, +# point to phrase translation table +# +# phrase-translation-table = + +### if reordering table training should be skipped, +# point to reordering table +# +# reordering-table = + +### filtering the phrase table based on significance tests +# Johnson, Martin, Foster and Kuhn. (2007): "Improving Translation Quality by Discarding Most of the Phrasetable" +# options: -n number of translations; -l 'a+e', 'a-e', or a positive real value -log prob threshold +#salm-index = /path/to/project/salm/Bin/Linux/Index/IndexSA.O64 +#sigtest-filter = "-l a+e -n 50" + +### if training should be skipped, +# point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +##################################################### +### TUNING: finding good weights for model components + +[TUNING] + +### instead of tuning with this setting, old weights may be recycled +# specify here an old configuration file with matching weights +# +weight-config = $toy-data/weight.ini + +### tuning script to be used +# +tuning-script = $moses-script-dir/training/mert-moses.pl +tuning-settings = "-mertdir $moses-bin-dir" + +### specify the corpus used for tuning +# it should contain 1000s of sentences +# +#input-sgm = +#raw-input = +#tokenized-input = +#factorized-input = +#input = +# +#reference-sgm = +#raw-reference = +#tokenized-reference = +#factorized-reference = +#reference = + +### size of n-best list used (typically 100) +# +nbest = 100 + +### ranges for weights for random initialization +# if not specified, the tuning script will use generic ranges +# it is not clear, if this matters +# +# lambda = + +### additional flags for the filter script +# +filter-settings = "" + +### additional flags for the decoder +# +decoder-settings = "-threads $cores" + +### if tuning should be skipped, specify this here +# and also point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +######################################################### +## RECASER: restore case, this part only trains the model + +[RECASING] IGNORE + +### training data +# raw input needs to be still tokenized, +# also also tokenized input may be specified +# +#tokenized = [LM:europarl:tokenized-corpus] + +### additinal settings +# +recasing-settings = "" +#lm-training = $srilm-dir/ngram-count +decoder = $moses-bin-dir/moses + +# already a trained recaser? point to config file +#recase-config = + +####################################################### +## TRUECASER: train model to truecase corpora and input + +[TRUECASER] + +### script to train truecaser models +# +trainer = $moses-script-dir/recaser/train-truecaser.perl + +### training data +# data on which truecaser is trained +# if no training data is specified, parallel corpus is used +# +# raw-stem = +# tokenized-stem = + +### trained model +# +# truecase-model = + +###################################################################### +## EVALUATION: translating a test set using the tuned system and score it + +[EVALUATION] + +### additional flags for the filter script +# +#filter-settings = "" + +### additional decoder settings +# switches for the Moses decoder +# common choices: +# "-threads N" for multi-threading +# "-mbr" for MBR decoding +# "-drop-unknown" for dropping unknown source words +# "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000" for cube pruning +# +decoder-settings = "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 -threads $cores" + +### specify size of n-best list, if produced +# +#nbest = 100 + +### multiple reference translations +# +#multiref = yes + +### prepare system output for scoring +# this may include detokenization and wrapping output in sgm +# (needed for nist-bleu, ter, meteor) +# +detokenizer = "$moses-script-dir/tokenizer/detokenizer.perl -l $output-extension" +#recaser = $moses-script-dir/recaser/recase.perl +wrapping-script = "$moses-script-dir/ems/support/wrap-xml.perl $output-extension" +#output-sgm = + +### BLEU +# +nist-bleu = $moses-script-dir/generic/mteval-v13a.pl +nist-bleu-c = "$moses-script-dir/generic/mteval-v13a.pl -c" +#multi-bleu = "$moses-script-dir/generic/multi-bleu.perl -lc" +#multi-bleu-c = $moses-script-dir/generic/multi-bleu.perl +#ibm-bleu = +#sacre-bleu = "sacrebleu -lc" +#sacre-bleu-c = "sacrebleu" + +### TER: translation error rate (BBN metric) based on edit distance +# not yet integrated +# +# ter = + +### METEOR: gives credit to stem / worknet synonym matches +# not yet integrated +# +# meteor = + +### Analysis: carry out various forms of analysis on the output +# +analysis = $moses-script-dir/ems/support/analysis.perl +# +# also report on input coverage +analyze-coverage = yes +# +# also report on phrase mappings used +report-segmentation = yes +# +# report precision of translations for each input word, broken down by +# count of input word in corpus and model +#report-precision-by-coverage = yes +# +# further precision breakdown by factor +#precision-by-coverage-factor = pos +# +# visualization of the search graph in tree-based models +#analyze-search-graph = yes + +[EVALUATION:test] + +### input data +# +input-sgm = $toy-data/test-src.$input-extension.sgm +# raw-input = +# tokenized-input = +# factorized-input = +# input = + +### reference data +# +reference-sgm = $toy-data/test-ref.$output-extension.sgm +# raw-reference = +# tokenized-reference = +# reference = + +### analysis settings +# may contain any of the general evaluation analysis settings +# specific setting: base coverage statistics on earlier run +# +#precision-by-coverage-base = $working-dir/evaluation/test.analysis.5 + +### wrapping frame +# for nist-bleu and other scoring scripts, the output needs to be wrapped +# in sgm markup (typically like the input sgm) +# +wrapping-frame = $input-sgm + +########################################## +### REPORTING: summarize evaluation scores + +[REPORTING] + +### currently no parameters for reporting section + diff --git a/mosesdecoder/scripts/ems/example/config.toy.bilinguallm b/mosesdecoder/scripts/ems/example/config.toy.bilinguallm new file mode 100644 index 0000000000000000000000000000000000000000..c7e0b1ad86943f3246d72c2757a5477c6956dfb1 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/config.toy.bilinguallm @@ -0,0 +1,709 @@ +################################################ +### CONFIGURATION FILE FOR AN SMT EXPERIMENT ### +################################################ + +[GENERAL] + +### directory in which experiment is run +# +working-dir = /mnt/gna0/nbogoych/ems_work + +# specification of the language pair +input-extension = fr +output-extension = en +pair-extension = fr-en + +### directories that contain tools and data +# +# moses +moses-src-dir = /mnt/gna0/nbogoych/mosesdecoder +# +# moses binaries +moses-bin-dir = $moses-src-dir/bin +# +# moses scripts +moses-script-dir = $moses-src-dir/scripts +# +# directory where GIZA++/MGIZA programs resides +external-bin-dir = /home/pkoehn/statmt/bin +# +# srilm +#srilm-dir = $moses-src-dir/srilm/bin/i686 +# +# irstlm +#irstlm-dir = $moses-src-dir/irstlm/bin +# +# randlm +#randlm-dir = $moses-src-dir/randlm/bin +# +# data +toy-data = $moses-script-dir/ems/example/data + +### basic tools +# +# moses decoder +decoder = $moses-bin-dir/moses + +# conversion of rule table into binary on-disk format +ttable-binarizer = "$moses-bin-dir/CreateOnDiskPt 1 1 4 100 2" + +# tokenizers - comment out if all your data is already tokenized +input-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $input-extension" +output-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $output-extension" + +# For Arabic tokenizer try Farasa (download: http://qatsdemo.cloudapp.net/farasa/) +# Abdelali, Darwish, Durrani, Mubarak (NAACL demo 2016) +# "Farasa: A Fast and Furious Segmenter for Arabic" +#input-tokenizer = "$farasa-dir/farasa_moses.sh" + +# truecasers - comment out if you do not use the truecaser +input-truecaser = $moses-script-dir/recaser/truecase.perl +output-truecaser = $moses-script-dir/recaser/truecase.perl +detruecaser = $moses-script-dir/recaser/detruecase.perl + +# lowercaser - comment out if you use truecasing +#input-lowercaser = $moses-script-dir/tokenizer/lowercase.perl +#output-lowercaser = $moses-script-dir/tokenizer/lowercase.perl + +### generic parallelizer for cluster and multi-core machines +# you may specify a script that allows the parallel execution +# parallizable steps (see meta file). you also need specify +# the number of jobs (cluster) or cores (multicore) +# +#generic-parallelizer = $moses-script-dir/ems/support/generic-parallelizer.perl +#generic-parallelizer = $moses-script-dir/ems/support/generic-multicore-parallelizer.perl + +### cluster settings (if run on a cluster machine) +# number of jobs to be submitted in parallel +# +#jobs = 10 + +# arguments to qsub when scheduling a job +#qsub-settings = "" + +# project for priviledges and usage accounting +#qsub-project = iccs_smt + +# memory and time +#qsub-memory = 4 +#qsub-hours = 48 + +### multi-core settings +# when the generic parallelizer is used, the number of cores +# specified here +cores = 4 + +################################################################# +# PARALLEL CORPUS PREPARATION: +# create a tokenized, sentence-aligned corpus, ready for training + +[CORPUS] + +### long sentences are filtered out, since they slow down GIZA++ +# and are a less reliable source of data. set here the maximum +# length of a sentence +# +max-sentence-length = 80 + +[CORPUS:toy] + +### command to run to get raw corpus files +# +# get-corpus-script = + +### raw corpus files (untokenized, but sentence aligned) +# +raw-stem = $toy-data/nc-5k + +### tokenized corpus files (may contain long sentences) +# +#tokenized-stem = + +### if sentence filtering should be skipped, +# point to the clean training data +# +#clean-stem = + +### if corpus preparation should be skipped, +# point to the prepared training data +# +#lowercased-stem = + +################################################################# +# LANGUAGE MODEL TRAINING + +[LM] + +### tool to be used for language model training +# kenlm training +lm-training = "$moses-script-dir/ems/support/lmplz-wrapper.perl -bin $moses-bin-dir/lmplz" +settings = "--prune '0 0 1' -T $working-dir/lm -S 20%" + +# srilm +#lm-training = $srilm-dir/ngram-count +#settings = "-interpolate -kndiscount -unk" + +# irstlm training +# msb = modified kneser ney; p=0 no singleton pruning +#lm-training = "$moses-script-dir/generic/trainlm-irst2.perl -cores $cores -irst-dir $irstlm-dir -temp-dir $working-dir/tmp" +#settings = "-s msb -p 0" + +# order of the language model +order = 5 + +### tool to be used for training randomized language model from scratch +# (more commonly, a SRILM is trained) +# +#rlm-training = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +### each language model to be used has its own section here + +[LM:toy] + +### command to run to get raw corpus files +# +#get-corpus-script = "" + +### raw corpus (untokenized) +# +raw-corpus = $toy-data/nc-5k.$output-extension + +### tokenized corpus files (may contain long sentences) +# +#tokenized-corpus = + +### if corpus preparation should be skipped, +# point to the prepared language model +# +#lm = + +[LM:bilinguallm] +#bilingual-lm + +#required settings +bilingual-lm = "yes" +order = "5" +source-window = "4" +nplm-dir = "/mnt/gna0/rsennrich/tools/nplm-0.3-gpu-experimental/" + +# Add extra settings for ngram extraction or nplm training +#bilingual-lm-settings = "" +#nplm-settings = "" + +# Defaults to 10 +#epochs = 2 + +################################################################# +# INTERPOLATING LANGUAGE MODELS + +[INTERPOLATED-LM] + +# if multiple language models are used, these may be combined +# by optimizing perplexity on a tuning set +# see, for instance [Koehn and Schwenk, IJCNLP 2008] + +### script to interpolate language models +# if commented out, no interpolation is performed +# +# script = $moses-script-dir/ems/support/interpolate-lm.perl + +### tuning set +# you may use the same set that is used for mert tuning (reference set) +# +#tuning-sgm = +#raw-tuning = +#tokenized-tuning = +#factored-tuning = +#lowercased-tuning = +#split-tuning = + +### group language models for hierarchical interpolation +# (flat interpolation is limited to 10 language models) +#group = "first,second fourth,fifth" + +### script to use for binary table format for irstlm or kenlm +# (default: no binarization) + +# irstlm +#lm-binarizer = $irstlm-dir/compile-lm + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### script to create quantized language model format (irstlm) +# (default: no quantization) +# +#lm-quantizer = $irstlm-dir/quantize-lm + +### script to use for converting into randomized table format +# (default: no randomization) +# +#lm-randomizer = "$randlm-dir/buildlm -falsepos 8 -values 8" + +################################################################# +# MODIFIED MOORE LEWIS FILTERING + +[MML] IGNORE + +### specifications for language models to be trained +# +#lm-training = $srilm-dir/ngram-count +#lm-settings = "-interpolate -kndiscount -unk" +#lm-binarizer = $moses-src-dir/bin/build_binary +#lm-query = $moses-src-dir/bin/query +#order = 5 + +### in-/out-of-domain source/target corpora to train the 4 language model +# +# in-domain: point either to a parallel corpus +#outdomain-stem = [CORPUS:toy:clean-split-stem] + +# ... or to two separate monolingual corpora +#indomain-target = [LM:toy:lowercased-corpus] +#raw-indomain-source = $toy-data/nc-5k.$input-extension + +# point to out-of-domain parallel corpus +#outdomain-stem = [CORPUS:giga:clean-split-stem] + +# settings: number of lines sampled from the corpora to train each language model on +# (if used at all, should be small as a percentage of corpus) +#settings = "--line-count 100000" + +################################################################# +# TRANSLATION MODEL TRAINING + +[TRAINING] + +### training script to be used: either a legacy script or +# current moses training script (default) +# +script = $moses-script-dir/training/train-model.perl + +### general options +# these are options that are passed on to train-model.perl, for instance +# * "-mgiza -mgiza-cpus 8" to use mgiza instead of giza +# * "-sort-buffer-size 8G -sort-compress gzip" to reduce on-disk sorting +# * "-sort-parallel 8 -cores 8" to speed up phrase table building +# * "-parallel" for parallel execution of mkcls and giza +# +#training-options = "" + +### factored training: specify here which factors used +# if none specified, single factor training is assumed +# (one translation step, surface to surface) +# +#input-factors = word lemma pos morph +#output-factors = word lemma pos +#alignment-factors = "word -> word" +#translation-factors = "word -> word" +#reordering-factors = "word -> word" +#generation-factors = "word -> pos" +#decoding-steps = "t0, g0" + +### parallelization of data preparation step +# the two directions of the data preparation can be run in parallel +# comment out if not needed +# +parallel = yes + +### pre-computation for giza++ +# giza++ has a more efficient data structure that needs to be +# initialized with snt2cooc. if run in parallel, this may reduces +# memory requirements. set here the number of parts +# +#run-giza-in-parts = 5 + +### symmetrization method to obtain word alignments from giza output +# (commonly used: grow-diag-final-and) +# +alignment-symmetrization-method = grow-diag-final-and + +### use of Chris Dyer's fast align for word alignment +# +#fast-align-settings = "-d -o -v" + +### use of berkeley aligner for word alignment +# +#use-berkeley = true +#alignment-symmetrization-method = berkeley +#berkeley-train = $moses-script-dir/ems/support/berkeley-train.sh +#berkeley-process = $moses-script-dir/ems/support/berkeley-process.sh +#berkeley-jar = /your/path/to/berkeleyaligner-1.1/berkeleyaligner.jar +#berkeley-java-options = "-server -mx30000m -ea" +#berkeley-training-options = "-Main.iters 5 5 -EMWordAligner.numThreads 8" +#berkeley-process-options = "-EMWordAligner.numThreads 8" +#berkeley-posterior = 0.5 + +### use of baseline alignment model (incremental training) +# +#baseline = 68 +#baseline-alignment-model = "$working-dir/training/prepared.$baseline/$input-extension.vcb \ +# $working-dir/training/prepared.$baseline/$output-extension.vcb \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.cooc \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.cooc \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.thmm.5 \ +# $working-dir/training/giza.$baseline/${output-extension}-$input-extension.hhmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.thmm.5 \ +# $working-dir/training/giza-inverse.$baseline/${input-extension}-$output-extension.hhmm.5" + +### if word alignment should be skipped, +# point to word alignment files +# +#word-alignment = $working-dir/model/aligned.1 + +### filtering some corpora with modified Moore-Lewis +# specify corpora to be filtered and ratio to be kept, either before or after word alignment +#mml-filter-corpora = toy +#mml-before-wa = "-proportion 0.9" +#mml-after-wa = "-proportion 0.9" + +### build memory mapped suffix array phrase table +# (binarizing the reordering table is a good idea, since filtering makes little sense) +#mmsapt = "num-features=9 pfwd=g+ pbwd=g+ smooth=0 sample=1000 workers=1" +#binarize-all = $moses-script-dir/training/binarize-model.perl + +### create a bilingual concordancer for the model +# +#biconcor = $moses-bin-dir/biconcor + +## Operation Sequence Model (OSM) +# Durrani, Schmid and Fraser. (2011): +# "A Joint Sequence Translation Model with Integrated Reordering" +# compile Moses with --max-kenlm-order=9 if higher order is required +# +#operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "-lmplz '$moses-src-dir/bin/lmplz -S 40%'" +# +# OR if you want to use with SRILM +# +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64" + +## Class-based Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Koehn, Schmid, Fraser (COLING, 2014). +#Investigating the Usefulness of Generalized Word Representations in SMT +# +#operation-sequence-model-settings = "--factor 0-0+1-1" + +## Interpolated Operation Sequence Model (OSM) +# if OSM has to be enabled with factors then add factors as below. +# Durrani, Sajjad, Joty, Abdelali and Vogel (Mt Summit, 2015). +# Using Joint Models for Domain Adaptation in Statistical Machine Translation +# +#interpolated-operation-sequence-model = "yes" +#operation-sequence-model-order = 5 +#operation-sequence-model-settings = "--srilm-dir /path-to-srilm/bin/i686-m64 --tune /path-to-tune-folder/tune_file" +#Interpolated OSM can only be used with SRILM because of the interpolation script + + +# if OSM training should be skipped, point to OSM Model +#osm-model = + +### unsupervised transliteration module +# Durrani, Sajjad, Hoang and Koehn (EACL, 2014). +# "Integrating an Unsupervised Transliteration Model +# into Statistical Machine Translation." +# +#transliteration-module = "yes" +#post-decoding-transliteration = "yes" + +### lexicalized reordering: specify orientation type +# (default: only distance-based reordering model) +# +lexicalized-reordering = msd-bidirectional-fe + +### hierarchical rule set +# +#hierarchical-rule-set = true + +### settings for rule extraction +# +#extract-settings = "" +max-phrase-length = 5 + +### add extracted phrases from baseline model +# +#baseline-extract = $working-dir/model/extract.$baseline +# +# requires aligned parallel corpus for re-estimating lexical translation probabilities +#baseline-corpus = $working-dir/training/corpus.$baseline +#baseline-alignment = $working-dir/model/aligned.$baseline.$alignment-symmetrization-method + +### unknown word labels (target syntax only) +# enables use of unknown word labels during decoding +# label file is generated during rule extraction +# +#use-unknown-word-labels = true + +### if phrase extraction should be skipped, +# point to stem for extract files +# +# extracted-phrases = + +### settings for rule scoring +# +score-settings = "--GoodTuring --MinScore 2:0.0001" + +### include word alignment in phrase table +# +#include-word-alignment-in-rules = yes + +### sparse lexical features +# +#sparse-features = "target-word-insertion top 50, source-word-deletion top 50, word-translation top 50 50, phrase-length" + +### domain adaptation settings +# options: sparse, any of: indicator, subset, ratio +#domain-features = "subset" + +### if phrase table training should be skipped, +# point to phrase translation table +# +# phrase-translation-table = + +### if reordering table training should be skipped, +# point to reordering table +# +# reordering-table = + +### filtering the phrase table based on significance tests +# Johnson, Martin, Foster and Kuhn. (2007): "Improving Translation Quality by Discarding Most of the Phrasetable" +# options: -n number of translations; -l 'a+e', 'a-e', or a positive real value -log prob threshold +#salm-index = /path/to/project/salm/Bin/Linux/Index/IndexSA.O64 +#sigtest-filter = "-l a+e -n 50" + +### if training should be skipped, +# point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +##################################################### +### TUNING: finding good weights for model components + +[TUNING] + +### instead of tuning with this setting, old weights may be recycled +# specify here an old configuration file with matching weights +# +weight-config = $toy-data/weight_bilinguallm.ini + +### tuning script to be used +# +tuning-script = $moses-script-dir/training/mert-moses.pl +tuning-settings = "-mertdir $moses-bin-dir" + +### specify the corpus used for tuning +# it should contain 1000s of sentences +# +#input-sgm = +#raw-input = +#tokenized-input = +#factorized-input = +#input = +# +#reference-sgm = +#raw-reference = +#tokenized-reference = +#factorized-reference = +#reference = + +### size of n-best list used (typically 100) +# +nbest = 100 + +### ranges for weights for random initialization +# if not specified, the tuning script will use generic ranges +# it is not clear, if this matters +# +# lambda = + +### additional flags for the filter script +# +filter-settings = "" + +### additional flags for the decoder +# +decoder-settings = "-threads $cores" + +### if tuning should be skipped, specify this here +# and also point to a configuration file that contains +# pointers to all relevant model files +# +#config-with-reused-weights = + +######################################################### +## RECASER: restore case, this part only trains the model + +[RECASING] IGNORE + +### training data +# raw input needs to be still tokenized, +# also also tokenized input may be specified +# +#tokenized = [LM:europarl:tokenized-corpus] + +### additinal settings +# +recasing-settings = "" +#lm-training = $srilm-dir/ngram-count +decoder = $moses-bin-dir/moses + +# already a trained recaser? point to config file +#recase-config = + +####################################################### +## TRUECASER: train model to truecase corpora and input + +[TRUECASER] + +### script to train truecaser models +# +trainer = $moses-script-dir/recaser/train-truecaser.perl + +### training data +# data on which truecaser is trained +# if no training data is specified, parallel corpus is used +# +# raw-stem = +# tokenized-stem = + +### trained model +# +# truecase-model = + +###################################################################### +## EVALUATION: translating a test set using the tuned system and score it + +[EVALUATION] + +### additional flags for the filter script +# +#filter-settings = "" + +### additional decoder settings +# switches for the Moses decoder +# common choices: +# "-threads N" for multi-threading +# "-mbr" for MBR decoding +# "-drop-unknown" for dropping unknown source words +# "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000" for cube pruning +# +decoder-settings = "-search-algorithm 1 -cube-pruning-pop-limit 5000 -s 5000 -threads $cores" + +### specify size of n-best list, if produced +# +#nbest = 100 + +### multiple reference translations +# +#multiref = yes + +### prepare system output for scoring +# this may include detokenization and wrapping output in sgm +# (needed for nist-bleu, ter, meteor) +# +detokenizer = "$moses-script-dir/tokenizer/detokenizer.perl -l $output-extension" +#recaser = $moses-script-dir/recaser/recase.perl +wrapping-script = "$moses-script-dir/ems/support/wrap-xml.perl $output-extension" +#output-sgm = + +### BLEU +# +nist-bleu = $moses-script-dir/generic/mteval-v13a.pl +nist-bleu-c = "$moses-script-dir/generic/mteval-v13a.pl -c" +#multi-bleu = "$moses-script-dir/generic/multi-bleu.perl -lc" +#multi-bleu-c = $moses-script-dir/generic/multi-bleu.perl +#ibm-bleu = +#sacre-bleu = "sacrebleu -lc" +#sacre-bleu-c = "sacrebleu" + +### TER: translation error rate (BBN metric) based on edit distance +# not yet integrated +# +# ter = + +### METEOR: gives credit to stem / worknet synonym matches +# not yet integrated +# +# meteor = + +### Analysis: carry out various forms of analysis on the output +# +analysis = $moses-script-dir/ems/support/analysis.perl +# +# also report on input coverage +analyze-coverage = yes +# +# also report on phrase mappings used +report-segmentation = yes +# +# report precision of translations for each input word, broken down by +# count of input word in corpus and model +#report-precision-by-coverage = yes +# +# further precision breakdown by factor +#precision-by-coverage-factor = pos +# +# visualization of the search graph in tree-based models +#analyze-search-graph = yes + +[EVALUATION:test] + +### input data +# +input-sgm = $toy-data/test-src.$input-extension.sgm +# raw-input = +# tokenized-input = +# factorized-input = +# input = + +### reference data +# +reference-sgm = $toy-data/test-ref.$output-extension.sgm +# raw-reference = +# tokenized-reference = +# reference = + +### analysis settings +# may contain any of the general evaluation analysis settings +# specific setting: base coverage statistics on earlier run +# +#precision-by-coverage-base = $working-dir/evaluation/test.analysis.5 + +### wrapping frame +# for nist-bleu and other scoring scripts, the output needs to be wrapped +# in sgm markup (typically like the input sgm) +# +wrapping-frame = $input-sgm + +########################################## +### REPORTING: summarize evaluation scores + +[REPORTING] + +### currently no parameters for reporting section + + diff --git a/mosesdecoder/scripts/ems/example/data/config.hierarchical b/mosesdecoder/scripts/ems/example/data/config.hierarchical new file mode 100644 index 0000000000000000000000000000000000000000..cab132d38c2e37cdca9f567b62e290ae1ab13c0a --- /dev/null +++ b/mosesdecoder/scripts/ems/example/data/config.hierarchical @@ -0,0 +1,227 @@ +################################################ +### CONFIGURATION FILE FOR AN SMT EXPERIMENT ### +################################################ + +[GENERAL] + +### directory in which experiment is run +# +working-dir = /home/hieu/workspace/experiment/data/issues/toy + +# specification of the language pair +input-extension = fr +output-extension = en +pair-extension = fr-en + +### directories that contain tools and data +# +# moses +moses-src-dir = /home/hieu/workspace/github/mosesdecoder +# +# moses binaries +moses-bin-dir = $moses-src-dir/bin +# +# moses scripts +moses-script-dir = $moses-src-dir/scripts +# +# directory where GIZA++/MGIZA programs resides +external-bin-dir = /home/hieu/workspace/bin/training-tools +# +# srilm +srilm-dir = $moses-src-dir/srilm/bin/i686-m64 +# +# irstlm +irstlm-dir = $moses-src-dir/irstlm/bin + +# data +wmt12-data = $working-dir/data + +### basic tools +# +# moses decoder +decoder = $moses-bin-dir/moses_chart + +# conversion of phrase table into binary on-disk format +#ttable-binarizer = $moses-bin-dir/processPhraseTable + +# conversion of rule table into binary on-disk format +ttable-binarizer = "$moses-bin-dir/CreateOnDiskPt 1 1 4 100 2" + +# tokenizers - comment out if all your data is already tokenized +input-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $input-extension" +output-tokenizer = "$moses-script-dir/tokenizer/tokenizer.perl -a -l $output-extension" + +# truecasers - comment out if you do not use the truecaser +input-truecaser = $moses-script-dir/recaser/truecase.perl +output-truecaser = $moses-script-dir/recaser/truecase.perl +detruecaser = $moses-script-dir/recaser/detruecase.perl + + +### multi-core settings +# when the generic parallelizer is used, the number of cores +# specified here +cores = 8 + +################################################################# +# PARALLEL CORPUS PREPARATION: +# create a tokenized, sentence-aligned corpus, ready for training + +[CORPUS] + +### long sentences are filtered out, since they slow down GIZA++ +# and are a less reliable source of data. set here the maximum +# length of a sentence +# +max-sentence-length = 80 + +[CORPUS:nc] +raw-stem = $wmt12-data/nc-5k + +################################################################# +# LANGUAGE MODEL TRAINING + +[LM] + +### tool to be used for language model training +# srilm +lm-training = $srilm-dir/ngram-count +settings = "-interpolate -kndiscount -unk" + +# irstlm training +# msb = modified kneser ney; p=0 no singleton pruning +#lm-training = "$moses-script-dir/generic/trainlm-irst2.perl -cores $cores -irst-dir $irstlm-dir -temp-dir $working-dir/tmp" +#settings = "-s msb -p 0" + +# order of the language model +order = 5 + +# kenlm, also set type to 8 +lm-binarizer = $moses-bin-dir/build_binary +type = 8 + +### each language model to be used has its own section here + +[LM:nc] +raw-corpus = $wmt12-data/nc-5k.$output-extension + +################################################################# +# TRANSLATION MODEL TRAINING + +[TRAINING] + +### training script to be used: either a legacy script or +# current moses training script (default) +# +script = $moses-script-dir/training/train-model.perl + +### parallelization of data preparation step +# the two directions of the data preparation can be run in parallel +# comment out if not needed +# +parallel = yes + +### symmetrization method to obtain word alignments from giza output +# (commonly used: grow-diag-final-and) +# +alignment-symmetrization-method = grow-diag-final-and + +### hierarchical rule set +# +hierarchical-rule-set = true + +### settings for rule scoring +# +score-settings = "--GoodTuring" + +##################################################### +### TUNING: finding good weights for model components + +[TUNING] + +### tuning script to be used +# +tuning-script = $moses-script-dir/training/mert-moses.pl +tuning-settings = "-mertdir $moses-bin-dir" + +### specify the corpus used for tuning +# it should contain 1000s of sentences +# +input-sgm = $wmt12-data/test-src.$input-extension.sgm +#raw-input = +#tokenized-input = +#factorized-input = +#input = +# +reference-sgm = $wmt12-data/test-ref.$output-extension.sgm +#raw-reference = +#tokenized-reference = +#factorized-reference = +#reference = + +### size of n-best list used (typically 100) +# +nbest = 100 + +####################################################### +## TRUECASER: train model to truecase corpora and input + +[TRUECASER] + +### script to train truecaser models +# +trainer = $moses-script-dir/recaser/train-truecaser.perl + +###################################################################### +## EVALUATION: translating a test set using the tuned system and score it + +[EVALUATION] + +### prepare system output for scoring +# this may include detokenization and wrapping output in sgm +# (needed for nist-bleu, ter, meteor) +# +detokenizer = "$moses-script-dir/tokenizer/detokenizer.perl -l $output-extension" +#recaser = $moses-script-dir/recaser/recase.perl +wrapping-script = "$moses-script-dir/ems/support/wrap-xml.perl $output-extension" +#output-sgm = + +### BLEU +# +nist-bleu = $moses-script-dir/generic/mteval-v13a.pl +nist-bleu-c = "$moses-script-dir/generic/mteval-v13a.pl -c" +#multi-bleu = $moses-script-dir/generic/multi-bleu.perl +#ibm-bleu = + +### Analysis: carry out various forms of analysis on the output +# +analysis = $moses-script-dir/ems/support/analysis.perl +# +# also report on input coverage +analyze-coverage = yes +# +# also report on phrase mappings used +report-segmentation = yes + +[EVALUATION:newstest2011] + +### input data +# +input-sgm = $wmt12-data/test-src.$input-extension.sgm + +### reference data +# +reference-sgm = $wmt12-data/test-ref.$output-extension.sgm + +### wrapping frame +# for nist-bleu and other scoring scripts, the output needs to be wrapped +# in sgm markup (typically like the input sgm) +# +wrapping-frame = $input-sgm + +########################################## +### REPORTING: summarize evaluation scores + +[REPORTING] + +### currently no parameters for reporting section + diff --git a/mosesdecoder/scripts/ems/example/data/nc-5k.en b/mosesdecoder/scripts/ems/example/data/nc-5k.en new file mode 100644 index 0000000000000000000000000000000000000000..ea40d25fd5dfcc7e6ca018a59899c979d9a58131 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/data/nc-5k.en @@ -0,0 +1,5000 @@ +Musharraf's Last Act? +General Musharraf appeared on the national scene on October 12, 1999, when he ousted an elected government and announced an ambitious "nation-building" project. +Many Pakistanis, disillusioned with Pakistan's political class, remained mute, thinking that he might deliver. +The September 11, 2001, terrorist attacks on America brought Musharraf into the international limelight as he agreed to ditch the Taliban and support the United States-led war on terror. +Musharraf clamped down on some religious militants operating inside Pakistan and also on those fighting Indian forces in Kashmir. +As a result, Pakistan was rewarded with American financial assistance and arms. +In furtherance of his re-alignment, Musharraf sent the Pakistani army into the tribal areas bordering Afghanistan for the first time since Pakistan's independence. +Operations there against Taliban and al-Qaeda forces brought mixed results. +Although the US viewed Musharraf as an agent of change, he has never achieved domestic political legitimacy, and his policies were seen as rife with contradictions. +For example, he made alliances with Islamist political forces (who in 2004 voted for constitutional changes legitimizing his position and actions). At the same time, he sidelined moderate, mainstream political leaders while claiming that he stood for "enlightened moderation." +A series of ill-planned military operations in the tribal areas further complicated the situation in the volatile border region. +Last March, Musharraf took his boldest step, removing the Chief Justice of the Supreme Court, Iftikhar Chaudhry. +To the surprise of many, the country's legal community organized a nation-wide movement to restore the Chief Justice to his post. +Hundreds of thousands of ordinary people demanded the rule of law and the supremacy of the constitution, emboldening the judiciary and changing the country's political dynamic. +In a historic ruling that Musharraf had little choice but to accept, the Supreme Court itself reinstated the Chief Justice in July. +Subsequently, the energized judiciary continued ruling against government decisions, embarrassing the government -- especially its intelligence agencies. +Government officials were held accountable for actions that were usually beyond the reach of the law, ranging from brutal beatings of journalists, to illegal confinement for "national security." +Musharraf and his political allies tried to adjust to this new reality, but their patience ran out when the Supreme Court took up petitions against Musharraf's decision to run for president. +According to the constitution (originally promulgated in 1973 by an elected parliament), a serving military official cannot run for an elected office. +Musharraf was not ready to give up his military post, but also wanted to be a civilian president. +While he announced that he would leave his military position "if" he was elected president, his track record of reneging on his promises haunted the judiciary. +The proceedings of the court over the last few weeks made Musharraf jittery. The decision of the 11-member bench might easily have gone against him. +Legally cornered, Musharraf has now decided to abandon constitutionality, removing the leading judges of the Supreme Court and provincial high courts and putting curbs on the media. +Lawyers, human rights activists, and political leaders have since been arrested. +There is widespread public resentment in response to these moves. +Rather than taking responsibility for the deteriorating security situation (as evidenced by regular suicide bomb attacks) and the increasing Talibanization of the tribal areas, Musharraf has tried to blame the judiciary and media. +To be sure, in some cases, judicial activism was obvious (though within the realm of constitutional law), and the media also made mistakes; but by no stretch of the imagination can these be linked to religious extremism or support for militancy. +It is unlikely that Musharraf's latest gambit will succeed, as his popular support is at its lowest ebb. +Pakistan's armed forces -- repeated targets of suicide bombers -- have become demoralized. +It is difficult to imagine them standing with Musharraf should civil conflict erupt. +Nor can a weak, embattled, and disoriented Musharraf be expected to fight Islamic militancy effectively or bring political stability to Pakistan. +Opposition political parties are drawing closer together, and former Prime Minister Benazir Bhutto, despite progress in her power-sharing negotiations with Musharraf, has strongly condemned his actions. +Human rights bodies, media associations, and lawyers' organizations are expected to defy the emergency, which will pit them against the security forces. +Terrorists may also benefit by attacking a preoccupied army and political forces aligned with Musharraf. +In the event of sustained protests and potential violence, top military commanders may decide to send Musharraf home -- a decision that would not be unprecedented in Pakistan's chronically turbulent history. +The Making of a Murder in Pakistan +Instead, Bhutto had to pay with her life for courageously challenging extremists of all stripes -- from Al-Qaeda and Taliban to the country's religious political parties and military hardliners. +As heir to Zulfikar Ali Bhutto, the legendary democratic leader who was hanged by General Muhammad Zia-ul-Haq's government in 1979, Benazir emerged as a symbol of resistance at a young age -- but languished in jails and exile in the 1980's. +Z. A. Bhutto's legacy was empowerment of the impoverished and defense of ordinary people's rights amid feudalistic politics and military rule. +Rather than bowing to the military junta, he embraced the gallows. +Hours before his hanging, Benazir was allowed to see her father for the last time, writing in her autobiography: "I told him on my oath in his death cell, I would carry on his work." +She largely lived up to the promise. +Her first stint as prime minister (1988-90) was brief and disorganized. +Lt. Gen. Hamid Gul, the former Inter-Services Intelligence (ISI) chief, confirmed that he sponsored an alliance of right-wing political parties to stop her from getting a parliamentary majority. +Information about Pakistan's nuclear program and ISI operations in Afghanistan were out of her domain. +Her second term in office (1993-96) was longer and better, but her government again fell early, owing to charges of mismanagement and corruption. +In reality, machinations by the intelligence agencies also played a part. +The military had developed an entrenched distrust of her, given her position as a popularly supported pro-Western leader who wanted peace with India. +After almost a decade in self-imposed exile, Bhutoo's return to Pakistan in October gave her a fresh political start. +Pakistan had changed, as military dictatorship and religious extremism in the north played havoc with the fabric of society. +A tentative arrangement with Musharraf, together with Western support -- particularly from the United Kingdom and the United States -- eased her return, which hundreds of thousands of people welcomed, though terrorists greeted her with a string of suicide bombings. +Bhutto's contacts with Mushararf's military government drew criticism, but she remained adamant that a return to democracy was possible only through a transition in which Musharraf would give up his military post, become a civilian head of state, and conduct free and fair elections. +To the dismay of some democratic forces, Bhutto stayed the course even after Musharraf imposed emergency rule on November 3 and removed the country's top judges to ensure his re-election. +Indeed, she even persuaded other important political leaders to participate in the planned January 8 election, which she viewed as an opportunity to challenge religious extremist forces in the public square. +She seized that opportunity by bravely traveling throughout the country, despite serious threats to her life, arguing for a democratic and pluralistic Pakistan. +One can understand why religious extremists like Al-Qaeda and Taliban would target her, and the government claims that it is impossible to defend against a suicide attack. +But Bhutto was reportedly killed by a sharp shooter before the terrorist blew himself up. +So, in the eyes of Pakistan's people, and especially of Bhutto's supporters, the intelligence services, either alone or in collaboration with extremists, finally decided to eliminate her. +Whether or not the government was involved, the fact remains that Pakistan has lost a desperately needed leader. +With Pakistan's future in the balance, the West's help and support will be crucial, but that means recognizing that Musharraf is not the only leader who can resolve Pakistan's myriad problems and manage the war on terror. +On the contrary, by nurturing the current environment of instability and uncertainty, Musharraf himself must be regarded as one of Pakistan's biggest problems. +Exorcising Musharraf's Ghost +Unlike Iraq and Afghanistan, democracy is not new to this 60-year-old state, but ethnic cleavages, weak institutions, and religious extremism in the North are perennially destabilizing. +And, while the new government settles in and establishes its priorities, the West, especially the United States, must reassess the impact of its past dealings with Pakistan. +Pakistan's new prime minister, Yousaf Gilani, is a seasoned politician and, more importantly, has Sufi family roots, which is a good omen because of the Sufi tradition of tolerance. +Gilani unequivocally declared in his inaugural address that fighting terrorism is a top priority, and his first decision was to release from house arrest judges deposed by Musharraf. +The respite from the horrendous spate of suicide bombings since the new government assumed power is similarly heartening. +But the honeymoon period is coming to an end. +Already, in Gilani's hometown of Multan, rioters attacked government offices and banks to protest electricity disruptions. +A couple of well-known opposition politicians, a chief minister and a federal cabinet minister of the previous pro-Musharraf government, were publicly thrashed, raising doubts about government control over law and order in the country. +So far, Musharraf has accepted his diminishing stature quietly -- though he has few other options. +The new political leadership, both inside and outside the parliament, has been carefully avoiding a head-on collision with the president. +Interestingly, in the midst of the political transition, Musharraf embarked on a week-long visit to China to lobby for construction of an oil and gas pipeline between China and the Persian Gulf that would be routed through Pakistan. +The deeper question raised by this proposal is whether Musharraf meant to convey a message to the US that Pakistan's priorities were shifting. +The revival of democratic politics in Pakistan will undoubtedly effect Pakistan-US relations. +Pakistan's military links with America appear to remain on a sound footing, so the strategic alliance with the US is likely to continue, perhaps with some nuanced differences over how to fight the "war on terror." +But Pakistani politicians are bound to be influenced by domestic public opinion, which is generally critical of US policies. +Nevertheless, long-term US interests in the region will be better served if Pakistan's democratic forces successfully establish themselves. +A proposal in the US Senate to increase development and education aid to Pakistan could help in winning the hearts and minds. +Meanwhile, President George W. Bush has said that "if another September 11-style attack is being planned, it probably is being plotted in Pakistan and not Afghanistan." +Whether this American intelligence assessment is based on credible information is unknown. +American election-year politics may also be behind this assertion. +But it is significant that Bush decided to voice this view during Pakistan's political transition. +Pakistan must take this view seriously, regardless of Bush's motivations. +The new government should quickly devise a policy to deal with terrorism. +Recent months have seen dozens of suicide bombings and other terrorist activities -- the price of Pakistan's own past blunders, as well as those of the West. +Afghanistan is a prime example, as is the failure to settle the Kashmir imbroglio with India. +Both failures have strengthened domestic terrorist groups. +Pakistan's government appears to be preparing to talk to some of the extremists in the tribal areas, introduce political reforms, and redouble development efforts. +But reference to "talks" makes the West uncomfortable. +American officials have likened this strategy to negotiating with terrorists, and point to a previous round of negotiations that did nothing to stop violence in the tribal areas. +But the new leadership wants to distinguish between al-Qaeda terrorists and religious conservatives and disillusioned Pashtun youth within Pakistan. After all, the victory of the secular Awami National Party (ANP) in Pakistan's North-West Frontier Province is a strong indication that people there have rejected religious political forces and violence. +This window of opportunity can be expanded through dialogue and reconciliation with those who are ready to disavow extremism and militancy. +The new Pakistani government needs to explain this to the West in order to keep its support. +The US, meanwhile, should end direct military strikes in the area, even if these are conducted with the knowledge and cooperation of Pakistan's military. +Force has never worked with the Pashtun tribes, and there is no evidence that this has changed. +There are real signs that the new government is considered a credible partner in the tribal areas. +It needs to be given time to find a way out of the endless cycle of violence.  +Pervez Musharraf's Long Goodbye +The potential charges are serious: conspiring to destabilize the government that was elected last February, unlawfully removing the country's top judges in November 2007, and failing to provide adequate security to Benazir Bhutto before her assassination last December. +Allying himself with the Bush administration has increased his unpopularity, especially following missile attacks by the United States in Pakistan's tribal areas. +Despite earlier differences on how to deal with Musharraf, Pakistan's leading political parties are now united against him. +Feuding between the Pakistan People's Party, led by Benazir's widower, Asif Ali Zardari, and the Pakistan Muslim League (N), led by former Prime Minister Nawaz Sharif, had given Musharraf a chance to regain some standing after his allies were defeated in the February elections. +American reluctance to abandon Musharraf -- together with prolonged electricity shortages, which made the new government appear incompetent -- also raised his hopes. +Musharraf may be counting on the army, his primary constituency, to bail him out of this crisis. +Though such support remains a possibility, it is unlikely that the army leadership will extend itself on his behalf. +Though a protégé of Musharraf, the army's chief of staff, General Ashfaq Kayani, is a professional soldier for whom the army's institutional interests are more important than the political interests of his former army boss. +Kayani has repeatedly declared that the army will not interfere in political affairs, and that the parliament and constitution are supreme. +Even if the army is tempted to step in on Musharraf's behalf, it has been chastened by political developments during the past year. +The entire legal community arose to demand restoration of the country's judges and reinforcement of the rule of law. +The public's demand for free elections and the resulting creation of a democratic government have forced the military to accept the public will. +The army has also paid a heavy price for Musharraf's approach to the war on terror. Suicide bombers have struck repeatedly at military installations and personnel around the army's headquarters in Rawalpindi. +An increase in deadly attacks on army convoys in the Pakistan-Afghanistan tribal areas has also pushed the army away from Musharraf. +Though the army has reaped a financial windfall from US military aid, and has targeted many foreign militants allied with al-Qaeda in the region, its performance against Pakistani militants has been mixed at best. +Consequently, the prestige of the Taliban and other militant groups operating in the area has grown. +In this context, the army, seeking to avoid sole responsibility for reverses, wants a popular government to take charge of policy. No such government can emerge if the elected parties are unseated. +Nevertheless, there are signs of disagreement on important matters between the government and the army. +The military recently blocked a government move to place Pakistan's infamous intelligence service, the ISI, under the control of the interior minister rather than the prime minister. +Musharraf backed the military's opposition to this reform, gaining some gratitude from military commanders. +During Prime Minister Yousaf Raza Gilani's recent visit to the US, President Bush repeatedly said that his administration supports Pakistan's democracy, a policy since reiterated by Secretary of State Condoleezza Rice. +This indicates that the US will not back Musharraf in any confrontation between him and Pakistan's democratic forces. Most Pakistanis hope so. +Musharraf must assess what will be his legacy. +Rather than trying to face down impeachment and prolonging the crisis, he should recognize that Pakistan cannot afford more instability, and that giving up honorably will bring him some respect. +For the sake of argument, even if Musharraf faces impeachment and by some stroke of luck is saved from being thrown out of office, his future will be bleak. +In March 2009, the current ruling coalition will gain more seats in the Senate, and the government would almost certainly try to impeach him again. +Moreover, any attempt by Musharraf to dislodge the government by using his constitutional authority would trigger another election, the results of which would not be much different from the vote in February. +It is time for Musharraf's friends in the West to press him to serve his country one last time, by avoiding confrontation with his country's democratic forces and calling it quits. +South Asia at War +Regional conflict, involving all of the region's states and increasing numbers of non-state actors, has produced large numbers of trained fighters, waiting for the call to glory. +Within both India and Pakistan, economic disparities and a sense of social injustice have created fertile ground for conflict. +The use and abuse of religious fervor, whether "jihadi" or "Hindu fundamentalist," are striking at the roots of communal harmony across South Asia. +Much of the current trouble can be traced to Afghanistan, whose tragedy could never have remained confined within its designated borders. +The dynamics of the region changed when the Afghan freedom fighters of 1980's were converted into "mujahidin" through a criminal enterprise in which both the West and the Muslim world happily participated. +Pakistan, always insecure about India, became the hub of this transformation. +The West thought it had moved on after the fall of the Soviet empire, but the region -- and increasingly the global community -- continues to pay a heavy price for this unholy project. +The ills of two decades in South Asia can be attributed to the Afghan jihad years: the rise of the Taliban, the dominance of Pakistani-sponsored religious fanatics within the Kashmir freedom movement, and the eventual spread of sectarian conflict within Pakistan. +In Afghanistan, Pakistan's military and intelligence agencies sought "strategic depth" against India. +Moreover, they wanted payback for India's role in supporting the revolt in the 1960's and 1970's that led to Bangladesh's independence from Pakistan. +India is not blameless here. +It was pursuing a two-pronged strategy -- making the argument that all was well in Kashmir (a blatant lie) and supporting ethnic confrontation in Pakistan. +Violent intelligence wars between Pakistan's Inter-Services Intelligence (ISI) and India's Research and Analysis Wing (RAW) have become a brutal reality in South Asia. +Lashkar-e-Taiba (LET, Army of the Pure), a Pakistan-based militant outfit supporting insurgency on the Indian side of Kashmir, was a product of these years. +According to Indian investigators, this group is implicated in the Mumbai attacks. +Pakistan's clampdown on its offices throughout the country essentially confirms this conclusion, though Pakistan is publicly demanding more evidence. +LET was the armed wing of an Ahle-Hadith organization, a South Asian version of Saudi-style fundamentalism, whose purpose was to hit Indian forces in Kashmir. +Though the group was banned by former Pakistani President Pervez Musharraf after the terrorist attacks on the United States of September 11, 2001, some of its operators went underground and others joined Jamaat-ud-Dawa (JuD, Party of Proselytizing) -- an organization that runs religious educational centers and charities. +Given its established linkages with Pakistan's intelligence outfits, the group was never targeted strongly. +In fact, it was even involved in rescue operations on the Pakistani side of Kashmir after the devastating 2005 earthquake there. +What Pakistan's military strategists failed to realize was that groups like LET and JuD had local agendas as well -- converting Pakistan into a theocracy. +Hafiz Saeed, the founder of LET and currently the head of JuD, once proudly argued that: "We believe in the Clash of Civilizations, and our Jihad will continue until Islam becomes the dominant religion." +JuD, along with many other like-minded groups, radicalized thousands of young Pakistanis. +Through its web and print publications, it also routinely challenged the teachings of the Sufi mystics who originally brought Islam to South Asia by promoting pluralism and love for humanity. +Even while demanding strong action against JuD, India must recognize that Pakistan is itself a victim of terror. +Any military confrontation with Pakistan will only empower Pakistani radicals. +India also needs to look inward, as anti-Muslim violence in Gujarat and the activities of Hindu fundamentalist groups have potentially created recruitment opportunities for Muslim extremists within India. +An amicable resolution of the Kashmir conflict will only help improve peace prospects in South Asia. +For Pakistan, a concerted and sustained effort against all extremist groups operating in the country is necessary. +Militants of all stripes must be decommissioned completely and transparently. +Equally important for Pakistan is to expand and reform its public education system and improve basic services so that radical groups cannot lure young people into their educational and welfare networks. +Otherwise, the status quo can gravely threaten Pakistan's -- and South Asia's -- future. +The Fight for Pakistan's Soul +For now, the Taliban are on the run, some with shaved beards and some in burqas , to avoid being recognized and thrashed. +The reason is simple: increasingly, people across Pakistan support the army's action. +This support persists despite the terrible humanitarian cost: more than 1.5 million internal refugees. +This round of fighting was preceded by a negotiated calm, as the government sought to quell militants in Pakistan's tribal areas by striking a deal with the Taliban leader, Sufi Mohammad. +The deal, which instituted a version of Sharia law in the region in exchange for a commitment that militants would lay down their weapons, was blessed by the comparatively liberal Awami National Party (ANP), which governs the North-West Frontier Province (NWFP), where Swat is located. +But the Taliban's assurances of a lower profile were upended by two incidents that exposed its real face. +First, private news channels broadcast across the country a video clip recorded on a cell phone of the public flogging of a 17-year-old Swat girl. +This gave the public a stark sense of what Taliban justice really meant. +Then, Mohammad was interviewed on GEO TV, where he explained his political views. +According to Mohammad, democracy is un-Islamic, as are Pakistan's constitution and judiciary, and Islam bars women from getting an education or leaving their homes except to perform the Hajj in Mecca. +Religious conservatives were stunned. +Leaders of the religious parties rushed to denounce Mohammad's views. +The Pakistani media revisited a famous comment by Mohammad Iqbal, the poet-philosopher who devised the idea of an independent Muslim state in Pakistan. +"The religion of the mullah," he said, "is anarchy in the name of Allah." +Still, it's not over until it's over -- and in the short term a lot depends on the state's capacity to hold the Swat area and re-establish civilian institutions there. +And, even if the state succeeds, re-asserting control over Swat will only be the first step. +The Taliban is spread throughout the NWFP and the Federally Administered Tribal Areas. +"Punjabi Taliban" militants from the fighting in Kashmir against India continue to shuttle between the Punjab heartland and the Northwest Territories, posing another serious challenge to government authority. +In the long-term, however, what really matters is whether the Muslims of South Asia will be able to roll back the spread of Talibanization altogether. +The answer to that question lies within the various Muslim communities of the region, not just in Pakistan. +Afghanistan faces an election later this year. +A clear and transparent vote will make a real difference in establishing the credibility of the Afghan government. +In Pakistan, the democratic transition, after years of military rule, is still not complete. +There is much hope, though, in the vibrancy of the Pakistani media, as well as in the energy that the legal community generated last March in restoring deposed Chief Justice Iftikhar Mohammad Chaudhry to his seat on the Supreme Court. +Then there is the Pakistani army, the country's "super political party." +To a large degree, Pakistan's relations with India, Afghanistan, and the United States depend on the military. +Army commander Ashfaq Kiyani has shown no interest in taking over the state, as his predecessor, General Pervez Musharraf, did. +But the army must accept its subservience to Pakistan's political leadership. +The army command must finally recognize that repeated military interventions have not served the country well. +Most significantly, in the face of martial law and political assassination, Pakistanis have not given up their dream of democracy. +A living example of this is Afzal Lala, a Pashtun politician associated with the Awami National Party who, despite all the threats from the bloodthirsty Tehrik-e-Taliban Pakistan, remained in Swat through the recent fighting. +Democracy will be decisive because it generates investments in education, health, and economic empowerment that reward ordinary voters. +Talibanization gains ground when people lose faith in the capacity of the modern state to improve their lives. +While poor law enforcement needs urgent attention, counter-terrorism is never solely a military affair. +Financial pledges from the US and the "Friends of Pakistan" consortium (the European Union, China, and Japan) are important, but when it comes to investing wisely in development projects, Pakistan's track record is nothing to be proud of. +Effective oversight from donors and Pakistan's private sector will be critical. +Only one condition should be imposed on aid for Pakistan: the first money should be spent on rebuilding all the bombed-out girls' schools in Swat. If need be, the army should guard these schools around the clock. +Cradle of Contradictions +The American-led invasion of Iraq was supposed to begin a process of transformation across the Middle East. +Syrian poet and political analyst Ammar Abdulhamid suggests that a thaw - if not quite change, then perhaps its precursor - is now occurring in Syria. +Life in Syria has never been simple. +The realities, meticulously hidden under a veneer of homogeneity, have always been too complex for even the most discerning of scholars. +The peaceful coexistence between the country's myriad ethnic, religious, and tribal groups is the result of a complex layer of concessions, compromises, tacit agreements, and other pragmatic arrangements perfected over the centuries. +Over the last few months, life has become even more complex, as both the country's ruling elite and civil society advocates seem more bewildered than ever about the country's future. +Each group is focused on determining its particular privileges while preserving the territorial integrity and national unity of a country growing increasingly fractious and fragile. +These developments, of course, follow from the US-led invasion of Iraq, which turned a vague and distant threat into an imposing neighbor whose intentions towards Syria's Baathist regime are anything but friendly. +Consequently, the need for drastic change in the structure and style of a previously reality-impaired regime has finally begun to sink in. +As a result, Syria's various political power centers have embarked on a desperate search for a vision to promote change yet allow the existing order to survive. +Because Syria's rulers have neither the ability nor the know-how to produce such a vision, civil society has been granted some leeway for action. +Clearly, this expansion of civil society's operating arena may even turn into open opposition to Syria's rulers. +The point is to allow for some debate to take place in the hope of producing the sorely needed vision of change. +This will give the outside world the impression that serious change is taking place and that the regime should be given the time to see it through. +Crackdowns, detentions, and illegal trials thus exist hand in hand with a growing tolerance for creative initiatives. +Over twenty NGOs have been formed in the last few months. +Many are charities and often include on their advisory boards one or two members with clear government connections (the daughter of a minister or an army general, or, in a couple of notable instances, the President's wife). +Even so, this development is still significant by Syrian standards, as independent initiatives are traditionally frowned upon. +Of real significance here is the press service, All4Syria (www.all4syria.org), created by the Syrian engineer Ayman Abdul Nour. +The service contains an electronic newsletter that includes Syria-related reports and articles gathered from a variety of sources, often including comments by opposition figures at home and abroad. +In its way, All4Syria has provided an indirect conduit for dialogue between government and opposition, which may not have taken place otherwise. +Although All4Syria's Internet site was recently blocked for unspecified reasons, the newsletter continues to be circulated and Mr. Abdul Nour moves in his usual circles unmolested. +I have been involved with the launch of another initiative, the Tharwa Project (www.tharwaproject.com), which I have long envisioned as one way for the Arab region to address its problems with religious and ethnic minorities. +Although regional in scope and with a colorful international board of advisors, the Tharwa Project (Tharwa means wealth in Arabic) is based in Damascus and will be run from there. +The launch of the Tharwa Project one month ago inadvertently coincided with Kurdish riots that rocked northern Syria. +This, together with the prominence of the advisory board (which includes well-known Egyptian sociologist Saad Eddin Ibrahim, French expert on political Islam Gilles Kepel, and Flynt Leverett, a Brookings Institution Fellow) and the sensitivity of minority rights in general, combined to give the Project national, regional, and international notice. +So far, Syria's authorities have not reacted to the Tharwa Project. +It's probably still too early in the game for that. +But the Project seems to represent the type of activity that can help produce visions for change. +Some in the Syrian government could be aware of this. +Nevertheless, fourteen civil society activists who attempted to organize a special meeting to address the realities of the Kurdish issue in Syria recently received various sentences on charges of working to undermine national unity. +The authorities clearly wish to control the extent of the thaw in Syria's political culture. +But even as such crackdowns continue, more private independent initiatives are bubbling to the surface. +For my colleagues and me, this is the time for hard and continuous work to expand the space of popular participation in the country and region. +We can deliver no judgment at this stage as to where things might be heading. +Everything and anything seems possible. +Still, it is tempting to think that Syria is witnessing a new beginning, and the end of an era whose sins we all bear. +Is Dialogue with Iran and Syria Worth It? +Advocates of the Iraq war lacked an understanding of the complexities on the ground to wage an effective war of liberation and democratization. +As a result, their policies merely ended up eliminating Iran's two major regional rivals: the Taliban and Saddam Hussein's regime. This presented Iran with a golden opportunity to project itself as a regional hegemon, and Iran's leaders are unlikely to let this opportunity slip away. +Advocates of dialogue with the Iranians and their Syrian allies, like former United States Secretary of State James Baker, labor under the delusion that they can actually reach an understanding that can enable a graceful US exit from Iraq and help stabilize that wounded country. +The delusion is based on two false assumptions: that the Iranians and the Syrians can succeed in Iraq where the US has failed, and that the international community can afford to pay the price of ensuring their cooperation. +True, Syria and Iran are playing a major role in supporting Iraqi insurgents, and Syria is still encouraging the trafficking of jihadists and weapons across its borders with Iraq. +But the idea that these activities can be halted at will is naïve. +For one thing, the interests of the Shia communities in Iraq and Iran are not the same. +Iraqi Shia have never accepted Iranian dictates, and many took part in Saddam's war against Iran in the 1980's. +After all, the Iraqi Shia are Arabs, and if they are now willing to coordinate their activities with their Persian counterparts, their main goal will always be to secure an independent course as soon as possible, even while they carry on with their internecine disputes within Iraq. +Iran is in no better position than the US to convince them to resolve their differences. +President Basher al-Assad of Syria faces a similar dilemma. +Although he has opened Syria's border to jihadists and has allowed Saddam's supporters to operate freely there, that choice may not be entirely his. +Syria's aid to Saddam in maneuvering around the United Nations' oil-for food program brought Iraqi money to inhabitants of the border region, who have always been closer in customs, dialect, and outlook to their Iraqi neighbors than to their fellow Syrians. +In the absence of government investment, local inhabitants' loyalty went to Iraqi Baathists who helped improve their lot. +Indeed, even local security apparatuses have been unwilling to comply with dictates from Assad and his clique to seal the borders. +In these cirumstances, neither Syria nor Iran seems capable of delivering anything but mayhem in Iraq. +What, then, would the proposed dialogue between the US and these states achieve other than continue to empower their corrupt yet ambitious regimes? +The story gets more complicated when one considers the UN inquiry into the assassination of former Lebanese Prime Minister Rafiq al-Hariri. +Assad wants nothing more than to see this affair forgotten -- and the proponents of dialogue think that they can give him what he wants in the hope of breaking Syria's alliance with Iran. +But that is merely another erroneous (not to mention amoral) assumption. +The alliance between Syria and Iran dates back more than two decades, and was explicitly reaffirmed by the two ruling regimes as recently as January 2005. +Indeed, the two regimes are now joined at the hip. Assad's recent refusal to attend a summit in Tehran with his Iranian and Iraqi counterparts was a mere tactical move designed to appeal to the proponents of dialogue. +In fact, Iran has invested hundreds of millions of dollars in Syria, and annual bilateral trade tops a billion dollars. +Irani's growing influence over the Syrian security apparatus is well established, and Iran is funding an effort to create Syrian Shia militias to compensate for Assad's sagging support in the army and in the minority Alawite community. +Assad cannot turn his back on all of this. +No deal would be sweet enough, even if it included the return of the Golan Heights. +For Assad and his supporters, survival is more important than sovereignty. +Still, to read the well-known names of commentators and policymakers who are recommending engaging Syria and/or Iran is a testament to how inconsequential and cut off the Western powers have become from the realities on the ground in the world's most turbulent region. +That, it seems, is the price of their arrogance. +Defending America's "Freedom Agenda" +Coming close on the heels of the Annapolis conference, which brought together representatives from all Arab states -- including Syria -- and Israel, many observers regarded our meeting as a signal of the Bush administration's refusal to normalize bilateral relations with Syria or strike any deals or bargains with its regime. +Indeed, these views may not be far off the mark. +For, while talking to us, Bush did not try to mask his disdain for Syria's rulers, and he rejected the possibility of direct talks or any improvement in relations. +As such, the "positive body language" that Syria's ambassador to the United States, Emad Moustapha, said he detected during his brief encounter with Secretary of State Condoleezza Rice during the Annapolis meeting was outweighed by Bush's negative verbal language during our meeting. +And we all know where the buck stops. +For our part, we underscored the worsening human rights situation in Syria. +Indeed, no sooner did our meeting finish, and with the world commemorating International Human Rights Day, the Syrian regime launched a massive campaign of arrests and intimidation directed against some of the country's most prominent dissidents. +Though many were freed within hours, some remain in jail. +This episode also highlights the need for continued emphasis on human rights and democracy promotion. +Whatever the cause of these shortcomings, the lesson that US and Europe policymakers should draw is that the objective -- facilitating democratization and modernization -- remains valid, despite the need for a change in tactics. +Gaza's Crushed Childhoods + + +Ayman works very hard in school and dreams of a future career. But, with 47 students in his cramped classroom and double shifts the norm, his learning environment is very stressful. Home is no refuge: the recent incursion into Jabalia was 200 meters from where Ayman lives. The shooting and shelling so terrorized his five-year-old sister that she still wakes up screaming at night. + +Ayman's experience is all too familiar in Gaza's crowded, crippled neighborhoods, where those who are least to blame for the troubles are suffering the most. +Indeed, among Gaza's 840,000 children -- of which 588,000 are refugees -- Ayman's story is luckier than many. Since the recent escalation of violence that began last month, at least 33 Palestinian boys and girls have been killed and many more injured or maimed -- caught in the crossfire, shot in their living rooms, or struck by explosions in their own backyards. On February 28, four children playing soccer were hit by a missile, which dismembered them so completely their own families could not identify their bodies. +Ayman, his siblings, and all Gaza's children are finding their lives diminished each day -- a cruel, slow suffocation of their spirit and their dreams. +Instead of enjoying expanding horizons, they are trapped in a virtual prison, where things that every child should be able to take for granted are instead being taken away: the right to play, to go to school, to have enough to eat, to have light to study by at night, and to feel safe in their own homes. +The weight of one of the world's longest-running conflicts is resting on their thin shoulders, crushing their childhood and inflicting psychological scars that may never heal. +Palestinians were once reputed to be among the best-educated people in the Middle East; today, after years of violence, isolation, and poverty, their proud tradition of educational excellence has been shattered. +Almost 2,000 children in Gaza have dropped out of school in the last five months. Those who remain must share tattered textbooks and do without crucial resources. + +The January 2008 semester exams at schools in Gaza operated by the United Nations Relief and Works Agency for Palestine Refugees in the Near East (UNRWA) found 50-60% failure rates in mathematics and a 40% failure rate in Arabic -- the children's native language. Despite this, Ayman insists, "I want to be an educated person. I want to be an engineer to build my country." + + +Let the world recall that Gaza's crisis is a manmade disaster. And let the world take note that conditions are worse today than at any time since the occupation began. Seventy-nine percent of Gaza's households live in poverty; eight out of ten depend on food assistance. +Almost half the labor force is unemployed; local industry has collapsed. +Water and sewage systems are failing; garbage is piling up in the streets. +UNICEF is working around the clock to restore a sense of normalcy for Gaza's youth -- developing remedial worksheets to help children keep up with their studies; creating sports and recreation programs in schools; and working with communities to establish play areas where kids can be kids in safety. +UNICEF works with partners to get water, hygiene, and medical supplies to households and health facilities. +And UNICEF-supported counseling teams are spread across the area, helping Palestinian parents and children cope with the burden of stress. +But, while UNICEF is doing all it can to comfort those in the midst of Gaza's madness, only political leaders can bring the dreadful nightmare to an end. It is time for new engagement. The siege must be lifted. +The killing of civilians has to stop, on both sides. +Palestinian and Israeli children deserve to grow up in peace. And leaders on both sides, supported by the international community, must join in the kind of honest dialogue that is the only viable path toward achieving it. +Ayman's father quietly says, "My children are my hope." The children of Gaza are a light in the darkness. They deserve a chance to shine. +Europe's Second Chance in the Balkans +The decision on Kosovo may not imply the prospect of renewed large-scale conflict, but it does raise serious questions for Europe's relations with Russia and the United States, as well as for stability throughout the Balkans. +While the US has a major stake in the outcome, EU countries obviously have the most significant interests in the region, and perhaps this time they will assume a corresponding leadership role. +For at least the next two months, the United Nations Security Council will debate a blueprint for Kosovo's future, arduously worked out during a year of "negotiations" between the governments in Belgrade and Pristina by UN envoy and former Finnish president Martti Ahtisaari. +The bluebrint provides for Kosovo's "supervised independence," maximum protection for Serb and other minorities, and a supervisory role for the EU. +Ahtisaari's proposal is an acknowledgement that no agreement between the parties is possible, and that there is no constructive alternative to Kosovo's independence. +Together with the US, the EU collectively has rallied around the Ahtisaari proposal. +But individually, a number of European countries -- Spain, Greece, Italy, Cyprus, Romania, Slovakia, and Austria -- are skeptical or negative toward Kosovo independence, which raises profound questions about the EU's resolve. +Meanwhile, Serbian Prime Minister Vojislav Kostunica is waging a tireless and remarkably effective diplomatic campaign denouncing both Ahtisaari and his proposal. +He has strengthened the position of many in Europe and elsewhere who are skeptical of challenging a country's territorial integrity or who still claim to believe in a negotiated settlement. +More worrisome is the current uncertainty about whether a shaky Europe will stand up to Russia, upon which Serbia depends to maintain sovereignty over Kosovo. +So far, the Kremlin has resolutely stated that it will accept only a settlement agreed to by both parties, in effect endorsing Serbia's position. +While conveying the possibility of a veto, Russia's current strategy is to delay a Security Council vote as long as possible by prompting a new fact-finding mission to Kosovo, which will most likely be followed by renewed insistence on another effort to negotiate a settlement. +Serbia welcomes delay in the hope that this will stimulate violence by frustrated Kosovars, thereby increasing Europe's opposition to independence and bolstering Serbia's dedication to maintaining the status quo, or, as a last resort, to partitioning Kosovo. +Some European countries apparently believe that they can maintain an EU consensus in support of Ahtisaari's plan but allow Russian foot-dragging on the grounds that delay is not unreasonable and something better may turn up with additional negotiations. +But, by adopting such a stance, they thwart their own envoy and may well stimulate the violence they profess to abhor. +History offers little consolation. +The EU's handling of relations with Serbia in the past only encouraged intransigence. +Instead of repeatedly making clear that Kosovo independence is an indispensable requirement for EU membership -- so important to Serbia's modernization and Balkan stability -- EU leaders like Javier Solana laud Kostunica as a great democratic leader. +They relentlessly but unsuccessfully pressured Montenegro's leaders to remain in a dysfunctional union with Serbia, condoned Kostunica's dubious 2006 referendum on a new constitution enshrining Kosovo as a part of Serbia, and weakened demands for Serbia's cooperation with the International Criminal Tribunal in The Hague. +Realizing Ahtisaari's proposal will depend on EU solidarity and persistence, coupled with strong American support, to manage the vicissitudes of UN debate, lobby skeptical non-permanent Security Council members, such as Indonesia and South Africa, and persuade Russia to abstain rather than exercise its veto. +Many believe that Russia will not risk its relations with Europe and the US, ultimately abstaining if Western countries hold firm. +But Russia appears to be in a Gaullist mood, and has other outstanding issues causing friction with the US and Europe. +Putin's Russia is not Yeltsin's Russia, when the West could simply shunt aside Russian concerns. +Europe is vulnerable on many fronts, particularly in view of its dependence on Russian energy, while America's weakened presidency has diminished US influence in Russia. +If Russia does veto the Ahtisaari plan, the EU's united facade will likely fracture, with many European countries refusing either to join the US in recognizing an independent Kosovo without the UN's blessing or to send a supervisory mission there. +That would open a new and tumultuous era in the Balkans, with more than Kosovo at stake. +Indeed, with the UN and the Western alliance in disarray, the region could fall victim to further Russian policy mischief. +Putin's Balkan Mischief +At every turn, Russia has challenged Western efforts to facilitate Kosovo's independence.  After a year of negotiations between Serbia and Kosovo, President Vladimir Putin's Kremlin rejected the UN mediator's report recommending supervised independence, prevented the Security Council from accepting that report, and insisted on three additional months of negotiations between Serbia and Kosovo -- even after compromise became impossible. +Three weeks ago in the UN Security Council, Russia again insisted that any agreement required the approval of both Serbia and Kosovo, and that further negotiations were necessary. +Russia knows that such negotiations will be fruitless, but believes that another seemingly innocent appeal for more talks would strain EU unity, which appears to be a vital goal for Putin. +Further delay might also generate violence in Kosovo and undermine international support for independence. +Putin's hatred of the Yeltsin era's "subservient" relations with the West fuels his opposition. +But the West's delay in resolving Kosovo's status permitted that opposition to gain traction. +Indeed, the West has consistently misread Russia's intentions on Kosovo. +Many claimed that the Kremlin was delaying the inevitable but ultimately would not block independence. +Now, at the eleventh hour, Russia is sticking to its obstructionist position, and its presidential election in March will likely reinforce anti-Western postures. +So what will Putin do when the United States and most European Union members recognize an independent Kosovo in the coming months without a UN blessing, as they now plan? +It is unlikely that the Kremlin would attempt another military intervention in Kosovo (their effort in 1999 to land troops at Pristina airport was a fiasco), but it has a range of options that must give the West pause. +Kremlin support has made Serbia's nationalist intransigence over Kosovo effective. +Russia has said that it will not give Serbia a blank check, but it will likely support the Serbian government's efforts to isolate and destabilize an independent Kosovo. +While Serbia has resisted partition of Kosovo, Russia would also support a Serbian proposal to partition the Serb-populated north, an effort that would open up a Pandora's box of possible partition of Serbia, Bosnia, and Macedonia. +Such a proposal could get some support in Europe and elsewhere as a seemingly appropriate compromise, even if it would destabilize the Balkans once more. +Russia will certainly continue its diplomatic efforts to persuade the world that negotiations are the only way to solve the problem, and that it cannot be solved outside the UN. +That will attract support among many UN members, including those that have major dissatisfied ethnic minorities. +Russia could also react beyond the Balkans, most obviously in the Caucasus, with its breakaway regions, particularly in Georgia. +A declaration of independence by Kosovo will likely bring a similar declaration from Georgia's breakaway Abkhazia region, which Russia could well recognize. +If Georgia takes military steps to prevent that, Russia's military would likely react with force, creating a situation that could get out of control. +While the US and the EU do not want to worsen relations with Russia, they cannot retreat in the face of Russian obduracy; security in Europe is at stake. +But they must also continue to try to preempt confrontation with Russia on all fronts. +The West should make clear to Serbia that it will react vigorously against any efforts to promote violence or partition Kosovo. +Dispatching additional NATO troops, in addition to the planned EU mission, to supervise Kosovo independence would be helpful. +Putin's Russia, which pays little attention to the rule of law, cloaks its diplomatic effort in the guise of adherence to international law, in particular UN Security Council resolution 1244, which ended the 1999 Kosovo war. +A long overdue diplomatic offensive needs to be launched to undercut Russian arguments as well as remind the world of what happened in Kosovo. +Resolution 1244 does not state that Kosovo must remain under Serb sovereignty, as Russia and Serbia insist, nor does it preclude independence. +Indeed, any reasonable reading of the resolution -- especially in the context of the conflict-ridden Balkans over the past two decades -- would acknowledge that independence would satisfy the resolution's intent and the purpose of sustaining UN supervision of the province for the past eight years.   +In the case of Abkhazia, the West should reiterate the sui generis nature of Kosovo and highlight the tremendous efforts it has undertaken there since 1999. +The world must make clear that Russian military involvement in Abkhazia is unacceptable, while also restraining Georgia's government from reacting militarily to any provocation. +How Russia reacts to Western support of Kosovo's coming declaration of independence will test how far we have progressed since the Cold War. +Through careful management of Kosovo's independence process, and attentiveness to opportunities to improve relations with Russia, the West might mitigate the worst consequences of this confrontation. +Regardless, a new Cold War might just get a little colder. +Palestine's War of Generations +Yasir Arafat may be dead, but his Machiavellian strategies linger. +Ever protective of his position as sole leader of the Palestinian people, Arafat sought to block any means by which a potential rival could challenge him. +But in protecting his position, Arafat also blocked the appointment of a successor in his lifetime. +In the first weeks after Arafat's death, that seemed not to matter. +Mahmoud Abbas, Arafat's longtime deputy and the architect of the Oslo accords, quickly secured the backing of Fatah, the PLO's core body. +A seamless transition appeared possible. +But now Marwan Barghouti, Fatah's leader in the West Bank during the current Intifada, has decided to contest Abbas for the presidency of the Palestinian Authority (PA) from his Israeli jail cell. +Facing economic stagnation and what Palestinian Authority Prime Minister Ahmed Qurei calls "the anarchy of weapons," a succession struggle is the last thing Palestinians need. +Any new leader must spur the economy, enforce the rule of law, fight corruption, unify the PA's security agencies, and preserve public safety -- and he must do so quickly or lose authority. +Abbas (also known as Abu Mazen) represents the Old Guard of Palestinian politics. +But the Young Guard -- those who led the first Intifada (1987-1993), as well as those making their names in the current Intifada -- want a share of power. +Abbas will thus need to find support within this rising generation of nationalist leaders if he is to succeed. +Resolving this generational struggle peacefully will require democratic elections within Fatah for membership of both the Revolutionary Council and the Central Committee. +The Sixth Fatah Congress, the first in sixteen years, will take place in August 2005 and will seek to reconcile the conflict between the Old and Young Guard. +Unlike Arafat and his fellow exiles, Barghouti, the most prominent leader among the Young Guard, grew up under Israeli occupation, and was arrested and detained several times. +Barghouti's popularity also stems from his refusal from the beginning to take any office in Arafat's corrupt PA and its institutions. +Although he was elected to the Palestinian Legislative Council in 1996, Barghouti's reputation soared when the current Intifada began in September 2000. His support for attacks against Israeli soldiers and settlers in the occupied territories, which he argues is legitimate under international law, has earned him immense popularity among Palestinians, but also a sentence of five life terms plus 40 years in an Israeli prison. + +Whether he can be released from prison is now a source of intense speculation. +But Barghouti has begun speaking out from his jail cell on the political situation, and his presence is growing. +His decision to challenge Abbas means that the "secular" forces within the Palestinian movement may be divided at a time when rivals with a robust Islamic agenda -- principally Hamas and Islamic Jihad -- are challenging them. +Both Hamas and Islamic Jihad are highly disciplined organizations, exercising tight control over their political and military wings. +Although Hamas has been weakened by Israel's targeted assassinations of Sheik Ahmad Yassin and Abdel-Aziz Rantisi, it retains strong military capabilities and popular support ranging between 25-30%, making it the second leading faction in the West Bank and Gaza. +Hamas has declared that it will not nominate its own candidate for the PA presidency. +Hassan Yusuf, a Hamas leader who was recently released from an Israeli jail after 28 months of administrative internment, explained to Al-Jazeera that "if Hamas assumed the leadership at this time, it would be vilified and isolated by the international community, and then the people would suffer." +Although Hamas is boycotting the election, many Hamas sympathizers will vote for the candidate most committed to defending the Palestinians' core demands. +Here Hamas members are simply reiterating Arafat's views, which will continue to limit the concessions any new leader can make. +Arafat set forth a blueprint including an independent Palestinian state in the West Bank and Gaza, with East Jerusalem as its capital, and a fair and just solution to the refugee problem. +Changing leaders will in no way alter these conditions for making peace. +So the question is this: who will Palestinians, in particular the Hamas constituency, think is better able to secure these goals, Abbas or Barghouti? +That answer will most likely determine who will be the PA's next leader. +But in the end, Israel will also have to make a choice, because peace will require Israeli concessions, not just compromises from the Palestinians. +Israel must freeze its settlement activity in the West Bank and stop constructing its barrier wall on Palestinian territories. +Israel must also free Palestinian prisoners, remove all checkpoints between Palestinian villages and town, and redeploy its forces to positions held prior to September 28, 2000, in accordance with phase I of the Road Map. +Either Abbas or Barghouti would certainly meet such a demonstration of good faith with good faith of his own. +Waiting on Hamas +The original July 17 election date had put Fatah in a difficult position. +With its public image tarnished by infighting and corruption, Fatah is looking toward its August 4 convention as an opportunity to unify for the electoral campaign. +Hamas is well aware of Fatah's disarray, and accuses Abbas of postponing the legislative elections for partisan, not national, reasons. +Long the backbone of the Palestinian national movement, Fatah has been the dominant faction in the PLO. +Bolstered by the Oslo Accords and the establishment of the Palestinian Authority (PA) in 1994, Fatah's popularity among Palestinians has drained away over the past decade, sapped by charges of corruption and incompetence, as well as by the eruption of the second intifada in late 2000. +Fatah leaders are justifiably worried that their party's current unpopularity and infighting foretell a crushing defeat in the parliamentary election. +By contrast, Hamas has entered electoral politics only recently, but it is fresh from impressive victories in the recent municipal elections in the West Bank and Gaza. +It is therefore expected to perform strongly in the voting for the Legislative Council, particularly in the Gaza Strip. +None of this was acknowledged in Abbas's announcement of the election's postponement. +Abbas said that the decision came at the request of the Palestinian Central Election Commission, after the Commission declared that it could not meet the deadline, because the election law had not yet been approved. +The Commission says that it needs at least two months after the law's adoption to organize the vote. +Although the Legislative Council passed the election law in its third and final reading, Abbas rejected it, a decision that falls within his presidential prerogatives. +Abbas wants all the candidates to be included on national lists, which would allow for proportional representation of all major Palestinian factions and groups. +The Hour of Hamas +Abbas and other PA officials stress the need for "one regime, one legal system, and political pluralism." +Abbas also wants weapons in only one set of hands -- those of the Palestinian Authority. +He successfully persuaded Palestinian militants to hold their fire and show Israelis and the world that dismantling settlements need not involve Israeli-Palestinian violence. +But can he translate this achievement into an extended ceasefire, peaceful elections, and consolidated PA rule in Gaza and the northern West Bank? Failure to do so will lead to yet another defeat for the legitimate Palestinian aim of attaining a viable state. +The diffculty of the task ahead can hardly be overstated. +Hamas has launched an intensive media campaign to appropriate the Israeli withdrawal as a victory of its "armed struggle." +The campaign and its themes reflect an internal fight for control of the Gaza Strip and other PA-administered territories, and stresses Hamas' determination not to be disarmed and to continue the "armed struggle" in the West Bank. +Hamas also revealed two "military secrets" during the evacuation. +The first is a new missile named Sajil, which has a range of 15 kilometers and can reach more Israeli towns and cities. +The second is the "Qassamits," young women who are engaged in combat training. +Hamas timed these revelations with the disengagement to create the impression that its intensifying military strategy had prevailed. +According to one Hamas slogan in the streets of Gaza during the Israeli withdrawal, "Four years of sacrifices weigh more than ten years of negotiations." +Similarly, Mohamed Deif, the leader of Hamas's military wing, asserted on a recent videotape that the lesson of Gaza is that Israel can be forced out of the West Bank, Jerusalem, and Haifa. +All of this is designed to reinforce one point: the Gaza withdrawal belongs to Hamas. +A survey published on a Web site associated with Hamas claimed credit for killing 54% of all the Israelis who died as a result of Palestinians' armed struggle, and this body count is Hamas's claim to success. +In these circumstances, who will administer the evacuated areas until elections are held? +How will tax revenues be divided between those who claim leadership of the resistance and those who claim exclusive legitimacy to govern? +These are not problems that can await resolution. Someone must decide soon, for example, about the division of the land and the apartments to be built in what is already known as "Khalifa bin Zaid City," located on a former Israeli settlement in the Gaza Strip. +There is no answer yet to any of these questions. +Whereas Hamas has demanded establishment of a Palestinian administration to supervise the areas vacated by Israel, Abbas has rejected this, agreeing at most to a "monitoring committee" in which representatives of Hamas will participate. +In any case, there will be no "division of areas" until Israel withdraws completely and the ruins are cleared away. +Then the bitter political struggle will begin in advance of the elections. +No matter what happens the day after Israel's final Gaza disengagement, one cannot escape the fact that Hamas's military options have diminished greatly. +Construction of the separation wall on the West Bank has made it almost impossible for Hamas fighters to reach Israel proper. +In addition, after the reoccupation of the West Bank's cities in April 2002, Israel arrested about 7000 Palestinians who are allegedly associated with Hamas, Fatah, and other Palestinian groups. +Continued armed struggle by Hamas will not be easy. +Hamas knows this, and thus is focusing its attention on the Gaza disengagement, seeking to exploit this victory by demanding a share in the post-disengagement order. +It has agreed to participate, for the first time, in the election of the Palestinian Legislative Council, which is due in January 2006, and it is expected to win a large number of seats. +This would, of course, cement its central role in Palestinian politics -- and it would just as surely exacerbate the challenge facing Abbas. +The Hamas Earthquake +Hamas won 76 of 132 seats in the Palestinian Legislative Council, and can count on support from four independent deputies. +Overall, that's 60% of the seats in Parliament, won in nearly every district in the West Bank and Gaza. +Hamas entered electoral politics only recently, but its massive victory was preceded by wide success in municipal elections. +Hamas's political moment has come. +Under Palestinian law, Mahmoud Abbas, the Palestinian president, must now ask Hamas to form a new government. +For their part, Fatah officials seem unwilling to join a Hamas-led government. +Although Hamas has said that it would seek such a coalition, Fatah's humiliating defeat has left it with little credibility as a governing partner. +So far, Fatah's senior leaders have declared that they will be a loyal opposition in Parliament, leaving governmental responsibility to Hamas. +Instead, they will have to focus on rebuilding and reenergizing Fatah. +Hamas is well aware of the shock that its victory has produced. +If Fatah refuses to join a coalition, Hamas may opt for a government of independents and technocrats. +It is unlikely that Hamas will form a government composed of hardliners. +The political, security, and economic circumstances of the Palestinians require a government focused on solving problems, not ideological purity. +The most urgent challenge facing the new government is rampant lawlessness and anarchy throughout Palestinian society. +Murder, kidnapping, and extortion have reached record heights. +Armed individuals resort to kidnapping to get jobs, free family members from prison, and exact revenge. +Often, the people involved in these crimes belong to local gangs or even to the militias of large clans. +In opposition, Hamas adamantly refused to collect illegal weapons. +Now, it will have to deal with a Palestinian society that is armed to the teeth, with poverty rates reaching 70% and unemployment at 35% . +Having benefited from overwhelming political rejection of Fatah, Hamas will now be judged by how it uses its new authority. +For the first time, a political clock is ticking for Hamas. +Senior Hamas officials are well aware of the challenge, and have promised a complete overhaul of Palestinian public services and administration. +More than anything else, Hamas's success in the coming months will be measured by its response to these issues. +Will Hamas be able to root out corruption and incompetence, and deliver services fairly and efficiently? +How will its election affect Palestine's foreign aid inflows, which form major component of the national budget? +Initial international reaction to the Hamas victory has been severe. +The Bush administration has declared that it will not deal with a Hamas government, because Hamas remains committed to Israel's destruction. +This, indeed, is the language of Hamas's 1988 covenant. +Interestingly, however, Hamas's election platform combined different approaches to the issue of a Palestinian state. +On the one hand, Hamas agreed for the first time to the establishment of a Palestinian state in the West Bank and Gaza, with East Jerusalem as its capital. On the other hand, the platform repeats Hamas's refusal to relinquish even an inch of historic Palestine. +Whether Hamas can actually be transformed into a more moderate organization is impossible to say right now. +But it is clear that Hamas is now vulnerable to public opinion and, as a governing authority, will have to deal with the international response to its victory. +Immediately after the election, a senior Hamas official, Mahmoud al-Zahar, said that Hamas would maintain the cease-fire with Israel begun last February, if Israel did the same. Hamas may be signaling that it will not provoke Israel. +Perhaps its governing responsibilities will push Hamas toward ongoing discussions with the United States and the international community. +In any case, despite the election results, and even without Fatah in government, Abbas remains in charge of negotiations with Israel. +He has quickly called for a revival of peace talks, although Israel, like the US, has refused to deal with Hamas. +Palestinians have entered uncharted waters. +They turned out in droves to vote in an election that former US President Jimmy Carter described as honest, fair and unmarked by violence. +They elected a party which called for "reform and change" in response to a decade of violence and lawlessness. +And Palestinians accepted Hamas's view that negotiations based on the Oslo Accords could not achieve Palestinian rights and political ambitions. +Victory achieved, Hamas will take on the responsibility for the Palestinian side in the Israeli-Palestinian conflict. +With the Palestinians' future at stake -- not to mention the future of Israel and the Middle East -- no one can say if Hamas is up to the task. +Hamas and Fatah at the Crossroads +Since Hamas was founded in the early 1980's, it has refused to come under the leadership of the Palestine Liberation Organization (PLO). +Hamas's victory in the parliamentary election earlier this year -- a democratic watershed -- demonstrated that it had come of age politically. +For the first time in Palestinian history, a religious party is dominant. +But Fatah has not accepted defeat, while Hamas is convinced that elements within Fatah agree with Israeli and American plans to topple the Hamas government. +Abbas remains the Palestinian president, and the Basic Law makes him commander of all Palestinian security forces. +However, while most official security forces remain loyal to him, over the past year Hamas has created an alternative security structure, built around a 4000-member "Operational Force." +Moreover, Hamas has announced plans to recruit 1,500 additional security personnel for the West Bank, Fatah's stronghold. +In recent weeks, the two sides have clashed frequently across the Gaza strip, heightening tensions further. +The confrontations have come at a time when Abbas has been trying to persuade Hamas to moderate its anti-Israel stance and ally with Fatah in a national unity government. +Abbas believes that Hamas's acceptance of negotiations with Israel is the only way to break the international sanctions that are devastating Palestinian society. +Despite this, both sides are building up their forces. +Intelligence reports suggest that Hamas is smuggling weapons and explosives from the Sinai into the Gaza Strip at an accelerated pace. +The United States, Israel, and some Arab governments plan to arm and train forces loyal to Abbas, especially his presidential guard. They want to prepare Abbas's forces in Gaza for a confrontation with Hamas, which they believe is inevitable. +Israel is considering Abbas's request to transfer arms and ammunitions from Egypt and Jordan in hopes of bolstering his loyalist forces. +There is also an American proposal to allow the Badr Brigade -- a wing of the Palestine Liberation Army that is currently stationed in Jordan -- to relocate to the Palestinian territories as Abbas's rapid reaction force in Gaza in anticipation of a feared civil war. +The Badr Brigade is composed of several thousand Palestinians, mostly long-time PLO activists. +As the maneuvering continues, Israel and Egypt find themselves working together to bolster Abbas and Fatah. +With the Gaza Strip in its backyard, Egypt has already mediated several times between Hamas and Fatah, and has been trying, so far unsuccessfully, to arrange a swap of prisoners with Israel following Hamas's abduction of Israeli soldier Gilad Shalit. +But Egypt's government is angry with Hamas for opposing the formation of a coalition government. +Indeed, the seizure of Shalit deepened the rift between Hamas and Fatah, which believes that the abduction was staged in order to sabotage discussions about a national unity government. +More generally, Egypt is concerned that Gaza is becoming politically radicalized and may be transformed into "Hamastan." +This, Egypt fears, would give a boost to its own Islamic radicals, against which the government has long fought. +Egypt also worries about a possible Hamas-Fatah civil war. +Although Hamas has ruled this out, it has shown no hesitation to use heavy force against its opponents. +Likewise, Foreign Minister Mahmoud Al-Zahar of the Hamas-led government says that any dissolution of the government or call for early elections by Abbas would be a recipe for civil war. +Fear of major fighting has already sent many Palestinians into Egypt, leading to the deployment of Egyptian troops on the border to control any mass exodus. +Israel, meanwhile, is worried that Hamas has strengthened its military grip on Gaza, in terms of both fortifications and networks capable of launching Qassam rockets into neighboring Israeli towns. +Israel might not wait for Abbas and his forces, but rather launch a full-scale intervention to weaken Hamas. +Can Hamas and Fatah put aside their differences and form a unity government? +Abbas says that if a coalition government is not agreed upon within the next two weeks, he will dissolve the current government, a move Hamas will not tolerate. +But forming a coalition government is unlikely to ease the tension between Hamas and Fatah. +New confrontations would likely emerge as soon as a new government was formed. +Ironically, the most likely way to avoid large-scale confrontation between Fatah and Hamas is through an Israeli incursion into Gaza. +Facing the Israelis together is the only way that the rival Palestinian groups will postpone their own bloody showdown. +Palestine's House Divided +The Hamas/Fatah face-off marks a dramatic shift in Palestinian politics, whose top priorities until now has been an end to the Israeli occupation and the establishment of an independent state. +It also tremendously complicates peace negotiations, which both the Palestinians and the "Quartet" (the United States, the European Union, the United Nations, and Russia) had premised on maintaining the Gaza Strip and the West Bank as a single territorial unit. +Ironically, these territories were reunited by Israel's victory in the 1967 war, after 19 years of separation. +Previously, Egypt had ruled in Gaza, while Jordan annexed the West Bank. +Under Israel's occupation, and then with the establishment of the Palestinian Authority (PA) in 1994, the territories remained separated geographically, but not politically. +The Hamas takeover in Gaza has -- at least for now -- ended that political unification. +Palestinian President Mahmoud Abbas has now set his conditions for dialogue. +Hamas must withdraw its armed men from all security headquarters they occupied, return power to the legitimate authority, and apologize to the Palestinian people. +Although internal division harms Palestinians' national interest, it is unlikely amid mutual accusations and incitements that dialogue between Fatah and Hamas will be conducted soon. +But the fear that is most consuming Abbas and Fatah is that the conflict with Hamas might spread to the West Bank. +To avoid such a scenario, Abbas has banned all militias and military groups in the West Bank, including his Fatah Party's al-Aqsa Martyrs Brigades. +Abbas has succeeded in convincing Israel to grant amnesty to many Fatah fugitives in the West Bank who will join his security apparatuses. +Abbas has also asked Israel to allow the PLO's Badr Brigade, currently stationed in Jordan, to enter the West Bank. +That would give Abbas an additional 3,000 well-equipped and trained troops. +Following King Abdullah II of Jordan's intervention, Israel appears to have agreed to allow the Badr Brigade's entry with full arms and ammunition. +If Fatah is to become a viable partner for peace and regain its grassroots support, it must reform itself and end the widespread corruption that has undermined its reputation. +Abbas must also share power with more disciplined, younger leaders. +Israel can help Abbas by releasing senior Fatah leader Marwan Barghouti, who is currently serving five life sentences in an Israeli prison. +Owing to his influence with the Fatah militias, Barghouti's release could help Abbas and the discredited Fatah leadership, and boost the younger generation of Fatah leaders. +Israel is divided on how to deal with Hamas, which will also complicate the start of peace talks. +Some Israelis argue that Hamas should be encouraged to establish order in Gaza and provide assurances to its neighbors. +If Hamas can establish order inside Gaza, prevent violence against Israel, and stop missile attacks against Israeli towns and villages, it might avoid Israeli military intervention. +But the dominant view in Israel is that Hamas is a direct threat, unwilling to stop attacks on Israel. +For Israel, last summer's fight with Hezbollah in Lebanon demonstrated the risks of allowing radical Islamists to consolidate their power on Israel's border. +Sooner or later, Israel is likely to deal with Hamas militarily, perhaps even by re-occupying Gaza. +One reason neighboring countries may take part in peace talks is that Egypt and Jordan fear that Hamas could begin actively to support these countries' own Islamic opposition groups. +Moreover, Egypt, Jordan, and Saudi Arabia -- the three main Sunni Muslim regimes -- are concerned that Gaza could provide a base for their regional non-Arab foe, Shiite Iran. +Their fear is based on Iranian support for Islamist groups -- Sunni and Shiite -- in Iraq, Lebanon, and Palestine, as well as its ongoing relationship with Syria. +If the Hamas-Fatah split brings about another territorial partition, Palestinians' national aspirations will suffer their gravest setback in the last half-century. +Although the overwhelming majority of Palestinians reject the use of force to settle this power struggle, many welcome the change in Gaza, where Hamas has cleared the streets of armed militias and restored some law and order. +The Palestinians confront a harsh reality. +Whatever actions are taken to confront Hamas will undermine the Palestinian national project. +A house divided against itself cannot stand, said Abraham Lincoln. +And a Palestine divided against itself will never secure its independence. +Hamas Takes on the Radicals +With Hamas in control for more than two years, the Gaza Strip has long been considered much more traditional and conservative than the West Bank. +Nevertheless, in Gaza's political milieu, Hamas is a moderate Islamic group that opposes al-Qaeda-style extremism. +But such extremist Islamic groups have been gaining support in Gaza, and Hamas has noticed. +The shoot-out in the mosque shows that Hamas will be ruthless in taking them on. +Various Salafi extremist groups have been operating in Gaza for years. +Salafis, whose name is derived from the Arabic phrase for "righteous ancestors," known as "Salaf al-Salih," insist on a return to what they consider the purity of the practices of the first Muslims. +Hamas has, in the past, cooperated with some of the Salafis, assuming they would stand behind Hamas's leadership. +The Army of Islam joined in the raid that abducted the Israeli soldier Gilad Shalit in June 2006. +The group also took responsibility for the 2007 kidnapping of the BBC's Gaza correspondent Alan Johnston, who was later released after negotiations led by Hamas. +The Warriors of God is one of a handful of radical, al-Qaeda-inspired groups to have appeared in the Gaza Strip in recent months, first coming to public attention in June after claiming responsibility for a failed horseback attack on Israel from Gaza. +Their Web site shares images, language, and music with al-Qaeda and other jihadi groups. +In a recent declaration, the group made favorable mention of al-Qaeda leaders Osama bin Laden and Ayman al-Zawahiri. +The Warriors of God demands a pure form of Islamic practice throughout the Gaza Strip, including the implementation of Sharia religious law and a rejection of democracy. +Indeed, the confrontation at the mosque followed the declaration of an Islamic Caliphate in Gaza, a flagrant rejection of Hamas's authority. +Many young men in Gaza have become increasingly radicalized. +Pakistani-style dress has become common, as is the long hair that is thought to resemble the style of the Prophet Mohammad. +At the same time, violence against "law-breakers" is on the rise.  Internet cafes have been bombed, institutions with Christian affiliations burned down, foreign schools attacked, and wedding parties assaulted. +There are substantial ideological differences between Gaza's Salafi al-Qaeda affiliates and Hamas. +As a ruling party, Hamas has insisted that its sole concern is the Palestinian people, not a global Islamic revolution. +Hamas has not imposed Islamic law in the Gaza Strip. +The Salafi groups, however, appear increasingly influenced by the growth of radical al-Qaeda-style extremism in Pakistan, Iraq, and Afghanistan. +While traditional Salafi movements have stayed away from politics, the younger groups see activism and violence as the best means of realizing their goals. +But Hamas's failure to establish and implement Islamic law is not the only issue that rankles. +One of the reasons for these groups' increased appeal is the de facto cease-fire between Israel and Hamas, which has led some in Gaza to charge that Hamas has been neutralized as a resistance force. +With the border closed under Israeli blockade for more than two years, levels of poverty, unemployment, and despair have grown, with young men increasingly interested in joining the global jihad as it comes to Gaza. +Indeed, Hamas' confrontation with Salafi groups comes as Israel is charging that dozens of foreign terrorists have crossed into Gaza from the Sinai Desert to join the violent underground. +Hamas's crackdown thus highlights its desire to maintain control over its conflict with Israel. +The threat of Salafi extremism in Gaza is far from over. +Salafis have threatened to retaliate against Hamas, particularly the security brigades that led the counter-attack on the mosque. +A new Salafi group called the Brigade of Swords of Righteousness has declared its obedience to the Warriors of God, and has warned Gazans to stay away from government buildings, security headquarters, mosques attended by Hamas leaders, and other official buildings. +The group now considers these legitimate targets. +With hundreds of tunnels connecting the Gaza Strip and Sinai, it is very difficult to control the flow of arms, ammunition, and possibly foreign fighters. +Hamas's battle with these radicals, who detonated suicide bombs and killed six Hamas security men during the mosque fight, is just beginning. +Residents are afraid that Gaza could become another Iraq, with bombings and mass killings a daily occurrence. +Hamas will use all means necessary to protect its power, and to break the jihadi groups now spreading in Gaza. +In the process, Hamas hopes to win the international legitimacy that it has long sought. +The Time is Now to Fight Disease +It is possible for a child born just ten years from now to live in a world where AIDS, tuberculosis and malaria are on the wane. +But this can only happen with considerable investment. +Now. +Otherwise, today's grim picture will only get worse. +Each day, these diseases kill 16,000 people—devastating entire communities and plummeting countries deeper into poverty. +Upping the ante could turn the tables. +Recent successes in Brazil against AIDS, in Mozambique against malaria, and in China against TB, show what can be achieved on a global scale with more resources. +There are new ways of directing aid to where it is most needed. +A key instrument is the Global Fund to Fight AIDS, TB and Malaria. +Created in 2002 as a partnership between governments and civil society, the Global Fund is unique in the way it aims to deliver assistance. +Driven by real needs on the ground, projects are designed and implemented by recipients, and its procedures and operations are transparent. +Of late there has been much talk about intensifying efforts to eradicate poverty. +Ahead of the G8 summit in Scotland in July, a coalition of non-governmental organizations has launched the "Global Call to Action Against Poverty," and the UK host has made Africa a top priority. +Building on this momentum, the campaigns for debt relief, trade reform, and increasing aid to poor countries have gained traction. +Yet, while pledges to increase development assistance have soared, short-term funding is woefully inadequate. +Any strategy for raising living standards must include urgent measures that address AIDS, TB and malaria. +Stemming the spread of this deadly trio of diseases is the linchpin in the global fight against poverty. +Unchecked, these diseases not only sap the strength of national economies, but jeopardize peace and security. +Teachers and nurses are dying; police and security forces are being hard hit, and 14 million children have already been orphaned by AIDS. +We now risk failing to meet the Millennium Development GOAL, set out by the United Nations, of reversing the spread of AIDS, TB and malaria by 2015. This failure will make remote any hope of reaching the other Millennium goals in the fight against poverty. +A comprehensive response to AIDS, TB and malaria is needed. +Acting now means less spending in the long run. +Investments in effective prevention, treatment and research in 2005 and 2006 will save millions of lives, lessen the socio-economic impact of the diseases in poorer countries, and remove the need for increased spending on these chronic crises in the future. +The Global Fund plays an important role in this funding environment, providing approximately 66% of all current external funds in the fight against TB, 45% in the fight against malaria, and 20% of all external support to combat HIV/AIDS. +Since the Global Fund was founded three years ago, it has built an impressive track record: approving 310 grants totaling $3.1 billion in 127 countries and disbursing $920 million since 2002. Despite the scope of its mission, it has a minimal bureaucracy, which allows for a flexible response to changing needs. +The Global Fund is not perfect; as with all new organizations, it is experiencing growing pains. +Yet, issues such as procurement policies, trade-offs between efficiency and ownership, and the balance between government and non-governmental organizations as implementing partners are being addressed through the Fund's open and inclusive governance systems. +If the Fund is to live up to its potential it will need $2.3 billion to continue its work effectively in 2005. The first of two replenishment conferences for the Global Fund is taking place this week in Stockholm, with the aim of securing financial pledges to cover grant commitments in 2006-2007, as well as to fill the gap for this year. +Donors have long preached the importance of a funding vehicle such as the Global Fund—one that is needs-driven, relies on local input, and promotes donor coordination. +They now have a chance to make good on their word. +With many battles ahead in the fight against AIDS, TB and malaria, it would be a disgrace if this opportunity is squandered. +Europe's Defense Investment Gap +Foreign policy disputes between Europe, France in particular, and the US are mounting, and not only over the Israeli-Palestinian bloodbath and the conduct of the anti-terrorism war. +But Europe's criticisms, no matter how sound, will not be taken seriously by the US so long as the Continent continues to free-ride on America's defenses, something it has done for half-a-century. +In a bellicose world, a credible voice in the international arena requires a creditable military capability and high-tech military technology. +In both, Europe is lacking. +America's irritation with some of its European allies - Tony Blair's UK being the noticeable exception - is understandable. +In the current fiscal year, the US will spend an additional $50 billion on defense, raising its overall defense bill to $379 billion, more than 3% of GDP. +This sum is, in fact, low by post-WWII standards. +At the time of the Gulf War of 1991, US defense spending was 4.8% of GDP; it was far higher in the 1950s and 1960s. +Europe's commitment to defense tells another story. +Defense spending is 1.6% of GDP in Germany, 2% in Italy, and 1.5% in Spain; only France and the UK reach 3%. +But confining discussion about defense commitment to the percent of GDP spent on the military is insufficient because there are economies of scale in defense spending. +So one would expect that smaller countries will spend proportionally more on defense than larger ones. +Instead, today America alone spends more than most of its NATO allies combined, and defense spending in the US is likely to increase even more in the years to come. +Security and global influence are not the only benefits that come through military expenditure. +About 10-15% of US military spending finances basic research and thus provides a powerful boost to America's high-tech research and development. +The internet, based on thinking and spending made in the 1940's, and the silicon chip, developed in the 1970's, are both products of research funded by the Pentagon. +The war in Afghanistan, which was truly revolutionary in the way it was conducted, proves how new information and communication technology can bring about success with a minimal number of men on the ground and minimal losses. +The Russians fought for ten hard years over the same terrain in Afghanistan. +Lacking comparable technology, they lost tens of thousands of men and were eventually defeated. +At the beginning of the Afghan campaign many military "experts" feared that the US would face a similar fate. +How wrong they were! +Europe lags behind the US in R&D, and its stinginess over defense contributes mightily to a growing high tech "investment gap." +Data concerning patents documents America's advantage: in the late 1990s 56% of all global patents in high-tech fields was granted to US applicants, only 11% to EU applicants. +The connection between R&D and growth is too obvious to doubt that Europe's sluggish economies are a direct result of European backwardness at innovation - and that this in turn may reflect the absence of critical military spending to drive investments in research and development. +The ongoing dispute between Europe and the US over the choice of the military transport plane -to be used to deploy the new 60,000 strong European Rapid Reaction Force - is symptomatic of Europe's problems. +America would like Europe to opt for an aircraft built by Boeing and Lockheed Martin. +Europe is divided: some countries, notably Italy, support the US; others, notably France and Germany, argue in favor of a European plane built by Airbus in a $15 billion publicly funded project. +This is an issue on which Europe should stand up to the US. +The EU should fund the Airbus project and make sure that an important fraction of the money goes into R&D to foster the growth of an industry that is one of the few European high-tech success stories. +But where should the funds needed to pay for this huge investment come from? +In recent weeks European defense ministers suggested that increases in military expenditures should be excluded from the budget constraints imposed by the Euro stability pact. +The idea that a sharp increase in military spending in a (hopefully temporarily) bellicose world should be amortized with some deficits is consistent with sound economic policy, but only if the rest of the budget remains "lean." +This is the case in America, where nobody really worries if increased military spending will create a temporary deficit. +Not in Europe. +An increase in military spending, in conjunction with an enforcement of the stability pact, should bring about a trimming of the non-defense budget: the public sector wage bill and a welfare state grown far beyond the goal of supporting the incomes of the poor, would of necessity need to be trimmed sharply. +For half-a-century Europe has relied on the US for security, while spending its own money on a pricey welfare state. +This can no longer continue - at least not if the EU is serious about playing a leading role in the world. +This is not a pleasant message, but what happened in New York and Washington on September 11 +Argentina: Open Up or Shut Down +"I have an important political mission," Eduardo Amadeo said on being appointed Argentina's ambassador to Washington. "I must explain our transition." +But diplomatic explanations are not what Argentina needs. +It does not need to waste scarce money on diplomacy of dubious value--not when the country lacks an agency dedicated to helping Argentine businessmen sell their goods abroad. +Indeed, the sum Argentina spends on its diplomats is what tiny Ireland spends on its Export Promotion Agency, an institution Argentina never bothered to create. +Instead of talking to fellow diplomats, Argentina's ambassador to the US should talk to US supermarkets, convincing their managers to buy Argentine goods and arranging for them to meet with small businessmen from his country. +He should not be duplicating what Argentina's President and Foreign Minister are capable of doing. +Export diplomacy is important, but export promotion , visiting stores and talking to buyers, is even more vital. +European grocery shops are full of products from Israel, but how often do you see Argentine beef or other goods? +Argentina's economy opened up significantly in recent years, notwithstanding a strong exchange rate, which made exporting difficult. +Total exports doubled in 1991-2001, from US$12 billion to $25 billion, with industrial exports growing from $3 billion to $8 billion. +But the numbers remain very small. +In fact, Argentina is amazingly closed for an economy its size. +Exports do not exceed 10% of GDP, and manufactured goods account for only about a third of total exports. +Brazil, a country eight times the size, exports 12% of its economy's output, and 57% of Brazilian exports are manufactured goods. +Chile exports almost 30% of its output. +Some small European countries come close to 50%. +Little wonder, then, that Argentina's current crisis is so harsh: the portion of its economy that can generate the export revenues necessary to repay foreign debt is too small. +When a country reaches the point that it needs all its exports to service its national debt, and the size of the export sector is fixed, nothing is left to pay for imports. +So imports dry up and the economy stops. +The more open an economy is, the more easily it can avoid this trap. +Of course, all countries eventually overcome crises. +The question is how. +Argentina now faces a choice that is both economic and political. +The path of development that it chooses as it emerges from its crisis will determine the country's future for many years to come. +So it is surprising that this choice is not at the center of the political debate in the campaign for the presidency now underway. +There are two ways out of the current morass. +One is the old model: a recovery in real wages and a resumption of consumption. +Viewed from the despairing perspective of today's crisis, this model seems like a dream. +But if it is implemented, in 3-5 years Argentina will look exactly like the country we have always known: a largely closed economy that remains dangerously vulnerable to external shocks. +The alternative is to capitalize on the unique opportunity that this year's devaluation of the peso offers by making the competitiveness gains last long enough to shift resources into the export sector. +Of course, this will depress real wages and consumption, because the rise in peso revenues will be used instead to finance the investment needed to expand the export sector. +This will lead to the creation of new firms and the retooling of existing ones to make them fit to export. +Eventually productivity gains in a larger export sector will drive up real wages and consumption. +In short, Argentina's economy must open up or risk shutting down. +Policy can help open it up. +By keeping the price of public services frozen, the government would win on two fronts: inflation would be held in check and altered incentives would shift investment from the domestic sector towards exporting firms. +In the old model returns come quicker, but the long-term implications are gloomy, because the economy would remain saddled with the same problems it has confronted for decades. +The alternative is to look forward and asks what type of country Argentines want to leave to future generations. +There should be no doubt as to the answer to this question, except in the minds of politicians who fail to raise it because they refuse to think beyond the coming presidential election. +Perhaps it is not by chance that Argentina has the largest number of psychology students in the world. +If you are a closed and inward-looking country, you are bound to need lots of psychologists. +The minister for education would do her country a profound service if she were to re-allocate resources to courses designed to train export promoters. +Teach young people some basic marketing skills and then send them out to Argentina's embassies. They will work wonders, unlike the cheap talk of Ambassador Amadeo at Washington dinner tables. +The Big Bang of Economic Freedom +Why is it so difficult to implement the deregulation needed to make an economy more competitive? +Why do so many governments try to achieve this end, and why do almost all of them fail? +All citizens stand to benefit from competitive markets for products and services, but more often than not, the broad coalition required to sustain pro-competitive policies never materializes; political support simply isn't there. +Why? +This question is important not only in transition economies and other emerging market countries, but in rich countries as well--in fact almost everywhere, except possibly the US and the UK, which long ago embarked on a process of radical and far-reaching economic liberalization. +New Zealand and Ireland followed suit and their economies have been booming ever since. +Lack of competition is typically due to over-regulation. +Taxicabs in European cities are expensive because the number of licenses is strictly controlled. +With market entry blocked, license owners face little pressure to hold down fares, and the officials who allocate licenses are well placed to collect votes or bribes. +In short, regulation tends to distort incentives, stimulating what economists call rent-seeking behavior: the taxi driver and the license official collect unearned premiums (rents) solely because they can exploit their position as insiders, not because they are more productive. +Notaries are another example of this phenomenon. Public notaries in many countries charge extremely high fees for services that are virtually useless. +Fees are high because the notaries themselves control access to their profession. +Without government regulation (including rules requiring that consumers purchase their useless services), public notaries would not have the position from which they draw rents. +Examples of the benefits of deregulation abound. +The taxi market in Ireland is deregulated, and fares there are cheap. +For some time after US airlines were deregulated, the five-hour flight from New York to Los Angeles cost much less than the half-hour trip from Zurich to Frankfurt. +Similar discrepancies were found in the price of a coast-to-coast phone call in the US and that of a domestic long-distance call in France. +Whereas regulation creates unearned rents for overprotected minorities (taxi drivers, notaries, airline pilots, and telecom or electricity workers), deregulation reduces these rents and redistributes them to the general public. +But because overprotected minorities enjoy privileged access to politicians, it is no surprise that deregulation incites so much fierce--and effective--opposition. +Public utilities are a good example of this. +Whenever a government attempts to liberalize the electricity industry, unions and firms join forces in opposition. +Workers and management oppose deregulation because openness to competition would eliminate their unearned premiums. +The wages of electrical workers are high precisely because they have appropriated a part of the rents created in an uncompetitive electricity market. +Is there a way to weaken this opposition? +What if a government, instead of fighting the electricity industry alone, unleashed an economic "big bang," trying to liberalize most markets at once? +An analogous "all or nothing" procedure was used in the US in the 1980s to close unneeded military bases. +Since 1945, there had not been a single base closure. +Even though the Pentagon itself wanted to close many of them and use the money elsewhere, no measure could be gotten through the Congress, because military bases qualify as "pork" - the favors for their constituents that help congressmen get re-elected -- and, according to old and sacred informal rules, no congressman will ever vote against pork in a colleague's district. +But a plan to close numerous bases passed by an overwhelming majority when the congressional leadership finally agreed to present a single list of bases to be closed; the list could only be voted up or down, without any possibility of amendments. +Good sense triumphed over pork. +The cause of economic liberalization would be greatly advanced by adopting similar strategies. +For example, electricity workers would realize that, as consumers, their gains from lower prices throughout the economy more than compensate them for the loss of rents in their own firms. +The big bang approach gives workers a stake in liberalization and thus makes deregulation politically easier to pursue. +Deregulating product markets has an additional benefit: it facilitates liberalization of the labor market. Evidence gathered by the OECD shows a strong positive correlation across countries between the degree of competition in the product market and the extent to which labor market regulations increase the powers of workers when they bargain with firms. +Bargaining is mostly about the distribution of excess rents between the firm and its workers. +In a competitive industry, where there are no excess rents, there is little to bargain about. +In some cases, however, regulation works in the opposite direction: it keeps the price of public services artificially low, rather than too high. +This is true of railway fares throughout continental Europe, which are subsidized by government. +Here again, winning the battle for deregulation requires convincing consumers that they stand to benefit. +Railway fares will be higher, but taxes will be lower, because only those who actually use trains will pay the costs, rather than the non-traveling taxpayers. +Deregulations of airlines and bus transportation will also create healthy competition for railroads and help keep prices from rising too far. +Piecemeal deregulation is doomed to fail. +Generating sufficient political support to enact reforms that can survive the opposition of vested interests requires attempting to deregulate the entire economy simultaneously, not select industries, one by one. +The key to eliminating inefficient, unproductive subsidies to minorities is to implement tax reductions for all. +Europe's University Challenge +The university systems in the US and Continental Europe couldn't be more different. +Which works better? +The answer is clear: America's by a long shot. +European universities are generally based on three misguided principles: +This system is supposedly more egalitarian than America's system of higher education, which many Europeans look down on as elitist. +In reality, Europe's system typically produces less research, worse students (especially at the doctoral level), and is probably less egalitarian than the US system. +Having taxpayers cover the costs of university education is indeed redistributive, but in the wrong direction--the beneficiaries are most often the children of comfortable European families. +Even taking a generous view, the best that can be said is that the system is neutral insofar as redistribution is concerned, because the wealthiest pay more taxes and use more university services. +In addition to favoring Europe's "haves," this system makes it virtually impossible for self-financed private universities to survive. +In fact, this is probably the true motivation of Europe's free public university system: to maintain the state's monopoly on higher education. +But consider, instead, the US system: students pay for their education and, with part of the tuition these students pay, universities finance scholarships for deserving but poor students. +Such a system is at least as "fair" as Europe's model, and probably more so than one in which taxpayers pay for everybody, including the rich. +Indeed, recent research comparing education in the US and Italy finds that family income is more important in determining a student's success (measured in terms of his salary) in "egalitarian" Italy than it is in "elitist" America. +But competition is as important as financing in determining a university's quality, because competition increases the merit of the product. +This is true in the US system, where public and private universities coexist happily. +The University of California at Berkeley is public. +Stanford University, an hour away down the coast, is private. +Both are among America's finest universities. +Competition between them works because it involves fighting for the best students and offering scholarships to deserving poor ones. +By contrast, Europe's centralization and bureaucratization control over universities produces only mediocrity. +Appointments in European universities are often governed by complex bureaucratic processes that involve countless "judges" chosen from all over a country. +This process is supposedly designed to "guarantee" that the best are appointed. +In reality, however, these judges make it easier for insiders to appoint their friends, rather than for the quality of research and teaching to determine who is hired. +Some countries, take France, are changing their systems by appointing a few academics from other countries onto hiring and promotion committees. +While this is obviously a move in the right direction, it will produce few results. +The best American universities operate their hiring processes internally, relying on outsiders only for expert opinions on the quality of a candidate professor's research. +What produces good appointments is the threat that mediocre professors will make it difficult to attract good students and large research grants. +Europe's tendency to equalize salary and treatment of professors and researchers also reduces the incentive to engage in good research and good teaching. +If the only factor that increases a professor's salary is the passage of time, why make the extra effort to excel? +Of course, love of research and teaching is why many people join university faculties in the first place, but why not give these noble sentiments a helping hand with appropriate financial incentives? +Low salaries are often part of an implicit bargain: in exchange for the bad pay, university administrators close their eyes to lazy teaching and research. +Moreover, if salaries are low, how can university deans stop their faculty members from scouring the country to do lucrative consulting? +The result is bad teaching, lousy research, and absentee professors. +US universities often use aggressive financial incentives and differential treatment of professors to reward good teaching and research. +Also, the private nature of contracts between an American university and its professors creates healthy competition for talent and a flexible and efficient market for scientists. +The result is that it is not uncommon for a bright, productive young professor in America to earn as much, if not more, than older and less productive colleagues. +In Europe, promising young researchers struggle and have to supplement teaching and research with outside jobs, while established professors earn good salaries. +Given these conditions, it should surprise no one that American universities nowadays are increasingly staffed by many of Europe's best scholars. +What is surprising in the face of this brain drain is the power of the lobby of university professors in Europe to block reform. +Old and Aging Europe +When US Secretary of Defence Donald Rumsfeld spoke recently of "Old Europe," he was right, but not in the way he intended. +Europe is indeed old, and growing older. +Across the continent children are increasingly scarce. +Fertility rates (the number of children per woman in the population) have fallen to 1.2% in Germany and Italy. +The rate is even lower in Spain --in fact, the lowest in Europe. +Spain is still a young society, but a society without children is doomed. +The fertility rate for the US, by contrast, is 2.4, and it is 2.1 for the UK. +These differences are extraordinary, particularly in view of the far less generous maternity leave policies that apply in the US and the UK relative to continental Europe. +France stands out on the Continent with a fertility rate of 1.8, which is most likely the result of years of generous tax policies towards large families. +Migration is also an important explanation for these differences. +Higher fertility rates in the US, the UK, and France reflect the large number of immigrant families in each country. +Fertility rates among immigrants are typically higher than in native European or North American families. +But increasing the number of immigrant workers will not necessarily raise fertility rates. +Germany, for example, has a large population of guest workers, but few settle there with their families; most leave their children in their homeland. +An aging population contributes to Europe's poor economic performance. +The old do not work, and a smaller and smaller share of the population (the disappearing young) is taxed to support them. +In turn, the high tax rates needed to support the old discourage the young from working, creating a vicious cycle: ever increasing tax rates on a disappearing labor force, lower growth rates, and fewer resources available to support those that retire at 60 and live into their 90's. +The effects of this are partly offset by the fact that, with fewer children, more women enter the labor force. +But then these women also retire (often at an even younger age than men) adding to the "unsupported" army of retirees. +Compare this with the US, where participation by women in the labor force also is increasing, despite America's higher fertility rate. +Indeed, female participation in the workforce is higher in the US than in the European Union (70% versus 60%). +The saving rates among Europe's old people indicate that they are worried about the dwindling number of workers who can be taxed to support them. +Consider Germany. Any economic textbook will tell you (the famous "life-cycle" model) that the young save for their retirement, while the old spend what they accumulate. +But in Germany, the data seem to suggest a puzzling fact: the old save until their final days. +It is the young who spend. +Even more remarkable is not the level of savings among the old, but how it changes over time. +Recent German surveys have detected a small increase in their savings rate. +Why should old people save? +The most plausible reason is that many now realize that they will live far longer than they anticipated--often spending one-third of their lives in retirement--but that the State may no longer deliver on its promises. +Default is unlikely, although not impossible, on pension benefits. But it is more likely on the provision of health services, by far the most important service for old people. +When you understand that you are likely to live into your late 80's or beyond, and you also understand that the quality of public health services is deteriorating, you save more to take care of yourself. +So why do Europeans have fewer and fewer children? +Indeed, non-working time even for those who hold jobs is increasing, offering ample opportunity to rear children. +Working hours in Europe as a whole fell from 1713 hours per year in 1980 to about 1576 today, with Germans putting in the least number of hours at work. +One explanation often mentioned points to a lack of support, such as public childcare, for mothers raising children. +But, then, why is America's birth rate higher than in many countries in Europe that have much larger public support for childbearing mothers? +High housing costs and imperfection in lending markets are the more likely explanation behind Europe's falling fertility rates. +It is easier for a young couple to borrow and buy a house in the US than in Europe. +Rental markets are also more flexible in the US. +So another dangerously vicious circle seems to be operating: high taxes discourage work, and because fewer jobs are created, fertility is discouraged. +But with fewer children, higher tax rates are needed to support the growing army of the old. +Gunther Grass famously titled one of his novels "Headbirths, or the Germans are Dying Out." +Little could he know how true his fantasy would just three decades later. +Europe's Overdue Reformation +War and its huge cost; the falling dollar; mounting trade and budget deficits; the chicanery that hollowed out companies like Enron and WorldCom; the bursting of the high-tech bubble: capitalism American-style is both under strain and under a cloud. +From left to right, many European intellectuals think that the capitalist game as played by the US is passé. +An active search is on for new models. +Strong on rhetoric and fueled by a wave of anti-Americanism, that search is nonetheless thin on facts. +Stories of corporate malfeasance do, of course, abound in the US. +But it is facile to jump from individual corporate scandals to broad conclusions about the supposed rottenness of the American economy. +A close look at productivity growth (output per hour worked) in the US and Europe shows that US capitalism remains as vital than ever. +Having grown at an average annual rate of just 1.6% since the early 1970's, annual US productivity growth in the non-farm business sector has accelerated to an average of 2.6% in the seven years since 1995, with no sign of a slowdown. +In 2002, productivity grew by 4.8% - an extraordinary result, because productivity normally falls during economic slowdowns. +Now look at Europe. +Annual productivity growth actually slackened in the second half of the1990's, from 2.5% to just 1.3% today. +This productivity gap is often attributed to the "New Economy" that emerged in the late 1990's. +True, many new technologies were developed and first applied in the US. +But technology spreads rapidly: the same Windows or SAP programs are available in all countries, including Europe. +So there must be other differences. +Two candidates stand out: attitudes toward work and corporate governance. +Six OECD countries do better than America in terms of output per hour worked: Norway, Belgium, France, Ireland, the Netherlands, and Germany. +But the rankings change if you make output per capita (a better measure of a country's economic well-being) the standard: here the US comes first, and France and Germany drop, respectively, to 16th and 11th place. +The reason for examining output per person rather than output per hour worked is simple: what determines a nation's wealth is how much each person works, and how many people work. +This is where the US overtakes Europe: fewer people work in Europe than in the US, and those in Europe who do work don't work as much. +Annual hours worked in the US are about 1800, about 1500 in France, and 1400 in Germany. +One reason why Europeans work less is because they pay more taxes, and high taxes are necessary to support those who do not work - an obvious vicious circle. +But something deeper is at work. +Perhaps the Europeans are perfectly happy to work less and enjoy more free time, both in terms of having more vacations during their working age, and spending less time in the active labor force. +This is a legitimate choice, but once made, Europeans should stop looking for scapegoats for slow growth. +For the source of the problem is neither the European Central Bank, nor the Stability Pact. +Europe grows less because it works less - and it should not be surprised if a number of so-called "developing countries" soon catch up with Europe in terms of income per capita. +The availability of new technologies is a necessary, but by no means sufficient, condition to raise a country's standard of living, because there must also be companies that are able to make use of them. In the early 20th century, it took over twenty years for the electrical engine to transform the textile industry. +New machines were available, but firms were not prepared to use them. +To do so required a change in work practices and in the way firms were run. Unions opposed such change, but it also took time for bosses to understand that the way they ran their plants needed to change. +The new economy arrived after a decade of deep transformation within US companies. +During the 1980's, a wave of leveraged buyouts transformed US corporate culture, evidently making bosses more receptive to technological innovation. +Not so in Europe, where the interests of a company's employees and their unions often come before those of its shareholders. +Indeed, at one European newspaper, articles that arrived via e-mail were re-typed by typographers: the technology for transferring them electronically was available, but not the work rules to allow the paper to apply it. +Unions are not the only culprits. +Many European firms have complex ownership structures, with large shareholders whose interests often conflict with those of the company - hardly the best way to take sound business decisions. +This is particularly true in finance and banking. +Whatever the corporate horror stories in US banks, almost no European investment bank remains, and Germany is seriously considering a state-owned "bad bank" to bail out its all-powerful banking giants. +If Europe wants to work less, it must be extraordinarily productive when it does work if it is to keep up with the hard-working Americans. +That is why Europeans should hope that the wave of corporate restructuring and reformation, which many thought would follow inevitably in the wake of the creation of the single market, begins to crest across the Continent and change the way businesses are run. +Hands Off the "Super-Euro" +Three years ago, the European single currency, the Euro, was born at an exchange rate of 1:$1.17, which presumably was deemed to reflect appropriately price levels on both sides of the Atlantic at that time. +The Euro's exchange rate has since endured a roller-coaster ride. +Now, it has returned to almost exactly its opening level. +So why is the European business community claiming that the "super Euro" is bringing calamity down upon their heads? +The answer is that blaming the Euro is an easy way to deflect attention from the true cause of Europe's economic malaise: a surprisingly low level of productivity per capita. +Europe's low productivity reflects a simple statistical fact that fatally undermines relatively high productivity per hours worked: weak participation in the active labor force means that Europeans work a very low number of hours. +It is important to clarify a few fundamental points regarding the Euro/dollar exchange rate, because this is an issue on which confusion--often generated strategically--pervades public debate. +First, nobody knows how to explain or predict the short-term movements (from one day to six months, say) of exchange rates. +A famous academic paper about 20 years ago showed that a random walk was better at predicting short-run exchange rate movements than any fancy mathematical model based on selected economic variables. +That conclusion still applies. +Nobody had a clear idea why the Euro plummeted to almost $0.80 in its first year and a half of trading, and nobody could predict when it would recover. +Some observers attribute the current "high" level of the Euro (and thus low growth in Europe) to tight monetary policy on the part of the European Central Bank (ECB). +But if high interest rates are causing the Euro's rise, why was the dollar appreciating in periods when the US Federal Reserve cut rates aggressively? +People should be wary of commentators who purport to explain "why" a currency's exchange rate is doing what it is doing. +Second, exporters who blame the current level of the Euro for their difficulties should wake up to reality. The current level of the Euro makes prices on both sides of the Atlantic relatively similar. +If an exporting firm is only profitable when the Euro falls to $0.80 or $0.90, it better start increasing productivity fast if it is to survive with the Euro back up at $1.17. +For many years Germany and Japan dominated world exports, and at the time both the yen and the Deutsche Mark were among the "strongest" currencies in the world. +It was innovation, and high productivity, not a weak currency, that enabled German and Japanese goods to conquer the world. +Third, the Euro area is about as open to international trade as the US. +The US economy was flying in the 1990s, when the dollar was strong. +As was true for Germany and the Deutsche Mark and remains true for Japan and the yen, a strong dollar has not historically caused weak US growth. +Europeans are used to thinking of the exchange rate as a critical variable, because they live in very open economies that export close to 50% of their total output. +But most of these exports go to other Euro-zone countries, and are thus unaffected by the level of the Euro. +Exports outside the Euro area claim only 15-16% of Europe's total output, and will be even less when (and if) Sweden and the UK join the Euro. +So commentators, policymakers, and businessmen should stop calling for the ECB to do something about the "strong Euro." +Central bank intervention in the currency market is merely destabilizing, and therefore counter-productive. +The ECB was right to ignore the exchange rate when it fell to $0.80, and it is right to ignore it today when it is close to $1.20. +Most economists believe that central banks should only target inflation, which means cutting interest rates only when the economy slows down and inflation falls--which is precisely what the ECB has been doing. +The bottom line is that Europeans should worry and talk less about the Euro exchange rate, and spend the time they save trying to address their real problems: low productivity, market rigidities, fiscal polices constrained by the Stability Pact, and bankrupt pension systems. +Europe's economic policymakers have enough problems on their plate. They should let the currency markets take care of the Euro/dollar exchange rate. +The Dangers of Gray Power +With rare bipartisan agreement, the Bush administration is proposing a substantial increase in benefits for the elderly. +The proposed reforms may cost US taxpayers more than President Bush's massive tax cut of 2001, and one that implies a very significant redistribution from America's young to its old. +But while many observers have pointed out the risks associated with Bush's tax cuts, and the gaping deficits that have followed, few seem worried about the added deficits that will arise from this gift to the old. +What is happening in America is but more evidence of the vast power exercised by the elderly in our societies. +Similar moves are afoot throughout Europe, where the generosity of state-sponsored pension plans has become unsustainable, but reforming the system is almost impossible politically. +The rise of pensioners' political power results from a multiplicity of factors. +The first is simply that in every industrial society, people are living longer lives and having fewer children. +Combine this with the generous retirement rules that were designed in the 1970's, when the post-war baby-boomers were just about to join the labor market and the welfare state seemed to be free of budget constraints, and you create an entitlement that no one wants to tinker with. +The second factor empowering the pensioners' lobby is that the old are, on average, richer than the young, simply because they have been around longer and so have had more time to accumulate wealth. +Being richer, they can provide more financial support to parties and politicians who will defend their interests than the young, who might want to push for pension reform. +Finally, pensioners have time in their hands, which they dedicate to organize political activities in their own interest. +Two examples: many trade union leaders in Italy are retirees, and retirees account for the largest proportion of the members of the most powerful and militant union, the CGIL. +In the US, retirees tend to vote more than the young. +Indeed, their power in America was perhaps best symbolized by the fact that a relatively few elderly men and women in Florida decided the last Presidential election! +All of this generates a vicious circle: the stronger the political power of pensioners and of older workers, the greater the pressure on government to shorten working lives and increase pension benefits. +This in turn raises the share of voters who are dependent on pensions, and thus the political power of retirees. +In a recent article, Vincenzo Galasso and Paola Profeta from Bocconi university in Milan show that, in Italy, this nexus is now the major obstacle to pension reform. +As time passes, the political support for reform dwindles, at least until the system blows up. +Another aspect that makes reforms difficult is that public pensions systems redistribute income from the rich to the poor because these systems are typically structured as ``defined benefits'' systems. +Pensions are linked to final wages rather than to the actual contribution made by the worker over his or her lifetime. +The extent of this redistribution varies from one country to another, but it is present throughout the OECD, including in the US. +Within the anti-reform coalition, those who favor redistribution, typically young and on the political left, thus often join retirees and older workers. +The result is an extremely powerful political movement that extends from left to right, and includes young and old alike. +The clear losers are young workers, and the future generations who will face the high tax burdens necessary to pay retirees their promised benefits. +The redistribution implicit in many pension systems is often far from ``clean.'' +Many systems entail politically motivated privileges for powerful lobbies. +In Brazil, the pension plan of private sector workers runs a small surplus, but that of civil servants runs an enormous deficit, equivalent to of 4.5% of Brazil's GDP. +French public-sector employees recently brought the country to a standstill when targeted by a reform whose main objective was rather modest: to bring their benefits into line with those in the private sector. +It is encouraging that the French government eventually prevailed, and interesting how this happened. +After weeks of paralyzing strikes, Prime Minister Raffarin's government began a campaign to convince voters that the reform was simply removing the privileges of a small minority. +The point sold well and civil servants found themselves isolated. +Of course, given the political risks, governments should not wait for confrontation with pensioners. +Officials can take two obvious steps to avoid it altogether. +First, increase the age of retirement. +This has two obvious benefits: it cuts the overall cost of the system by shrinking the number of retirees, and thus weakens the constituency that opposes reform. +Second, eliminate the redistribution implicit in the system. +Any redistribution, indeed, should be transparent, and take place via taxation and non pension-related transfers. +Of course, it is easy to understand why this does not happen: when redistribution is transparent, those who pay for it can complain. +When redistribution takes place via the pension system, it is paid for by unborn generations, who have no voice in the next election. +In the meantime, one can only suggest to our grandparents that they compensate their grandchildren by leaving them generous private bequests along with high tax burdens. +Reforming Europe from Below +Look at European history for the past 25 years, and you see that from the late 1970's to the early 1990's the continent was plagued by macroeconomic instability, high unemployment, over-regulated markets--including, importantly, financial markets--unregulated monopolies, and inefficient state-run industries. +Over the past decade Europe has made important progress in restoring macroeconomic stability, but it has been less successful in enacting the micro-level reforms that are necessary to deregulate markets and improve their efficiency. +Why is this? +Is there a lesson in this for the countries of Central and Eastern Europe as they prepare to join the EU? +High inflation and mounting public debt generated a feeling of ``crisis'' in the early 1990's in some EU countries: when one's house is on fire, the costs of doing nothing are too large to continue sitting back and doing nothing. +It took the exchange rate crisis of 1992, for instance, to make Italy's leaders realize that something had to be done about the country's public finance mess. +The fear of being left out of the euro did the rest, by creating a political consensus in favor of taking the right and necessary steps. +Today, Europe's economic house is no longer on fire. +So it has become much harder to break the back of special interests in order to liberalize markets and improve economic efficiency. +Just this past June, for example, France went through a 1968-style month of strikes and street protests only to implement minor pension reforms: the elimination of a few special privileges enjoyed by public sector employees. +In a sense such pusillanimous reforms are the outcome of Europe having become a more ``normal'' place. +Europe simply could not afford the failure of the euro project, so it's leaders did what was necessary. +But no one, it seems, will stop this rich continent from living with slow growth, high unemployment, and inefficient markets. +There is no ``crisis'' associated with that choice--just slow decline. +The Maastricht convergence criteria that led to the euro's creation worked because they were imposed by a multinational agreement and were monitored multinationally. +More importantly, the ``punishment'' for not complying was clear, strong, and certain: exclusion from the monetary union. +None of that threatens Europe today. +So member states have precious little incentive to continue the reform process? +But could something like the Maastricht process be used to implement structural reform? +In a sense, such a process is already at work. +One mechanism that has often been effective at reining in powerful special interests in individual EU states, and thus at implementing structural reforms, is action by the European Commission. +France decided to permit a very mild opening of its domestic electricity market the day before the start of formal proceedings against France at the European Court of Justice for infringement of an EU directive. +Italy ended 70 years of active involvement by the state in industry thanks to the determination of the EU competition commissioners, Karel van Miert and his successor, Mario Monti. +Obviously the European Commission can play a positive role only if it embraces a stance in favor of liberalizing markets and does not fall into the trap of focusing on coordinating national regulation throughout the Union. +Regulation of markets does need to be coordinated; but it also needs to be eliminated in many cases. +Consider Europe's financial markets, which provide an alternative way to break the reform deadlock. +In the old Europe, with fragmented financial markets, Chancellor Gerhard Schroeder's request that Mannesmann remain a German company in the face of a (successful) takeover bid by Vodaphone was tantamount to his following an order by the company's mostly German shareholders. +As it turned out, such action no longer works in a world in which European companies are exposed to the scrutiny of international investors. +European financial markets were, and to some extent still are, dominated by a few large banks. +When the euro was launched banks in Europe accounted for some 80% of total firm financing, as compared to 30% in the US. +Banks are often less prepared to finance a risky, but possibly bright idea. +As lenders, they are also less efficient at monitoring firms than shareholders are. +Before the advent of the euro, local markets were small and illiquid. +The development of modern, highly liquid financial markets has been one of the main benefits of the euro: in a few years, for instance, bank lending in Germany fell from 74% to 32% of the total funds raised by large German companies. +In Italy the share of bank lending as a percent of the total funds raised by big Italian companies fell from 75% to 50%--the difference being made up mostly by emissions of corporate bonds. +The lesson for new member countries from the East is clear: once you are in the Union, the outside pressure to reform decreases: the impetus to reform must be found at home. +Reforms aimed at deregulating financial markets should be the priority. +America's reborn service economy stands in stark contrast to what is found in Europe. +Thanks to the European Commission's tough competition policy, Europe has gone a long way towards making its industries more viable. +In the service sector, by contrast, deregulation has been much more limited, probably because services are much less exposed to international competition, which means that old hidebound rules are easier to preserve. +The outcome is that in Europe, contrary to the US, an increase in the demand for services produces higher rents, rather than more jobs. +Take the simple case of taxi licenses: if the number of taxi licenses is fixed, and consumers start using taxis more often, what you will observe is, at most, an increase in the demand for powerful Mercedes cars that taxi drivers use, not an increase in jobs. +In other words, a good indicator of the state of the US economy is how many people take care of you at a supermarket cashier. +In many European countries, you should instead look at the quality of the stereo in your taxi. +The labor market flexibility in the US service sector is truly remarkable. +During recessions and booms, you can feel the changes in quality and number of waitresses in restaurants, in the size of staffs in shops, in the availability of cleaning services. +In the roaring 1990's, it was almost impossible to find qualified restaurant staff to fill vacant jobs. +During the stagnant economic years of the Bush administration, such workers were plentiful. +In Europe, you simply certainly can't see these differences: waiters, busboys, and cooks all have job security. +Part of the problem here is that temporary, short-term jobs in Europe have a very bad connotation. +The fact that obstacles to short-term employment contracts lead to long-term unemployment traps is often forgotten. +Such perceptions reflect a deeper difference. +By and large, workers and management in Continental Europe retain many of the old class antagonisms that first emerged with the rise of industrialism in the 19 +In the US, such sentiments are much less ingrained in the culture. +Leading 19 +Yet beneath the surface, things are beginning to move in Europe. +Stealthily, the competition authorities of the European Commission are starting to get tougher on professional services (consider, for example, "Competition Policy and Liberal Professions," a statement that can be found on the European Commission's Web site, www.europa.eu.int ). +Once they have brought the cozy cartels of lawyers and accountants into line, other service industries seem destined to be opened up to greater competition, and hence to become great engines of job creation. +Notwithstanding Europe's labor unions, temporary jobs are starting to be accepted. +The American service industry job machine may be on its way across the Atlantic. +Capitalism's High Noon +Europe's Enron-induced schadenfreude is kaput. +Last year's Vivendi and this year's Parmalat scandals have seen to that. +Europe, like America - indeed, like the entire capitalist world - must now become more hawkish in demanding prosecution and punishment of bosses who loot their companies. +American prosecutors in the Enron case have made important progress lately, with some important crooks, like Andrew Fastow, offering both guilty pleas and a willingness to testify against their former colleagues. +Mr. Fastow will go to jail for ten years; those he testifies against will face even longer sentences. +Italian prosecutors seem zealous to make those who looted Parmalat pay a similar price. +But these cases go beyond the companies robbed and the shareholders betrayed. +What is at stake is no less than the perception of the fairness of the market and political support everywhere for market-oriented policies. +Capitalist economies produce inequality, often large ones. +Up to a point, and to the extent that income differences are due to differences in ability, effort, investment in education, etc., they are necessary to providing the correct incentives to invest, work, innovate, and grow. +But the more tainted the market's reputation for fairness, the more average citizens will see income differences merely as the result of corruption, illegal activities, connections with public officials, and so on. +This will increase demands for more regulation and heavy government involvement in the economy, so as to bring unruly and untrustworthy capitalists under greater control. +Moreover, the more that wealth accumulation is viewed as "unfair" (i.e., the result of corruption and illegality), the more pressure for stiff taxation of "ill-gotten gains" will mount. +If any of these populist measures would make markets fairer and better functioning, we would say, "So be it." +Unfortunately, reacting to corrupt businessmen in this way sets in motion a vicious circle: more regulation may lead to even more corruption in order to avoid it; higher taxes on wealth will bring about even more tax evasion, making the system even more tainted. +Sadly, nowadays, things as disparate as highly paid executives, the Enron and Parmalat scandals, contested mergers and acquisitions, stock market volatility, "junk bonds," and asset-price bubbles are all lumped together under the snide heading "cowboy capitalism." +Europeans are particularly prone to see things this way - and to see a powerful government as the sheriff to keep the cowboys from shooting up the town. +This is especially worrisome because Europe has recently begun moving in the right direction by deregulating its markets. +With political support for these changes still shaky, the risk is that opponents may use Parmalat, Enron, Vivendi, and other cases as an excuse to reverse the process. +In many developing countries, weak regulators and a widespread perception of corruption often stand in the way of pro-market reforms; the left (populist or otherwise) can credibly argue that capitalism is "corrupt" and so must be taken under the wing of the government. +This is a big reason why market capitalism has such a hard time taking root in the developing word. +If capitalists are corrupt, how can you convince a poor peasant to believe in the market economy? +He will vote for populist policies. +The result is even more corruption and less growth in a sort of "corruption-induced" poverty trap. +The Parmalat scandal may have been a blow to global capitalism, but in Italy it is hoped that it might sound the death knell for an economic system traditionally based much more on "connections" amongst private groups - and between these groups and the public sector - than on competitive markets. +For Italy, the obvious solution is to strengthen the country's investigative and financial institutions, and improve the design of regulatory agencies, particularly the quality of their personnel. +This, however, will not happen overnight, and in the meantime the demand for more regulation may result in a structure that is heavy, ineffective, and in the end impedes, rather than corrects, market forces. +Supervision inside Italian firms should be strengthened by making sure that a sufficient number of non-executive directors sit on the boards of public companies. +A single independent director would probably have been enough to blow the whistle at Parmalat: there were none on its board. +Similarly, it might help to have accounting firms be selected by minority shareholders or paid by the stock exchange, rather than by a company itself. +Here, even the recent changes in the US have not gone far enough: they prevent accounting firms from also serving as advisors to a firm, but they still leave the decision about remunerating the accountants in the hands of the company, thus creating a perverse incentive to play fast and loose with financial reporting. +It is surprising that while the Italian government is busy redesigning the regulatory and supervisory structure of the country's financial institutions and financial markets, nothing is being said about independent directors and accounting firms. +After all, good sheriffs need active citizens to be in their posses and to serve on juries. +Clean capitalism needs the same sort of widespread engagement. +The Racism of the Welfare State +Two demographic acids are corroding Continental Europe's welfare states. +One is Europe's aging population. The other is the flow of immigrants from soon-to-be new member countries in the European Union and from outside the union. +In our recent book Fighting Poverty in the US and Europe: A World of Difference , Edward Glaeser and I discuss why the welfare state is so much more generous in Europe than in the US. +One important explanation is the much larger racial heterogeneity to be found in the US relative to the more homogeneous Continental Western Europe. +Consider this: according to the World Value Survey, whereas 60% of Americans believe that the poor are "lazy," only 26% of Europeans hold this belief. +Not surprisingly, those who adhere to such beliefs are more averse to redistribution and welfare, and evidence shows that in the US, those who express more "anti-minority" points of view are also more averse to redistribution and more likely to have less sympathy for the poor. +It seems easier for white middle class Americans to consider the poor less worthy of government support if they think of them as different. +To put it crudely, but candidly, indifference comes easy if the poor are assumed to be mostly "black." +This is more difficult in Norway, where rich and poor are white, often blond and tall. +Much experimental and statistical evidence shows that individuals trust and associate more with others of the same race. +Precisely for this reason, political opportunists in the US have long used the race card to discredit welfare and redistribution, from the Jim Crow system that segregated blacks in the South before 1964 to the infamous Reagan-era charge about black "welfare queens" who drive Cadillacs. +Right wing white politicians, predisposed against taxes and redistribution, use the race issue to secure the votes of poor whites, who otherwise might vote differently on purely economic grounds. +Even more fundamentally, racial considerations also influence the nature of America's political institutions. +Proportional representation, widely adopted in Europe in the first decades of the 20th century, was never embraced by the US because it is a system that would allow black representatives to be elected regularly. +In Europe, however, socialist and communist parties imposed electoral systems based on proportional representation precisely because they open the door to representatives of minorities (the communists and socialists themselves). +The few American cities that introduced this system in the Progressive era, between 1910 and 1930, soon abandoned it - or were forced to - in order to stop the election of black representatives. +Today the only US city that uses proportional representation is the leftist bastion of Cambridge Massachusetts. +Proportional representation is widely viewed as one factor that promotes the implementation of redistributive policies by providing a political voice to minorities. +Cross-country evidence shows that the size of public redistributive spending increases with the degree of proportionality in the electoral system. +There is more. Many redistributive programs in the US are run by the 50 states. +States that are more racially heterogeneous have smaller redistributive programs, even controlling for their level of income. +Welfare is relatively plentiful in the overwhelmingly white states of the North and Northwest (Oregon and Minnesota, to cite two examples) and in some states in New England (such as Vermont). +It is lacking in the racially mixed Southeast and Southwest. +Continental Europe is becoming, and will become, more ethnically mixed as more newcomers from Eastern Europe and the developing world arrive. +Xenophobic parties are on the rise across Europe; in some cases, they are in office. +Think of Jörg Haider and the late Pym Fortuyn, or, to a lesser extent, Italy's Northern League. +It will not be long before even Europe's more respectable conservative parties reach for rhetoric about "foreigners coming here to feast off of our taxes." +Simply put, when middle-class Europeans begin to think that a good portion of the poor are recent immigrants, their ingrained belief in the virtue of the welfare state will begin to waver. +Even Europe's leftist intelligentsia now associates crime and urban squalor with immigration. +The step from here to lamenting the high taxes spent on welfare for immigrants is a but a short one. +When this happens - and I say "when," not "if" - there are three possible political responses. One is to close borders to poor immigrants, eliminating any correlation between poverty and immigration. +The second is to somehow restrict welfare benefits to "natives." +The third is to reduce the size of welfare for all because political support for it is declining. +The first strategy is short sighted and the second odious. +I hope that the third one will win out, because it would mean relatively open borders, no discrimination, and less government intervention. +Not to worry: the European welfare state will remain more generous than the stingy American one, but it may become more manageable and less intrusive. +The fact that this will come about because of ethnic "animosity" is sad and depressing. +The silver lining is that the European welfare state does indeed need trimming! +Melting Pot or Economic Meltdown +Worried about an invasion of migrant workers from the new member states of Central and Eastern Europe, the old EU members have erected high barriers in order to prevent the flow. +Despite the open market rhetoric of the EU, for most citizens of the new member states free labor mobility will not be a reality for the next seven years at least. +This is a politically understandable but flawed policy. +One of the key achievements of the European Union is mobility of goods and inputs. +Without this, what kind of a union would the EU be? +Otherwise, what, precisely, do the new countries get out of membership other than the nagging intrusions of the Brussels bureaucracy? +Given the high hopes that preceded ascension to the EU, and the stingy attitude of the Union to its new members, it should not surprise anyone if an anti-European reaction soon starts to brew in these countries. +So the cure is as bad as the disease: discrimination against the new members creates political problems of its own for the Union. +The real question is whether there is a disease at all. +Should Western Europe really be worried about an enormous flow of new immigrants? +In fact, estimates of potential migration flows from East to West are relatively small. +According to An agenda for a growing Europe , a report published by Oxford University Press in 2004 for the European Commission, 250,000 to 450,000 workers will go West during the first one to two years, followed by around 100,000 to 200,000 annually thereafter. +Over the first decade, the cumulative number of migrants might amount to between 1.5 and four million, that is, 2.4% to 5% of the total population in the new member states - and a tiny fraction of the total population in the current Union. +Aging populations and lower fertility rates in the new member states might result in even smaller flows. +There is another, less obvious, reason why the EU's policy on migration is flawed. +As Mircea Geoana, Romania's bright young Minister of Foreign Affairs, recently put it: "If the EU waits another seven or ten years before it opens up, the workers it will receive from my country will be the least qualified, peasants and individuals with low human capital: by then, the doctors, the architects and the engineers will all have migrated to the United States." +Indeed, this is precisely what happened with the Russians: the most qualified have already gone to the US. Europe has been unable to attract much more than a few disreputable oligarchs, who migrated to the French Riviera, and a handful of lively street singers. +Western Europe is increasingly inhabited by aging populations that have lost the incentive and enthusiasm to work hard, take risks, and be ambitious. +Without an inflow of new blood and new ideas, the old Continent's economic future looks bleak. +Just look at the US: where would America be if it had introduced barriers to entry to various waves of new immigrants and remained confined to Anglo Saxon settlers? +To be sure, managing a melting pot is not easy, and many of America's social problems are related to difficult race relations. +But New York and Los Angeles, the two most ethnically diverse cities in the US, are also America's leaders in business and in the arts. +Nothing comes easy in this world: if the Union cannot manage a multicultural society in Europe, then it ought to prepare itself for permanent stagnation. +So long as the Union's borders remain closed, there is also a risk that foreign investment will fly over Western Europe and land in Central and Eastern Europe, where people are willing to work longer hours, market regulations are less intrusive, and human capital is relatively high, because Communist schools were good at technical training. +These countries have opened their markets to foreign investors - and foreign investors are responding eagerly. +Given Western Europe's growing need for labor in the years ahead, the question is not whether to have immigration, but only where that immigration is going to come from. +Will it be the legal immigration of easily assimilated people from Central and Eastern Europe, or illegal immigration from the Maghreb? +Europe on Holiday +Currently, the average number of hours worked per person aged 15 to 25 each year in France and Germany is about 50% lower than in the United States. +Other European countries (for example, Italy and Spain) fall somewhere between these poles. +Although some Americans always like to boast about their superior work ethic, this disparity in working hours between the US and Europe has not always existed. +Indeed, until the mid-1970's, the number of hours worked on either side of the Atlantic was roughly the same. +From the mid-1970's on, however, Americans continued working more or less the same number of hours, while Western Europeans began working less and less each year. +If Western Europe needs an explanation as to why its rate of economic growth is lagging behind the US, it need look no further. +The average number of working hours per person depends on a variety of factors: +• the level of participation in the labor force; +• the number of vacation days workers have; +• the number of hours worked in a "normal" week, i.e., with no vacation. +Virtually all the difference between the US on one side and France and Germany on the other are due to the first two factors, each with roughly equal weight. +So, lower participation in the labor force explains half of the difference, and longer vacations for those who do work accounts for the other half. +The importance of vacation time should come as no surprise to anyone who has experienced Europe's deserted cities in August, the three-week vacation "bridges" in April and May in France and Italy, the "rush hours" that take place every Friday at 2 PM in German cities, and crowded ski slopes in February due to winter school vacations. +But knowing "how" Europeans work less is one thing; knowing "why" Europeans work less than Americans is another. +One view is that Americans are perceived (and like to see themselves) as Calvinist workaholics, whereas Europeans like to think that they know how to enjoy life's pleasures. +As a European working in the US, I admit that I do take many more vacations than my American colleagues. +So there may be something in this "cultural" explanation. +But why did this start around 1973? +A second argument attributes the difference to income taxes, which, in fact, have increased significantly in Europe since the 1970's, while in the US income taxes fell from the early 1980's onward. +Income taxes certainly must affect willingness to work. +They may not change by much the number of hours worked by the main breadwinner in a family (typically a man), but they do influence the participation of women in the labor force. +After all, why work, when your after-tax salary barely pays for childcare and household help? +But even this is not a sufficient explanation, because studies of how the supply of labor responds to tax changes suggest that something else must explain the enormous gap between US and Europe, especially France and Germany. +For the age group over 50, the structure of pension systems is clearly a major factor. +It was and remains much more profitable to retire earlier in Europe than in the US. +Why should a Frenchman or Italian in his early sixties work today, when in the 1990's he could have retired in his mid-fifties with 80% or more of his last working-age salary? +For women, the retirement age in the mid-1990's was even lower. +Public sector employees had even more advantages. +Nor is that all. +In the 1980's and 1990's, many European labor unions, in response to rising unemployment, adopted the policy of "work less, work all." +In other words, they obtained shorter hours (i.e., more vacations) in order to keep employment up. +The problem is that total compensation did not go down in proportion to the shorter hours, thus leading to an increase in pay per hour. +Lower productivity and higher unit labor costs eroded firms' willingness to hire, leaving Europe with chronically higher unemployment than in the US. +Today's debates about growth in Europe are full of buzz words like "knowledge-based society," "technological progress," and "investment in education." +Europeans certainly need something to compensate for a short working life with many vacations. +But much of this discussion is merely a form of "political correctness." It is more reassuring - and "feels better" - to tell Europeans that growth is sluggish because society is not sufficiently knowledge-based, rather than pointing to the trade-off between vacations and growth. +Europeans tend to prefer vacations over growth. +Personally, I love taking more and more vacations. +But I cannot (and do not) then complain if my income does not grow faster and faster. +The Inevitability of Chinese Democracy +Fifteen years ago, Fang Hongin was protesting in Tienanmen Square. +A few years ago, in Beijing, he ran one of China's most popular TV shows, each week testing the limits of the authorities' indulgence. +Today, he runs Dragon TV, Shanghai's leading station, and advertisements featuring him hang from the city's skyscrapers. +Hu Shuli belongs to the same generation: the journalist whom the Economist magazine calls "China's most dangerous woman," moved from her first job, with the Party press, to editing Caijng , a business magazine that runs stories on corruption, exposing businessmen and public officials. +It would be a mistake, however, to interpret these experiments with a free press as signs that democracy in China is near. +The Party allows Caijng to expose corruption because this helps it to stop China's most serious disease. +"The first civil right is getting out of poverty," says Yongtu Long, one of China's WTO negotiators. +"In 15 years, we got 200 million people out of poverty; 700 million Chinese today have access to electricity, an unknown luxury 15 years ago. +This is why our priority is growth: everything else, frankly, is less important." +Growth, however, does only mean getting people out of poverty. +Twenty-five years ago, China had a more egalitarian society than Sweden; today there is vast inequality between city and countryside, between the western provinces and those bordering the Pacific ocean, and within cities, which attract a constant flow of former peasants looking for jobs. +Indeed, China's income distribution today looks more like that of Brazil than that of Sweden. +But more inequality also means more opportunities: becoming rich today in China remains very difficult, but it is no longer impossible - just walk into one of the pubs of downtown Shanghai. +Inequality can be accepted, but not if it is the fruit of corruption, and this remains China's foremost social problem, which the Party has been unable to eradicate, despite Caijng 's exposés and the death penalty. +Can China really do without democracy? +A few years ago, Fareed Zakaria, then an editor of Foreign Affairs , argued against the priority normally given to democracy, simply defined as the possibility of choosing political leaders through free elections. +The world is full of democracies, he argued, that routinely violate human rights. +"Elections are of little use if democratically elected governments limit the freedom of the press and the independence of the judiciary." +"There is certainly more freedom in Shanghai than in Moscow," says a professor from Tsinghua University in Beijing, echoing Zakaria. +She is probably right, although India reminds us that sometimes elections are a powerful and effective mechanism to correct the path a country has taken. +India's economy is growing almost as fast as China's, with a similar increase in inequality and, to some extent, corruption. +But Indian voters have turned against this model. +As a result, India's economy is likely to slow. +It is hard to tell whether this is good or bad. +It is probably bad in the short run, but who knows about the longer term? +The point is that questions such as, "Are we creating too much inequality?" cannot even be asked in China. +The upshot is that whenever a problem gets out of hand, the turnaround comes too late and is dramatic. +This is why China cannot shelve the problem of its transition to democracy. +Democracy is not only a mechanism to help prevent strategic mistakes. +There is a more mundane reason why many, even within the Party, think that a democratic transition has become inevitable: the Party is simply losing control of the country. +Deng Xiaoping was the last Chinese leader to possess undisputed authority to decide on public policy. +Today, the Party's political bureau has more than 20 members and each resolution requires unanimity. +More important decisions require an even larger consensus, involving up to 3,000 people. +For example, the Party's main current activity is drafting the documents that will be approved at the next congress, scheduled for the autumn of 2007. +The difference between the economy's pace and that of the Party means that the country increasingly runs on its own. +As in the past, when a dynasty weakens, the provinces make their own decisions. +Even slowing the economy is hard: lacking an efficient financial system, credit growth must be controlled directly through banks. +But the director of the Guangzhou office of China Construction Bank, China's largest, consults with the party leader of his province before executing the directives he receives from the bank's head office in Beijing. +Considering these difficulties, some inside the Party admit that "there is only one way forward: let someone be in charge, no matter how she or he is chosen, even through an election, provided effective decision-making is restored." +So China's democratic transition may be closer than anyone realizes. +But if it happens, it will not result from grassroots democratic experiments in towns and villages; rather, it will be an elite-driven transition, careful to preserve the government's control. +This is the only condition under which the People's Liberation Army and the all-powerful Military Commission will accept democratization. +Is the European Union imploding? +The prospect of being accepted into the EU provided the nations of Eastern and Central Europe with a strong incentive to achieve fiscal balance - a process somewhat similar to what happened in Western Europe at the time the euro was launched. +In both cases, however, after initial progress, countries have shown clear signs of political "fatigue": in the euro area, the Stability Pact has imploded; throughout Eastern Europe, budget deficits have started to rise. +In the Czech Republic last year, the budget deficit jumped to 13% of GDP, a threefold increase since 1999. +Although this included a one-time charge for bank restructuring costs, this year the deficit will close above 6% of GDP. +In Poland, the deficit is also moving close to 6% of GDP, up from 2.9% in 2001. +In Hungary the budget deficit is widening again, after narrowing to 4% of GDP in 2001. +Malta, too, has a deficit close to 10% of GDP, up four percentage points since 2001. +Only the Baltic countries seem able to maintain sound fiscal policies. +In many ways, this is not surprising: once politicians no longer face annual EU progress reports - and the threat of exclusion - fiscal relaxation becomes much less costly. +At the same time, the big euro area members (France and Germany) do not have a leg to stand on to criticize other countries' fiscal policies, so there are virtually no international constraints on EU countries' budget deficits. +Indeed, these constraints have proven to be utterly useless after a country's EU entry, and it will be hard to impose them as an admission criterion for other potential entrants. +Perhaps more surprising is the apparent political backlash against the governments that have led countries into the EU. +Once again the similarity with what happened in Western Europe at the time of the euro's implementation is striking. +The government of Romano Prodi, having managed against all the odds to get Italy into Europe's monetary union, fell three months later. +The Czech Republic, Poland, and Hungary have each endured a government crisis since EU accession. +Throughout Central and Eastern Europe, the EU is not as popular as it used to be. +Voter turnout in the European Parliament elections in June was embarrassingly low in the new accession countries, ranging from just 17% in Slovakia to 38.5% in Hungary. +Participating in their first-ever EU election, citizens in these countries turned out at a rate not only well below the European average (about 45%), but even below the UK average. +The reasons are twofold. Accession countries felt that they were asked to make major fiscal adjustments in order to be accepted into the EU. +Regardless of whether such policies were in the long-term interest of these countries, in the short run they were politically costly. +This "adjustment fatigue," a term coined to describe the experience of Latin American countries to economic liberalization in the 1990's, is now coupled with the feeling that the EU is not such a great bargain after all. +Perhaps most visible has been Western European countries' eagerness to protect their labor markets against migration from Central and Eastern Europe - a sticking point that always comes up in every meeting between politicians from the West and the East. +Little wonder, then, that voters in Central and Eastern Europe now feel that they got a poor bargain from the governments that brought them in: belt tightening, labor market restrictions, and the notorious barrage of EU regulation. +The result has been a reaction against these governments and a lack of public interest in EU affairs. +So, after all the celebrations of European enlargement, we are left with a predictable set of problems: a "union" of countries with very different views on everything (from foreign policy to labor market policies) and different economic interests; widespread disillusionment among voters in the new member states; a constitutional process whose future is uncertain; and all the usual political wrangling in Brussels between countries seeking to get as much power as possible. +The Long Decline of Western Europe? +It's election season in Germany, France and Italy, so the time for structural reforms is over. +Paradoxically, this could be good news for those who think that Europe should start contributing to world growth by expanding domestic demand. +In fact, the current wisdom has it that the reason why France recently grew twice as fast as Germany is that French consumers have stopped worrying about social reforms. +As soon as French Finance Minister Nicolas Sarkozy decided to leave the government and start campaigning for the presidency, incumbent President Jacques Chirac abandoned all plans for reforms that might antagonize voters. +So health reform or even partial pension reform must wait a few years. +At the same time, a recent "white paper" produced by a working group headed by the IMF's former boss, Michel Camdessus, which was charged with proposing the type of structural reforms needed to achieve growth, was received with the usual outcry from trade unions. +Most of its reasonable proposals will soon become another example of forgotten good intentions. +Back to business as usual in France. +German households, on the other hand, according to a recent poll published in the influential daily, Die Welt , are in a more sober mood: most plan on cutting down their vacation travel -- which, obviously, does not mean that they will work more; they will just spend some of the many weeks of their paid leisure at home -- and postponing large item purchases. +Why? +They are worried by the talk of pension reform, changes in the health system, and new eligibility rules for unemployment benefits. +To be sure, their mood may soon turn brighter: Chancellor Schröder is also preparing for re-election. +He may even have a shot at winning, as the SDP, his party, is reviving in the polls. +Accordingly, references to the need for pushing ahead with reforms have disappeared from his speeches. +As a result, perhaps the long-awaited turnaround in German consumption -- which has been flat for the good part of a decade -- is about to happen. +In Italy, Prime Minister Berlusconi waited three and a half years before deciding to deliver on his main electoral promise of a tax cut. +But real tax cuts also mean spending cuts and, as elections loom barely a year from now, it is too late. +Concerned that cutting spending might lose him votes, Berlusconi is proposing a tax cut of less that 0.3% of GDP -- and one that is partly to be financed by other levies. +If Germans are depressed, Italians are in a coma. +There is a lesson to be drawn from these experiences. +Europeans don't really want reforms, and politicians are very aware of this. +Or, to put it differently, special interests have become so powerful and entrenched that any attempt at reform brings out a powerful lobby against it. +So politicians on the campaign trail promise the impossible: reforms that will produce instant prosperity at no cost to anyone. +When -- surprise, surprise! -- this turns out to be impossible, they give up on reform altogether. +In the meantime, they do serious damage because Europeans are so worried about the possibility of reform that the mere possibility of such reforms actually being enacted plunges them into a funk. +In fact, there are two problems with all this talk and little or no real action on structural reforms. +First, it makes consumers anxious and depresses demand. +Second, it leaves time for anti-reform lobbies to organize and prevent any progress toward completion of the reform effort. +A politically more successful plan would be to adopt the "big bang" approach: implement quickly a broad set of reforms that will break the opposition of special interests and leave enough time before the next election for the benefits of reform to be felt by voters. +When consumers see the benefits of market deregulation, for example, perhaps they will feel compensated for having to work longer for their retirement. +But no European politician on the horizon is likely to take this approach. +Does this mean that Europe -- at least continental Western Europe -- is doomed? +Not necessarily. +Germany, France, and Italy are rich countries. +Even without reforms, they will be able to afford a civilized form of life for many years to come. +To be sure, eventually they will become poor relative to other, faster growing economies. +But after all, it took Argentina nearly a century of mismanagement to go from almost the top of per capita income to its relative poverty today. +The Reform Game +Reform, when long discussed but never implemented, can do far more harm than good. +Anticipation of a reform -- say, of pension rules, the health system, or unemployment benefits -- worries everyone who might feel the impact. +In response, they cut consumption and save more, expecting that sooner or later they will have to start paying for some of the services they had been used to getting free or at subsidized rates. +In the meantime, as politicians debate and do nothing, consumer confidence falls, economic performance worsens, and the consensus needed to get reforms approved in the first place vanishes. +Still the talk does not stop, nor does the fall in consumer confidence. +Germany's recent experience provides a worrying example of this vicious circle. +Reform of Germany's generous social system has claimed the front pages for German papers for more than ten years. +The result has been a sharp fall in consumer confidence: the German index of consumer sentiment was small but positive in November 2000; it has since fallen to -20, the sharpest decline in the euro area. +Out on the street, pessimism runs rampant. +For two years now, the growth rate of private consumption (measured at constant prices) has been negative: - 1% in 2002, -0.5% in 2003. +Similar declines in real consumption are rare in industrial countries, as in bad years consumers typically draw on their savings to keep their consumption relatively constant. +In the case of Germany, one has to go back to the early 1980's to see similar negative numbers in consumption growth. +As a result, rather than falling, the household saving rate has increased, rising from 9.7% of disposable income in 2000 to 11.8% last year. +Depressed consumption and higher savings have affected all age groups, but the relatively old have been more prone to the trend than the relatively young. +The only positive signs in consumption are seen among the youngest households, those headed by people in their early twenties, who evidently hope that sooner or later the reforms will be approved and their tax burden reduced. +But the saving rate even in households in their thirties has risen along with concern about reforms. +Not surprisingly, elderly people cut consumption more. +With retirement, they have lost almost all options: they can no longer work more, nor can they sign up for private health plans -- the insurance premiums at their age are too high. +So they are forced to rely on their savings, and virtually stop consuming. +Put this in the context of a rapidly aging population and the effects on overall consumption are dramatic. +Interestingly, France is the only large Euro area country where consumer confidence is growing (from -24 a year ago to -13 today). +Jose Bove Against the Poor +Support for increased foreign aid, debt relief and debt forgiveness comes from all sides. +From rock stars, to "anti-globalists," to religious organizations, to various advocates for developing countries, to the UN, the calls are becoming deafening. +The "story" promoted by the pro-aid movement is simple and appealing. +Global differences in income per capita are too extreme; globalization is increasing income inequality; the poor are becoming progressively poorer and many starve in order to pay their debt. +So more aid is needed, and more debt forgiveness, because the world's rich become rich only at the expense of the world's poor. +Aid and debt forgiveness will lift poor countries out of poverty +This story is almost completely wrong. +The only part that is true is that differences in per capita income are extreme. +All the rest is false. +Globalization is not responsible for third world poverty. +Corrupt and inefficient governments of developing countries are. +There is not one shred of evidence showing that more openness to trade increases poverty, but anti-globalists do not let facts interfere with their ideology. +More trade makes both sides of a transaction wealthier. +Even if globalization did increase inequality - a big if - since nobody has shown it convincingly, it still reduces poverty. +That is, it increases the income of both the poor and the rich who trade - more so the rich, of course, yet the poor gain too. +The anti-global alternative is to make both sides poorer. +Inequality may be lower, perhaps, but poverty higher. +What's appealing about that? +It is not true that poor countries have become poorer. +Many examples exist of countries that lifted themselves out of poverty, from South Korea to Costa Rica to Botswana. +Others squandered the immense wealth of natural resources, say Nigeria or Venezuela, the latter, incidentally, recently adopting protectionist policies. +There is no evidence that increasing foreign aid to governments in developing countries improves their economic performance and lifts them out of poverty permanently. +In fact, more aid is likely to increase corruption, because it augments the amount of resources over which elites fight. +The same goes for debt forgiveness: it only encourages countries to borrow more, often for the benefit of local elites. +A recent widely cited book by William Easterly - a former economist at the World Bank and an expert on aid and development - provides a mountain of shocking stories about local elites squandering foreign assistance. +The pro-aid coalition should read it carefully. +Those who really care about reducing poverty should place blame where it belongs: with governments and bureaucracies in many developing countries, especially in Africa and Latin America. +Traditionally, instead, foreign aid paid no attention to the virtues of the receiving countries and did not discriminate in favor of "good governments." +Donors have typically favored their former colonies, irrespectively of the nature of their regimes. +One of the worst offenders here is France. +Statistical evidence shows that a hypothetical former colony of France, following hideous policies, with dictatorial and objectionable regimes, would receive much more aid from France than a non-former colony struggling and trying to adopt decent polices. +In other words, France gives almost exclusively to its former colonies, irrespective of how bad their regimes are. +Aid given by the US has been overly influenced by Middle East politics and, previously, by the Cold War. +Political alliances, indeed, are often more important than the quality of the receiving countries policies as a determinant of the direction of aid giving. +The only donors that directed their aid reasonably well are the Scandinavian countries, whose aid giving is the highest in per capita terms but small as a percentage of the total. +One of the reasons is that these countries did not have colonies and political alliances to support. +Before providing more aid or debt forgiveness two conditions need to be met. +One is "institutional conditionality:" only governments that show serious progress in reducing inefficiency, robbery of public property and corruption, should receive aid. +Reasonable ways to measure corruption do exist; we know which countries are more corrupt than others. +This evidence should be used more aggressively by donors to discriminate amongst receivers. +Unfortunately, in most cases the poorest countries, where aid is most needed, are also the most corrupt. +So a second condition must be applied: in such cases aid flow should be kept completely out of public channels and administered by non-local groups un-associated with local elites and governments. +Finally, other rich country policies may be much more beneficial than aid. +The main change should be stopping agricultural protection for rich country farmers. +The worst enemies of poor countries are farmers in rich countries. +Defeating the lobby of French farmers that strangles reform of the EU common agricultural policy should be the top priority of Europe's pro-poor coalition. +Instead, anti-globalists care more about the charm of French agricultural towns threatened by globalization, that is, by the agriculture of struggling poor countries. +Contrary to what critics of the IMF, such as Joe Stiglitz, say, abandoning the "Washington Consensus" will hurt the poor. +In his recent vitriolic attacks on the IMF Stiglitz implied that he cares for the poor while the IMF does not. +Well, the data contradicts him: using policies that he directly or indirectly advocates -such as using deficits first and inflation later to solve fiscal problems - is especially bad for the poor. +Latin America's rich and middle classes are particularly adept at shifting their wealth to tax havens at the slightest sign that tax collection may become tougher. +Divided Europe Stands +In coming meetings of the G8 (the world's club of rich industrial countries plus Russia), four members--Germany, France, Italy, and the UK--will participate both individually and as members of the European Union, whose President also attends to represent the EU as a whole. +But shouldn't the EU have only a single representative? +The main argument in favor of such a change is that joint participation by the EU would increase Europe's weight in international relations, especially vis-a-vis the US. +After all, a key reason for European integration in the first place was precisely to provide a more powerful voice for Europe in the international arena. +The EU's member countries share strict rules on fiscal policy, a common currency (except, for the moment, the UK, Sweden, and Denmark), a common trade policy, a common antitrust policy, and common market polices, just to name a few. +So why not having a single representative at the G8 meetings. +Indeed, Germany, France, Italy, and the UK basically share a common stance on international economic policy, so why not present a united front to the world where these issues are concerned? +There are two possible answers. +One is that despite occasional shows of unity, European countries retain very different views on foreign policy and do not want to delegate this prerogative. +Consider, for example, the recent strained relationship with the US. +Germany has recently taken a more anti-American stance (perhaps for electoral reasons), but it is beginning to like flexing its independent foreign-policy muscles. +The risk is that agreeing on a common foreign policy would either be impossible or would lead to the adoption of a minimum common denominator that would leave Europe ineffective and weak. +Alternatively, taking a strong position based on, say, majority voting within the EU may lead to very strained relations between member states. +The European Union may soon have 25, or more, members. +Agreeing upon a united foreign policy will become even more difficult, if not downright impossible. +Between 1995 and 2002, notwithstanding the Stability Pact, total public spending in the euro area (net of interest and of capital spending) remained virtually unchanged: it amounted to 41% of the euro zone's GDP in 1995; it will amount to 40.7% of GDP this year. +Meanwhile, gross government investment, already minuscule, contracted even further: from 2.7% to 2.4% of GDP. +As a result of the Stability Pact, teeny differences in budget outcomes acquire a prominence in Europe's economic policy debate that is not only ridiculous on their face, but distract attention from Europe's real budgetary problems. +Few people seem aware of the margin of error that exists when computing such numbers. +It is not uncommon, say, for parliamentary discussions about a budget to turn on the question of whether or not such an such an action will lead to a deficit of 0.8 or 1.1% of GDP-blithely unconcerned that the difference between those numbers is well below the statistical margin of error. +Futile debates of this type are a handy excuse for a country to avoid facing its real fiscal challenges: unsustainable pensions, unemployment benefits that discourage workers from looking for a new job, public sector wage bills unrelated to productivity. +Mario Monti on Trial +Mario Monti, the European Union's Commissioner for Competition Policy, is often in the spotlight, usually to popular acclaim. +Over the years, he has won important victories limiting state aid to business, one of Europe's most pernicious economic maladies. +Today, however, the benefits derived from his achievements are at risk because of a series of stunning courtroom defeats. +With a competition case against software giant Microsoft seemingly in the offing, Commissioner Monti will need to rediscover his footing fast. +Within a period of just a few weeks, the European Court of Justice (to which private parties can appeal decisions made by the Commission) voided three of Monti's decisions rejecting proposed corporate mergers. +While the two issues, state aid and private mergers, are in principle separate, losing repeatedly on one battlefield undermines Monti's position elsewhere, particularly the battle against state aid. +The Court's rulings against Monti's decisions are devastating. +In the Schneider/Legrand steel merger case, it cites "several obvious errors, omissions and contradictions in the Commission's economic reasoning" as well as a "procedural irregularity which constitutes an infringement of defense rights." +The Tetra Laval case saw the Court denounce Monti's "economic analysis of the immediate anti-competitive effects," which it said was "based on insufficient evidence and some errors of assessment." +Finally, in the Airtours merger case, the Court rebuked the competition authorities for "decisions that are vitiated by errors" concerning issues that are "fundamental to any determination of the question of the creation of a collective dominant position." +Worsening the injustice, in at least one case the Court's decision came too late for the companies involved to go ahead with their plans. +These cases raise important questions about both the substance and procedures of the European Commission's handling of competition policy. +Start with the substance. The Court's verdicts leave the impression that competition policy in Europe is overly zealous. +That condemnation matters, because passing judgment on the trade-off between the efficiency gains to be had from any merger versus the threat to competition is a subtle matter, not an ideological one. +In the Airtours/First Choice case, the Court ruled that the Commission failed to prove that the three leading tour operators, if merged, "would have an incentive to cease competing with each other." The Court rejected the Commission's conclusion that the merger would enable them "to interpret each other's business strategies more easily and to adopt those strategies themselves." +Moreover, the Commission "failed to identify or demonstrate clearly" how the merged operators would enforce any "common policy." +Finally, the Commission "underestimated" competitors' ability to react to "any attempted restriction of capacity," either by increasing supply or by entering "the relevant market quickly." +The Tetra Laval-Sidel case is particularly interesting because it shows the extent to Monti's team tends to second-guess private companies. +The Competition Commission started from the premise that the current overlaps in the packaging markets will grow in the medium to long term. +It then concluded that Tetra Laval, from its strong dominant position in the carton container market, will probably pressure its current customers wishing to switch over to PET packaging to use equipment produced by Sidel when they make that switch. +The Court agreed, in principle, that the merger could allow such leveraging to occur, but it found that the Commission did not prove that the merged entity would have an incentive to use this possibility. +We are confident that Monti's office could answer the Court's criticisms and that reasonable people can disagree on the subtleties of whether these mergers threaten competition enough to be rejected. +But our point is different. +Rather than putting proposed mergers by private companies under the microscope, Commissioner Monti should focus on his other mandate: safeguarding against state intervention and state aid to companies. +In other words, Monti should think hard about redirecting his limited resources to the right battlefield. +To be sure, we are not arguing that Commissioner Monti should forget about the fight to make European product markets more competitive. +In most European cities, taxi drivers are protected by limits on the number of licenses; the number of notary publics in many countries is similarly restricted, and the price of their services-which are typically of little economic value, but inescapable under existing administrative procedures -- correspondingly high. +These are important battles, and they are very close to citizens' hearts. +But, like the fight against subsidies to businesses, these are battles that are directed against state intervention, not private companies. +The question of procedures concerns constitutional design. +In the area of competition policy the Commission is, at least in the first instance, both prosecutor and judge. +The Commission is authorized to open a case against a proposed merger and to decide on it. +The parties involved can appeal to the European Court of Justice, but this takes time and a reversal of the Commission's decision typically produces no more than a moral victory to one of the parties. The time of the merger may have come and gone, as was the case in the Airtours/First Choice decision. +A division of responsibility between prosecutor and judge is a critical constitutional guarantee for private litigation. +Competition policy in the United States is based upon this principle. It is one that Europe would do well to put into practice. +Former President Giscard d'Estaing and the European Convention, please take note. +The Stealth Threat to World Trade +Threats to world trade come in many guises. +The usual suspects include protectionist barriers and militant anti-globalization protests of the type that derailed the "Millennium Round" of World Trade Organization (WTO) talks in Seattle last year. +Although these protests grab headlines, a new and perhaps even more insidious threat to world trade has quietly taken shape over recent years: so called "open sectoralism," or the practice of negotiating access to foreign markets on a selective, industry-by-industry basis. +What this practice entails is that countries negotiate lower tariffs on some types of products but not on others. +Contrary to appearances, open sectoralism is not a first step to more comprehensive trade agreements. +Indeed, it may prevent wider agreements from being negotiated. +For even when successfully negotiated, sectoral agreements jeopardize economic efficiency and performance by protecting the least competitive industries because each country tries to open trade in areas where it is competitive. +No country likes to open its manufacturing dinosaurs to foreign competition. +The economic implications of such a stance, however, are perverse. +Imagine an America or Europe still stuck in the 1950s, with economies dependent on coal and steel, and textiles, and with no competition from cheaper producers in Asia and elsewhere, and the danger becomes obvious. +A second danger arises from the fact that, by liberalizing trade for only a few economically successful industries, open sectoralism weakens, rather than strengthens, the broad political support needed for the comprehensive global trade agreements that benefit most businesses, consumers, and countries. +America is the keenest supporter of open sectoralism, beginning several years ago with the "zero-for-zero" tariff negotiations during the Uruguay Round of world trade talks. +Those talks led ultimately to the dismantling of tariff barriers in ten key sectors. +Pushed by business, the US negotiated sectoral agreements in telecoms, information technology, and financial services. +The first major deal, the Information Technology Agreement (ITA), took effect in 1997 and covers 90% of trade in IT products worth more than $600 billion annually. +The ITA was subsequently backed by the European Union after Hugo Paemen, the EU ambassador to the US, saw the ITA as proof that sectoral agreements help circumvent mounting political resistance to new trade rounds. +With the support of the two most powerful actors in world trade, the ITA model has been pursued ever since in other sectors. +A Global Agreement on Basic Telecommunications went into effect in 1998; a Financial Services Agreement to liberalize trade in banking, insurance, and securities was implemented in April 1999. +Such agreements, which often dismantle not only tariffs but other regulatory barriers, may appear unassailable. +But looks deceive. +Because the powerful sectoral interests that supported liberalization during the Uruguay Round -- information technology, financial services, telecommunications -- now have their own deals, the energy they once brought to the cause of broader trade liberalization has diminished sharply. +Indeed, the Japanese believe that the halfhearted backing of US business groups for a new round of WTO talks reflects the success of the earlier sectoral agreements. +So Japan now opposes negotiating a second ITA, which it fears will further weaken political support for broad trade liberalization. +Fears for the future of comprehensive, multi-sector trade negotiations are well founded. +Continuing effort by US officials, for example, to focus narrowly on trade in services and agriculture impedes wider agreements by limiting the tradeoffs that can be made among sectors. +Moreover, a sector-by-sector approach invariably ignores a host of issues within the WTO, such as dispute settlement, anti-dumping, and the like. +The recent experience of the Asia-Pacific Economic Cooperation (APEC) forum highlights the limitations of open sectoralism and should prompt a thorough re-appraisal. +Following the launch of the ITA, America pressed APEC's members for accelerated liberalization on a sectoral basis as a means to revive a stalled regional trade agenda. +But efforts to reach an agreement to liberalize trade in 15 sectors soon faltered: the cost of selective liberalization in uncompetitive, but politically sensitive, sectors was simply too high for some governments to bear. +The most important lesson of APEC's failure is a recognition of the enormous difficulty found in constructing a broad enough, and yet politically acceptable, package when trade negotiations are limited to particular beneficiaries. +Because some industries no longer care about wide trade agreements because they have already benefited through a sectoral deal, the groups that normally see themselves as gaining from greater trade openness are too weak to offset the political influence of protectionist forces mobilized against liberalization. +Policymakers who are now attracted to open sectoralism because of its delusive promise of frictionless politics should take that lesson to heart. +If the full benefits of trade liberalization are to be gained quickly, there is no alternative to resuming comprehensive negotiations -- and the tradeoffs between industries that this strategy entails -- by reviving the WTO's Millennium Round. +It is this agenda, rather than the hollow hope of open sectoralism, that should be the main priority of trade negotiators in the future. +Make or Break for Europe's Constitution +The challenge for the EU now is to refocus itself on the priorities of today and tomorrow. +It needs to connect better with its own citizens, to renew their support by showing that Europeans working together can foster growth and jobs, fight international crime, and secure a clean environment. +The Union needs to play a more active role in the wider world, not in pursuit of selfish interests, but in promoting the universal values on which it is founded. +Most of all, the enlarged Union needs a constitutional and institutional framework that fits its ambitions. +For thirty months, governments and parliamentarians have been working on a new constitution for Europe. +An exceptional draft was prepared by the convention chaired by former French President Valéry Giscard d'Estaing. +It is the task of national governments - of me and my colleagues in the European Council - to finish the job. +We meet in Brussels this week, and our overriding priority is to reach agreement on the constitution. +Consensus on most of the draft has existed for some time. +There is no dispute about the EU's values and objectives, about inclusion of the Charter of Fundamental Rights, or about simplifying legislative processes. +These are all major advances. +But national governments inevitably have a particular interest in the powers of EU institutions in such key areas as foreign policy, criminal law, and taxation. +These are the issues on which final agreement now needs to be reached. +Through months of bilateral contact and negotiation among ministers, we have succeeded in whittling down the outstanding issues to a point where a fair and balanced overall package is achievable. +As in any negotiation, the key ingredients are timing and political will. +People simply weren't ready last December when a first attempt was made to finalize agreement. +The European Council's decision in March to finish the negotiations during the Irish presidency sent a powerful signal of our determination to break the stalemate. +In the last month, I have met all of my colleagues face to face, in their capitals. +We speak often. +I detect no slackening of resolve. +In fact, there is a sense that we cannot afford to fail. +In a challenging period for the Union, it needs to show that, when the chips are down, its members can make collective but difficult decisions in the common interest. +The basic institutional balances between the Commission, the Council and the European Parliament are not in question. +But the EU's institutions need to be modernized. +Greater continuity and focus will be provided through the creation of a full-time chairman of the European Council and an EU Foreign Minister, and there is to be a three-country team presidency of other Council formations. +There is also now an acceptance that the voting system within the European Council should be based on a double majority of population and member states. +This is logical, transparent, and representative. +But the precise arrangements for double majority voting need to be calibrated in a way that respects the particular concerns of all member states, while still ensuring that the new system is more efficient than its predecessor. +I believe that we can settle this most difficult question in an equitable way. +The task of the Commission is to drive forward the EU's agenda in the common interest. +There is a developing consensus that 'representativeness' and legitimacy can be achieved by including nationals of all member states in the next two Commissions, with a move thereafter to a fixed smaller number based on strictly equal rotation. +There is also a need to ensure that the citizens of all member states, big and small, are adequately and appropriately represented in the European Parliament. +The constitution envisages further expanding the parliament's important functions, both legislative and budgetary, in partnership with the member states. +In fact, for the first time, a significant watchdog role is being assigned to national parliaments. +These arrangements will preserve the EU's unique institutional essence - the balances between its institutions and among member states - while offering the prospect of greater effectiveness, efficiency, and transparency. +The constitution will see a further major advance in the use of majority voting, which is necessary in an EU of 25 (and soon more) members. +But a few topics will have to remain subject to unanimous decision, given their special nature. +I believe we are close to a balanced agreement on this. +Too often, the complex issues involved in this kind of negotiation are presented as a battle between one country and another, or between competing ideologies. +From my own long experience of negotiation, I know that talk of winners and losers is not just unhelpful, but misleading. +Everyone must compromise, but they must also see their own hopes and concerns reflected in a final text. +If we succeed this week, it will be a triumph for the EU. +Europe is a confluence of different traditions and histories, of independent sovereign states. +But we are united in our belief that sharing sovereignty and working together is the best - indeed, the only - way forward. +Adopting a constitution means consolidating the end of the bitter divisions of the past, and a chance to build a Union that works for our 450 million people. +Palme's Legacy 15 Years On +STOCKHOLM: Olof Palme, Sweden's then Prime Minister, was assassinated 15 years ago on February 28th. +His death shocked millions everywhere. +The murderer has still not been found, at least he has not been convicted. +The crime was an attack not only on Palme, but on democracy itself. +Murdered, Palme is now part of history. +But history is something that must be freely analysed, not silenced out of deference. +So, as we recall Palme's assassination we should also remember how he behaved and what he represented. +What, for example, is Olof Palme's legacy in foreign policy? +Palme was a powerful, eloquent critic of the US and the war in Vietnam. +He cursed Soviet oppression in Czechoslovakia and General Pinochet's murders in Chile. +Because of these stands, Palme has often been portrayed as a consistent adversary of tyrannies. +Do not "vilify" the Soviet Union, said Palme, Chairman of Sweden's Social Democratic Party for 17 years and Prime Minister from 1969-1976 and, again, from 1982-86. +Do not engage in "anti-Soviet agitation" or "the business of anti-Sovietism," he declared in 1984, a typical neutralist stand in Palme's Sweden. +No doubt, Palme reflected the spirit of his times. +The West's Marxist revival after 1968 deeply impressed journalists and socialists, not least in Sweden. +The Vietnam War changed the world view of many young people. +Palme, however, carried this spirit forward so long after many others had seen the liberal light. +"Neither communism nor capitalism represents a dream of liberty for the peoples of Europe," he said only a few years before the peoples of East and Central Europe freed themselves from Communism to embrace democracy and capitalism. +Palme also exploited ideological differences over diplomacy to wound other democratic parties in Sweden. +The conservatives were lapsing into "the crusading spirit, aimed at the liberation of Eastern Europe, which prevailed in conservative quarters in the West during the Cold War," he said in 1983--a moment of heightened tension between the West and the USSR. +Eventually, Sweden's Liberals and Conservatives, after 44 years of Socialist rule, came to power in 1976. +None of the threats to Sweden's foreign policy, which Palme confidently predicted, materialized in their nine years in office during the last quarter century. +Divisive at home, Palme tried hard to divide the West at a critical moment. +In the 1980s Social Democrats in Sweden and Germany developed a close ideological collaboration in foreign affairs. +The so-called "Palme Commission" (including the influential Egon Bahr) suggested a policy of "common security" between East and West, and nuclear weapon-free zones instead of NATO's policy of deploying cruise and Pershing II missiles to counter the Soviet advantage in theater nuclear weapons. +This alliance between the two parties led to serious distortions of fundamental Western values. +Palme and Oskar Lafontaine, then one of the leaders of the opposition in Germany, did not see the Cold War as primarily a conflict between freedom and tyranny. +When Palme visited East Germany in 1984 he never criticized repression there, nor the Berlin Wall. +Instead, Palme praised East Germany's leader, Erich Honecker, underlining shared goals and the mutual struggle for peace and development. +Palme's main speech mentioned "détente," "trust,"and "friendship," but never "freedom". +Much the same happened when Palme visited Cuba. +He shared a podium with Fidel Castro at a mass rally in Santiago de Cuba. +Palme spoke appreciatively of "socialist revolution," never mentioning his own party's conviction that "revolution" should take place only after free and honest elections. +Indeed, Palme used Marxist slogans, but said nothing about human rights and political freedom, giving the impression that Sweden and Cuba embraced similar ideologies. +In a joint statement with Castro, Palme claimed that the two men were united in all the areas they had discussed. +They even confirmed their happiness that the struggles for freedom of "the Vietnamese and Cambodian peoples have been crowned with victory." +This was said in the summer of 1975, two months after Cambodia's Khmer Rouge embarked on a genocide that killed two million of the country's seven million people. +Was Olof Palme unaware of Pol Pot's massacres? +Newspapers in almost all democracies, including Sweden, were informing us of the Cambodian horrors. +Palme, however, thought it more important to present a united front with Cuba's tyrant than to worry about atrocities committed by Communists in Indochina. +Palme, indeed, seldom condemned oppression in Third World countries. +He constantly condemned apartheid in South Africa, yet he never criticized Mao's China, the most murderous regime to arise after World War II. +This double standard was particularly pernicious in the Middle East, where Palme never censured an Arab country, regardless of its corruption or cruelty. +The only nation in that region he repeatedly attacked was its only democracy, Israel. +He even equated the Israelis with the Nazis. +Fifteen years after his murder, Sweden and the West must grapple with what Palme left behind, his anti-Western agitation and his willingness to see fundamental ideals of freedom as merely relative values. +It is that aspect of his moral "example" that should be recalled. +The Old in the New Anti-Semitism +Why do so many Holocaust survivors sense emerging anti-Jewish threats before seeing them? +Because they know how supposedly "innocent" insinuations grow into accusations and that accusations can become discrimination and soon after legislation. It is then that hysteria is set loose. +Survivors sound the alarm because they know what is at stake. +By doing so they strengthen our democracies in ways that no other people can. +We listen to the survivors so that we survive. +That we have cause to listen is clear, as the results of the first round of the French presidential elections demonstrate. +But not only demagogues like Jean-Marie Le-Pen and Europe's other lumpen extreme rightists incite trouble. +Throughout the 20 +Take the case of the French Ambassador to Britain. +At a dinner party in London not long ago he described Israel as "that shitty little country." +His vulgar comments are not particularly frightful. +What is worrying is the response. +He was not recalled by his government; Tony Blair's government did not request his recall; popular opinion treated the matter as merely another scandal. +Indeed, the French press thought the ambassador a victim of Britain's tabloid press, not of his contemptible sentiments. +Sadly, the French ambassador to the Court of St. James has many allies among Europe's elites. +But Ambassador Bernard did provide a service; he helped us to recognize how widespread this new anti-Jewishness is. +As one columnist notably said, Israel has become "the object of hate that dare not speak its name." +But we must not only dare, we are obliged to speak. +We must not be silent about the daily attacks in France against Jews and synagogues. +It is a shame for all of Europe that many French Jews cannot send their children to school without worrying about their security. +Anti-Semitic outrages are also reported elsewhere: in Berlin and London, in Switzerland, Italy, Sweden, the Netherlands, and in parts of Eastern Europe. +We must not be silent about the fact that denial of the Holocaust is becoming routine; so too the parallels that anti-Semites/anti-Zionists draw between Israel and the Third Reich. +We must "confront the new Nazi plague which is nesting in Israel," wrote a Syrian paper as Palestinian TV portrays Israeli soldiers as rapists and cold-blooded murderers. +The Mufti of Jerusalem stated that "it's not my fault that Hitler hated the Jews, they hate them just about everywhere." +One Friday sermon on Palestinian TV told Muslims "to have no mercy on the Jews, no matter where you are...kill them... and those Americans who are like them." +What we must remember about anti-Semitism is that, although it always starts with Jews, it never stops with Jews. +Jew-hatred, if not contained, almost always develops into assaults on other groups and minorities and finally undermines democratic institutions and the rule of law. +So the struggle against anti-Semitism is a task for Jews and non-Jews alike. +But it is now a more diffuse struggle than ever because an astonishing element in today's anti-Semitism is its flexibility. +Although anti-Semitism never changes its goal - to attack Jews - it does change its face, its strategy, its rationalizations, even its vocabulary. +Once Jewish religion was the target. +When Judaism did not surrender, Jews were expelled or killed. +In the 19 +I do not equate criticism of Israel with anti-Semitism. +It is as legitimate to oppose certain Israeli policies and decisions as it is to scrutinize any nation. +But anti-Zionism is becoming akin to anti-Semitism. +Sometimes anti-Zionists claim that they are not against Jews but are "only" against the Jewish state. +But suppose someone said: "I am only against the existence of Great Britain, I am not anti-British!" +Or if somebody told me that "I love Swedes, but Sweden should be abolished." +You would not believe them. +It is hard to love or respect a people and hate their state. +Yet people pretend that they can where Israel is concerned. +In several UN agencies, Israel-bashing is routine. +This demonization of the only democracy in the Middle East is a central part of the new anti-Jewishness. +When Israel is described "as the enemy of all good and the repository of all that is evil," says Professor Irwin Cotler, a member of Canada's parliament, it becomes a "teaching of contempt" within the UN. +This constant singling out of one nation as humanity's enemy is in fact a campaign directed against the Jewish people. +Indeed, many anti-Jewish outbursts in a number of countries are rooted in condemnations of Israel that exploit anti-Semitic terminology. +Attacks on synagogues are often triggered by a defaming language about the Middle East. +Compared to previous anti-Jewish outbreaks, today's anti-Semitism is less an attack on individual Jews than an attack on the "collective Jew," the state of Israel. +Such attacks, however, have started a chain reaction of assaults across Europe and Latin America on individual Jews and Jewish institutions. +In the past the most dangerous anti-Semites were those who sought to make the world Judenrein , free of Jews. +Today the most dangerous anti-Semites are those who want to make the world Judenstaatrein , free of a Jewish state. +Can A Wimp Disarm Saddam? +The UN's weapons inspectorate chief and Iraq have agreed on tentative terms for the conduct of weapons inspections, which in theory could begin as early as two weeks from now. +But the success of any such deal depends as much on the men who will carry out the inspections as on the details of when, where, and how they are carried out. +Hans Blix will head the UN arms inspectorate charged with searching for, finding, and destroying Saddam Hussein's weapons of mass destruction. +I have known Blix for over forty years. +In 1960 he was my deputy when I was a leader of the Swedish Liberal Youth organization. +Since then I have followed his career closely. +He became Sweden's foreign minister for a year and was later a director general of the International Atomic Energy Agency (IAEA) in Vienna. +I can think of few European officials less suitable for a showdown with Saddam Hussein. +Indeed, it is with utter disbelief that I watch television news about Blix's negotiations with the Iraqi dictator's henchmen. +The world has been amply warned about Blix's weaknesses because he has a track record of compounded failure. +When Blix headed the IAEA before the Gulf War of 1991, he blithely assured the world, after several inspections, that nothing alarming was happening in Iraq. +He delivered the clean bill of health that Saddam had hoped for when he began hiding his atomic factories and ambitions. +Since then, we have learnt all too unambiguously that Saddam is obsessed with procuring weapons of mass destruction - chemical and biological warheads as well as atomic bombs and the missiles to deliver them. +Former experts of Iraq's nuclear weapons program, who have fled Baghdad for the West, confirmed this. +They told us about determined and costly efforts to obtain doomsday devices. +Indeed, it is now clear that Saddam was but a year away from securing his first atomic bomb when the Gulf War broke out. +After that war, UN inspectors found and destroyed huge amounts of chemical and biological warheads as well as facilities to produce nuclear weapons. +Despite his grave failings as IAEA chief before 1991, Blix once again came to lead UN disarmament inspectors, this time in tandem with another Swede, Ambassador Rolf Ekéus. +Blix, naive and relatively ignorant about technical details -- his field is international law -- is easily mislead. +Even after the Gulf war, he failed to realize that the Iraqi officials, who were again assuring the UN that they were hiding nothing, were but consummate liars. +Indeed, Blix believed that Iraq had no program at all for nuclear arms. +David Kay, perhaps the most effective arms inspector, insisted that he did not trust them. +But Blix reproached Kay for his attitude. +You must believe in official information, Blix implied. +The turning point came when Kay initiated inspections of suspect buildings without notifying the Iraqis about his intentions in advance. +This new, aggressive inspection strategy had dramatic consequences: Kay discovered material which confirmed that Iraq was only 12 to 18 months away from producing a nuclear device. +This historic discovery ended up in a confrontation at a parking lot in Baghdad. +UN cars were surrounded by 200 Iraqi soldiers and a mob, ordered out to the scene by Iraqi officials. +For four days and nights the siege continued, as Kay and his colleagues used satellite telephones to fax crucial documents to the West. +Blix had opposed the raid. +Fortunately, Ambassador Ekéus backed it and supported the inspectors during the siege. +I have met a number of experts on Iraq's weapons of mass destruction, and they often compare the two Swedes: "Ekéus is brilliant," they say, "Blix is terrible." +When the current UN inspectorate was being put together in 1999, both Ekéus and Blix were among the candidates being considered to head the new group of inspectors. +Friends of Iraq in Paris and Moscow consulted Baghdad to see whom Saddam would prefer. +France and Russia then suggested Blix. +Surprisingly the Clinton administration accepted that decision. +Saddam's chemical and biological arms, and his determination to get nuclear weapons, are a threat to the world. +The dictator could use these arms himself or make them available to terrorist organizations. +And the issue of war and peace depends on a man repeatedly duped by the Iraqi regime. +The Bush administration probably understands Blix's weaknesses. +My guess is that the US will not allow Blix and the inspectors that he oversees to be deceived by Iraq again. +Regardless of how this crisis develops from this point, the UN has neglected its duties by asking a wimp to lead the inspectors who are supposed to stand up to the brute of Baghdad. +The UN Heresy +No other organization is held in such respect as the United Nations. +This is perhaps natural, for the UN embodies some of humanity's noblest dreams. +But, as the current scandal surrounding the UN's administration of the Iraq oil for food program demonstrates, and as the world remembers the Rwanda genocide that began ten years ago, respect for the UN should be viewed as something of a superstition, with Secretary General Kofi Annan its false prophet. +Not since Dag Hammarskjöld has a UN leader been as acclaimed as Annan. +Up to a point, this is understandable. +Annan usually maintains an unruffled, dignified demeanor. +He has charm and - many say - charisma. +But a leader ought to be judged by his or her actions when important matters are at stake. +Annan's failures in such situations are almost invariably glossed over. +Between 1993 and 1996, Annan was Assistant Secretary-General for UN Peacekeeping Operations and then Under-Secretary-General. +One of the two great disasters for which he bears a large share of the blame is the Serbian slaughter of 7,000 people in the Bosnian town of Srebrenica, perhaps the worst massacre in postwar Europe. +In 1993, Bosnia's Muslems were promised that UN forces would protect them. +This commitment was a precondition of their consenting to disarm. +The UN declared Srebrenica a "safe haven" to be "protected" by 600 Dutch UN troops. +In July 1995, Serb forces attacked. The UN did not honor its pledge. +Annan's staff released evasive, confused statements. +Oblivious, apparently, to the dreadfulness of the situation, they failed to sound the alarm properly and did nothing to intervene. +The Dutch fired not a single shot. +NATO air power could have halted the Serbs, but Annan did not ask for NATO intervention. +Ratko Mladic, the Serb commander and war criminal, deported the women and children under the eyes of the UN, while capturing and murdering the men and adolescent boys. +No one should be surprised by the UN's inaction, because only the year before it had demonstrated utter incompetence in facing the fastest genocide in history - the slaughter of 800,000 Tutsis and moderate Hutus in Rwanda in just 100 days. +UN forces in Rwanda in 1994 were Annan's responsibility before and during the crisis. +Annan was alerted four months before Hutu activists began their mass killings by a fax message from Romeo Dallaire, the Canadian general commanding UN forces in Rwanda. +Dallaire described in detail how the Hutus were planning "anti-Tutsi extermination." +He identified his source "a Hutu" and reported that arms were ready for the impending ethnic cleansing. +Dallaire requested permission to evacuate his informant and to seize the arms cache. +Annan rejected both demands, proposing that Dallaire make the informant's identity known to Rwandan President Habyarimana, a Hutu, even though the informant had expressly named the President's closest entourage as the authors of the genocide blueprint. +Annan maintained his extreme passiveness even after the airplane crash that killed Habyarimana, which signaled the genocide's start, helped by the indifference of the great powers (America not least). +One might think Annan far too compromised for the post of Secretary-General, but the UN doesn't work that way. +Instead of being forced to resign after Rwanda and Srebrenica, he was promoted to Secretary-General. +That is the culture of the UN: believe the best of barbarians, do nothing to provoke controversy among superiors, and let others be the butt of criticism afterwards. +Even subsequent revelations about Annan's responsibility for the disasters in Rwanda and Bosnia did not affect his standing. +On the contrary, he was unanimously re-elected and awarded the Nobel Peace Prize. +He is the all-time Teflon diplomat. +The media sometimes ratchets up admiration for Annan by pointing out that his wife is Swedish and a close relative of Raoul Wallenberg. +We are meant to infer that, on top of all his talents, Annan shares the ideals embodied during the last days of WWII by the foremost Swede of modern times. +But Wallenberg's name should make us even more dismayed about Annan's record. +Wallenberg refused to ignore the threat of massacres to come. Instead of ducking responsibility and carrying on with conventional work in Sweden, he made his way to Hungary, the scene of Hitler's last homicidal orgy against the Jews. +In Budapest, Wallenberg exploited every available contact, resorting to shady tricks, bribes, and other stratagems to save as many people as possible from the Holocaust. +He never allowed himself to be duped by Hitler's cronies. +Perhaps no one's achievement should be judged by comparison with that of Wallenberg - a titan of strength, courage, and perseverance. +The trouble with Annan is that, when similar perils loomed, he proved especially wanting. +Annan cannot plead that he faced any risk to his personal safety, whereas Wallenberg in 1944 and 1945 was in constant peril. +Nor can he possibly excuse himself by saying that no warnings were given, or that he lacked resources, or that he did not have the international position to intervene. +Annan had at his disposal all of the instruments of power and opinion that Wallenberg lacked. +Yet when thousands or hundreds of thousands of people were exposed to mortal threats that he had the authority and duty to avert, alleviate, or at least announce, he failed abjectly. +Now, despite the recent revelations about briberies in the UN's oil-for-food program for Iraq, the world is clamoring to entrust Annan with the future of more than 20 million Iraqis who survived Saddam Hussein's depraved dictatorship. +That is both because of who Annan is and what the UN has become: an institution in which no shortcoming, it seems, goes unrewarded. +The Swedenization of Europe +Anti-Semitism, anti-Zionism, and anti-Americanism are becoming linked and ever more rabid in today's Europe. +They arise from a kind of blindness, combined with a strange mixture of alienation, guilt, and fear toward both Israel and America. +Millions of Europeans resist seeing Israel as a country fighting for its survival. +Israel cannot afford to lose one major war, as it would mean the end of the Jewish democratic state. +But huge numbers of Europeans believe that something is fundamentally wrong with the Israelis: they never compromise; they prefer using military means to solve political problems. +Something similar is at work in the European attitude to the US. +Look at Europe, many Europeans say, we have eradicated wars, dangerous nationalism, and dictatorships. +We created a peaceful European Union. +We do not wage war; we negotiate. +We do not exhaust our resources on weapons. +Call this the "Swedenization" of Europe. +Yes, today's EU is a miracle for a continent where two modern totalitarian movements - Communism and Nazism - unleashed rivers of blood. +But what Europe forgets is how those ideologies were overcome. +Without the US Army, Western Europe would not have been liberated in 1945. +Without the Marshall Plan and NATO, it would not have taken off economically. +Without the policy of containment under America's security umbrella, the Red Army would have strangled the dream of freedom in Eastern Europe, or brought European unity, but under a flag with red stars. +West Europeans also forget that some areas of the world have never known freedom. +In many places, torture chambers are the rules of the game, not the grotesque and shameful mistakes of ill-supervised troops. +Any attempt in such places to go behave the European way and negotiate - without the military power needed to back up diplomacy - would be pathetic. +Instead of supporting those who fight international terrorism, many Europeans try to blame the spread of terrorism on Israel and the US. +But what if Spain - and Europe as a whole - had reacted in the opposite way to the Madrid train bombing of April, saying: "We promise that because of that slaughter we will double our support for stabilization in Iraq by sending twice as many troops, experts, engineers, teachers, policemen, doctors, and billions of euros in support of allied forces and their Iraqi co-workers." +The triumph of terrorists would have been transformed into a triumph of the war on terror. +The images many Europeans hold of America and Israel create the political climate for some very ugly bias. +Indeed, modern anti-Zionist rhetoric portrays Israel's goal as domination of the whole Middle East. +Such ideas are reflected in opinions polls in which Europeans claim that Israel and the US are the true dangers to world peace. +Ian Buruma, the British writer, claims that this European rage against America and Israel has to do with guilt and fear. +The two world wars led to such catastrophic carnage that "never again" was interpreted as "welfare at home, non-intervention abroad." +The problem with this concept is that it could only survive under the protection of American might. +Extreme anti-Americanism and anti-Zionism are actually merging. +The so-called peace poster "Hitler Had Two Sons: Bush and Sharon," displayed in European anti-war rallies, combines trivialization of Nazism with demonization of both the victims of Nazism and those who defeated Nazism. +Much of this grows from a subconscious European guilt related to the Holocaust. +Now the Holocaust's victims - and their children and grandchildren - are supposedly doing to others what was done to them. +By equating the murderer and the victim, we wash our hands. +This pattern of anti-Zionism and anti-Americanism returns again and again. +"The ugly Israeli" and "the ugly American" seem to be of the same family. +This is a new version of the old myth that Jews rule the US. +Earlier this year, the editor of Die Zeit , Josef Joffe, put his finger on the issue: like Jews, Americans are said to be selfish and arrogant. +Like Jews, they are in thrall to a fundamentalist religion that renders them self-righteous and dangerous. +Like Jews, Americans are money-grabbing capitalists, for whom the highest value is the cash nexus. +"America and Israel are the outsiders - just as Jews have been all the way into the 21st century," Joffe says. +The links between anti-Semitism, anti-Zionism, and anti-Americanism are all too real. +Unless Europe's leaders roundly condemn this unholy triple alliance, it will poison Middle East politics and transatlantic relations alike. +Europe and Asia's Arms Race +When European unification was launched, it was thought that "ever closer union" would establish a community that would protect Europeans from political blackmail. +Now we see -- though the lifting of the Union's arms embargo may now be delayed thanks to US pressure and Chinese aggressiveness -- that the European Union has become merely a tool for corruption when France and China draw up joint action plans. +The strategy is simple and ruthless. The world's largest dictatorship is preparing to crush and occupy the first Chinese democracy in history -- Taiwan. +In order to do so, the People's Republic needs much more sophisticated arms than those it possesses today. +The United States naturally does not export such arms to China. Instead, the US is trying to deter China's rulers from launching a military attack on the democrats in Taiwan. +But if the EU ever begins to offer China extensive exports of powerful and offensive weapons systems, the military power of the People's Liberation Army would be able to defeat Taiwan's defense forces. +Over 600 missiles, already deployed on the mainland, are aimed at cities and military bases on the island. +The threat is more apparent than real -- for now. +Russia currently sells certain arms to China, but avoids exporting its most sophisticated systems, since the Kremlin views China as a potential future threat. +However, if EU countries start competing for a share of the Chinese market, the Russians could soon be tempted to sell their best arms to the communist regime in Beijing. +China's new armaments, together with the North Korean crisis, will probably force half a dozen countries in the region to renew their armed forces. +Thus, by whenever the Union should decide to lift its ban on weapons exports to China, the EU could help fuel an arms race in East Asia. +How did China and France manage to fool the EU into thinking that it should ever take part in this? +When Jacques Chirac's government decided to expound its economic co-operation with China, arms became an important component in the strategy. +Just as a ruthless Prime Minister Chirac sold a nuclear reactor to Saddam Hussein in the 1970's, so the President Chirac of today is being lured into doing big business with another aggressive dictatorship. +The rest is a question of economic blackmail. +French diplomats have of course informed China about the reluctance of other European countries about lifting the arms embargo, which was imposed after the massacre in Tiananmen Square in 1989. +China then simply threatened to abandon or never to conclude trade deals with these EU members. +To the Germans, the Chinese probably murmur something about Siemens and Volkswagen. To the Dutch their whispers are most likely about Philips. +China follows the power game within the EU through its French friends, and therefore knows which governments need to be whipped into line. +In Sweden, it has probably been enough to whisper "Ericsson" and "Volvo" to make Primer Minister Göran Persson understand what is at stake for his country commercially. +What European nation, indeed, dares to put at risk a Chinese order for several billion euros? +Typically enough, no EU-country has mentioned Taiwan as a reason not to resume arms exports. +Instead, the EU talks of a "code of conduct" (which probably does not mean very much, but sounds nice) and "free trade" (another charming euphemism for arms exports to dictatorships. +This silence gives a hideous signal. +For what the EU in practice says to China is this: "Taiwan's cause in not our own." +If and when the Union lifts the embargo, Europe will be refusing to take responsibility for the catastrophe that may be approaching. +As usual, it is up to America to protect a free nation that may otherwise be destroyed. +Compare this situation to the drama 60 years ago. Then it was American troops and arms that liberated Western Europe from Nazism. +Now it may be European arms in the hands of the Chinese that will be aimed at American troops protecting a democracy with 23 million inhabitants (in other words, as many people as in all the Nordic countries combined). +As Tom Lantos, a Democratic US Congressman from California, put it, the move to lift the ban on arms exports to China clearly shows that the EU has "lost its moral compass." +Lantos knows about moral compasses: as a boy, he was rescued by Raoul Wallenberg from being deported to Auschwitz by the Nazis in Budapest. +Wallenberg was a Swede. +But now Sweden is revealing that it, too, lacks political morality. +Several friends of mine in the Conservative party's parliamentary group have long been engaged in supporting a free Taiwan. +Over the past ten years, we have held Scandinavian conferences on Taiwan in the parliaments in Copenhagen, Oslo, and Stockholm. +But a call from Prime Minister Persson was enough to render the Conservative party leader Fredrik Reinfeldt docile. +Persson had discovered that he lacked a majority in the Swedish parliament to lift the arms embargo on China. By whispering "Ericsson" into Reinfeldt's ear, it seems, Persson achieved the desired result. +Reinfeldt became the first Conservative party leader in Swedish history to encourage arms exports to a Communist dictatorship. +But Reinfeldt, like Jacques Chirac, has forgotten something. Liberal-minded people may very well prefer not just to exchange one cynical prime minister for another at the next election. +They may prefer a clear choice. +Make the UN Stand for Freedom +For Sweden, my homeland, the United Nations is a sacred cow. +But today, many Swedes, like others around the world, are having second thoughts. +Three events incited these doubts. +The first was the slaughter in Rwanda a decade ago of more than 800,000 people within 100 days -- probably the fastest genocide ever. +The well-documented fact is that Kofi Annan, then the UN's Deputy Secretary General, ordered UN soldiers in Rwanda not to intervene or protect the victims. +That Annan, after this enormous failure, was promoted to Secretary General of the UN remains a puzzle. +Doubts about the UN, and Annan personally, were compounded by the ongoing scandal within the UN administration concerning the Oil for Food program. +Although reports have so far not implicated Annan directly, his management failures are abundantly clear. +The third -- and perhaps the most disillusioning -- scandal concerns the Commission on Human Rights, for it lays bare much about the structural and permanent lack of balance and morality within key UN agencies. +These enemies of freedom are permanently silent about torture, oppression, and mass murder carried out by their fellow dictatorships, but are quick to rant against the world's democracies, in particular the United States. +After more than a third of a century at the UN, even Annan has come close to admitting that the Commission on Human Rights is a source of shame. +Is it reasonable to elect a pyromaniac to the board of a fire department? +Of course not. +So why is it that tyrannies like Cuba, China, Saudi Arabia, Sudan, and Zimbabwe are members of this Commission? +Recent members also include Libya, Vietnam, Congo, and Syria -- the Libyans were even elected chair-country. +How can this be? +Sadly, many free countries seem utterly indifferent to the ongoing campaign against Israel. +To prevent such vicious absurdities from continuing, the world's democracies must unite to prevent any country that systematically violates human rights from being allowed to be a member of the Commission on Human Rights. +Ongoing democratization in regions that have known only dictatorship provides hope that the balance is tilting in a way that would enable it possible for at least one UN body should incarnate freedom. +Who should decide if a country is democratic or not? +A tremendously respected independent think tank, Freedom House, is, like the UN's headquarters, located in New York City. +If there is one book that should be compulsory reading for anyone who makes public statements about human rights, this is it. +So the goal of all free countries should be that only other free countries are allowed seats on the Commission for Human Rights. +Those who have attained power through violence and fraud are not legitimate and should never more shame the UN by being members of this Commission. +Unfortunately, most democracies are often unwilling to fight against the perversion of the UN Human Rights Commission. +The European Union represents 25 democracies and often inspires countries to seek their freedom, as it has in Ukraine and Lebanon. +But the EU's habit is not to defeat the UN's extremists, but to make strange compromises with them. +As a result, rogue states make a few concessions to get the Europeans and others on board and then claim moral parity with the democracies. +Free peoples everywhere should remember that totalitarian forces and ideas cannot be defeated by being nice and accommodating. +The Commission on Human Rights must rid itself of members that detest freedom. +Otherwise, the sole UN agency that concentrates on freedom will be nothing more than a handmaiden to tyranny. +China Must Do More than Mediate +Despair is dangerous in diplomacy. But North Korea's latest actions are making much of Asia hopeless. +Only China, long reluctant to flex its diplomatic muscles, now has the power to find a diplomatic solution to the North Korean nuclear problem. +But the question everyone from Tokyo to Seoul and from Washington to Moscow is asking is this: will China act in time? +China's influence on North Korea is uniquely powerful. +China is keeping its increasingly desperate neighbor on life support by providing most of the non-food aid and energy that North Korea receives from abroad. +But to prevent North Korea from realizing a fait accompli in its pursuit of nuclear weapons, China must do more than mediate between North Korea and the US, the role it has so far played. +Instead, it must now prompt North Korea to halt its nuclear development activities and return to the six-party talks with America, Japan, China, Russia, and South Korea that broke up weeks ago. +Recent developments indicate that North Korea's nuclear threat is becoming more serious by the day. +Two weeks ago, North Korea declared that in June it successfully reprocessed some 8,000 spent nuclear fuel rods and now possesses "nuclear deterrence," suggesting that Kim Jong Il's regime may actually be making atomic bombs. +Not only does North Korea show little interest in holding another session of the six-party talks that the Bush administration and the other participants are calling for; it now wants to ban the Japanese from participating. +Kim accuses Japan of introducing unnecessary obstacles and complications into resolution of the nuclear question by raising the sensitive issue of North Korea's abduction of Japanese citizens. +But this is nothing more than a political diversion. +It is inconceivable that multilateral negotiations could result in a breakthrough toward a diplomatic solution while North Korea is actively engaged in pursuing its nuclear weapons program. +It must be clear by now that Pyongyang is determined to keep its nuclear weapons program in order to obtain a credible assurance from the US that its bizarre and repressive regime will be allowed to survive. +Unless America accommodates North Korea's demands for concluding a nonaggression treaty and ending "hostile" policies, Kim's regime is likely to keep its nuclear weapons program as its most effective deterrent against any preemptive US attack--something that the Bush administration, indeed, refuses to rule out. +America's military victory in the war in Iraq probably hardened North Korea's resolve to rely on the nuclear option as its primary means of ensuring regime survival. +But that should not surprise anyone: the North Korean regime has always been committed to making military power the "first priority" in the state budget. +This contrasts sharply with policies pursued by China and Vietnam, Asia's two other communist powers. +In both countries, the leadership places military power last in their national development strategies. +It would be difficult for the US to change the highest priority of its own national security strategy--preempting terrorism and fighting the spread of weapons of mass destruction--especially with another nuclear threat looming in Iran. +Insofar as the goal of preventing the proliferation of nuclear weapons on the Korean peninsula is concerned, the US has thus succeeded by sustaining an ad hoc concert of powers thus far with China, Japan, Russia, and South Korea. +Indeed, in their first-ever joint declaration, Chinese Prime Minister Wen Jiabao, Japanese Prime Minister Junichiro Koizumi, and South Korean President Roh Moo Hyun issued a plea on the sidelines of the ASEAN summit held in Bali on October 8 for a nuclear-free Korean peninsula. +All sides realize that failure to achieve this would most likely result in a nuclear chain reaction with Japan, South Korea, and perhaps even Taiwan embarking on their own nuclear weapons development programs. +That scenario is China's worst nightmare. +So the question now is what can China do to freeze--and, if possible, to reverse--North Korea's nuclear program. +China finds itself in a delicate position, pulled in one direction by its desire to avoid a precipitous North Korean collapse, and in the opposite direction by its overriding need to deepen economic relations with the US, Japan, and South Korea. +This is why at the UN Security Council China opposed any military action or sanctions against North Korea, a country for which it sacrificed almost one million troops during the Korean War in 1950-53. +It is in China's vital national interest to halt North Korea's quest to become another declared nuclear power. +China's success here would not only enhance its own international prestige, but would also contribute immensely to promoting regional stability and prosperity throughout East Asia. +America's Retreat from Asia +The United States' planned withdrawal of troops from Asia, which President George W. Bush announced on August 16, need not harm peace and stability in the region and particularly in Korea. +But a key condition for a smooth redeployment of US troops is close consultations by America with its allies, something it has not done well up to now. +South Korea and Japan need to have their views taken into serious account if this now inevitable withdrawal is to succeed. +By contrast, unilaterally announcing the withdrawal - and then unilaterally implementing it - may harm the very purpose that the remaining US troops in Asia are intended to serve: assuring deterrence, stability, and nonproliferation in Korea and Asia. +The withdrawal plan is causing countless worries. +In Japan, there are concerns that it will make the country America's frontline command post in Asia, possibly beyond the scope of its bilateral security treaty with the US. +One result is that China feels nervous about the implications of any expansion of the American-Japanese military partnership. +But the impact of America's planned troop withdrawals is felt most keenly in South Korea. +In June, the Bush administration revealed its plan to withdraw some 12,500 of the 37,000 US soldiers stationed in South Korea by the end of 2005. +These include 3,600 troops from the 2nd Brigade of the 2nd Infantry Division, who are already earmarked for redeployment in Iraq. +The US Defense Department justifies this change as part of the so-called "Global Posture Review" that it has been carrying out to provide more flexibility and mobility in deploying troops to more urgently needed places around the world. +But the unilateral nature of the announcement, and the abrupt timing of the plan, has incited alarm in South Korea, and perhaps in Japan, that withdrawal could pose serious risks to the vital role that US forces have performed in deterring another war in Korea. +South Koreans genuinely fear that the plan may weaken deterrence by sending North Korea - which is demanding a US military withdrawal while refusing to abandon its nuclear weapons ambitions - the message that intransigence pays. +Indeed, it should not be forgotten that North Korea maintains an army of 1.1 million troops. +Moreover, the manner in which the Bush administration unveiled its withdrawal plan has weakened the credibility of the US-Korean alliance. +America's unilateral announcement has fuelled rumors to the effect that withdrawal must have something to do with the rising tide of anti-Americanism in South Korea, and especially with the country's reluctance and delay in dispatching an additional 3,600 of its own soldiers to Iraq. +The Bush administration tries to rebut these charges by saying that the plan will not weaken the deterrence capabilities of American forces, for America's far more powerful air and naval presence in the area will be maintained. +Moreover, the US plans to strengthen South Korea's own forces by supplying some $11 billion worth of high-technology equipment over the next five years. +Militarily, this argument does make sense. +Politically and psychologically, however, the method, let alone the timing and implementation of the withdrawals, raises many questions about the ongoing viability of the US-Korean security alliance, for the alliance now seems adrift, without a common purpose and with little direction from either side. +Yet the Bush administration insists: "The US views South Korea as a strong and steadfast ally. +We are committed to South Korea's security and to our alliance and partnership with Seoul." +If Washington is serious about these words, it should transform this commitment into a long-term and comprehensive alliance that can survive the current estrangement - and continue even after Korean unification - by making a joint declaration with South Korea's government at the highest level. +In order to allay misgivings and restore trust in the alliance, it is necessary for the US and South Korea to reaffirm their common interests and values in pursuing deterrence, nonproliferation, stability, and democracy on the Korean peninsula and across Asia. +Once they resolve to continue their alliance with these purposes in mind, it should be possible for responsible officials to work out guiding principles for concrete security cooperation. +Specific negotiations on withdrawing American troops from Korea or on redeploying them from the DMZ to south of Seoul must be carried out according to these principles. +In so doing, America must treat South Korea as a full partner with its own voice in making decisions that affect its security interests. +As an American ally for 51 years, and as East Asia's third-largest economy, South Korea is entitled to be fully consulted on such decisions. +Despite anti-American sentiments among some South Koreans, a majority of the country's people wants American forces to remain as a stabilizing force. +Securing a peaceful and nuclear-free Korean peninsula, a place where the interests of China, Japan, Russia, and America directly intersect, is one of the most important security goals anywhere on the planet. +For this reason, America and South Korea must restore a strategic vision for the future. +The EU Must Start Negotiations with Turkey +A formal recognition by Turkey of the Republic of Cyprus, including its extension to the Northern part of the island, was not requested as a precondition for starting accession talks. +This is a complex matter related to the efforts by UN Secretary General Kofi Annan to negotiate a comprehensive settlement leading to reunification of the island.   +Last year, both Turkey and the Turkish Cypriot community accepted the Secretary General's proposals, which were, however, rejected by the Greek Cypriot side. +There is every reason to expect Annan to resume his good offices soon and to bring the question to a positive conclusion well before Turkey's possible entry into the EU around 2015. +The Cyprus issue should therefore not be construed as an obstacle to the start of negotiations. +The same is true of the reported intention of some EU governments to have the so-called "Privileged Partnership" concept explicitly included in the negotiating framework as an alternative to full membership. +This proposal was discussed at last December's European Council meeting and rejected, resulting in a reference to "open-ended negotiations" in the Council's conclusions. That wording -- never used in previous enlargement rounds -- may have ruffled Turkey's feathers, but it was finally accepted as the type of constructive ambiguity that is so often used in international diplomacy. +It is nonetheless obvious from the very nature of accession negotiations that full membership must be the goal. +Without that prospect, no candidate country would go through the painful process of adopting the tens of thousands of rules and regulations contained in the Acquis Communautaire (the body of EU law). +To ensure that it does, is, after all, the main purpose of accession talks. +Moreover, it is difficult to imagine what advantages could be offered to Turkey in the framework of a "Privileged Partnership" beyond its long-time status as an Associate Member of the EU. +The Customs Union concluded ten years ago allows free trade for all but agricultural goods. +Turkey is invited to Council meetings, it can participate in various EU programs and in manifestations of the European Common Foreign Policy, and, as a member of NATO, it is a partner in EU-NATO security cooperation. +Finally, like all candidate countries, Turkey also receives financial and technical assistance in support of ongoing reform programs. +Short of full membership, there is hardly room for added value in Turkey's relationship with the EU. +Enlargement Commissioner Olli Rehn has spelt it out with the necessary clarity: "If we stick to what we have ourselves decided at the highest political level in the European Council, as we should, I am reasonably confident that the negotiations shall start on the October 3." +This statement is to the credit of the European Commission, and there is not much to be added, except to emphasize that it is up to EU governments to treat Turkey with the fairness that all candidate countries deserve. +To renege on formal decisions and commitments, or to add last-minute obstacles, would make a mockery of the Union's credibility. +Negotiations therefore must begin on October 3.   +Kosovo is Europe's Responsibility +Unfortunately, however, we still cannot turn the page on this pernicious conflict, which has led to so much tragedy and has been a cause of instability in the Balkans for far too long. +The issue will not go away, because Serbia persists in its rejection of the new reality, and is doing everything in its power to prevent normalization. +On orders from Serbia's government, Kosovo Serbs, who represent some 5% of the population, refuse to cooperate with Kosovo's government and the EU mission. +In doing so -- and this is the irony of the matter -- Serbs themselves are preventing the early implementation of the wide-ranging community rights foreseen in the Ahtisaari Plan, which would bring to them a normal and secure life. +On the international level, Serbia -- with strong support from Russia -- is actively engaged in blocking Kosovo's accession to the United Nations and other global or regional organizations. +It is difficult to comprehend what Serbia aims to achieve. +Nobody will deny that, for any state, being separated from part of its territory is a painful matter -- even if a different ethnic group largely populates that territory. +Still, there are examples in recent history when this has been achieved in a consensual manner. +In the case of Kosovo, after the Milosevic regime's brutal behavior in the 1990's -- including repression, massive human rights violations, and large-scale expulsions of Kosovo Albanians -- prompted NATO to intervene and the UN to take over the country's administration, return to Serbian rule became unthinkable. +Serbia's democratic leaders of today must understand that the loss of Kosovo -- although not their doing -- is an irreversible reality with which they must come to terms. +All they can achieve with their current policy of rejection is to delay the much-needed stabilization of the region following the break-up of Yugoslavia, and to make life miserable for Kosovo and its people. +Would it not be wiser to give a helping hand to the infant state, turning hostility into friendship and thus securing the future presence of Serbs in Kosovo? +Kosovo is, first of all, a European problem, and the EU has the primary responsibility to turn it into a success story. +Regrettably, the Union's inability to agree on a common policy has not only weakened its role on the international level, but has also become a major obstacle to determined action in the country itself. +The five member states that continue to withhold recognition of Kosovo should be aware that their stance encourages those who reject the EU mission any cooperation and impede its work. +It also makes it infinitely more difficult for moderate forces in Serbia to adjust to the new situation. +Only a unified EU position, combined with the knowledge that EU accession for Serbia is unthinkable as long as this conflict has not been fully resolved, may over time lead to a change of attitude on the part of both ordinary Serbs and their government. +Kosovo, on the other hand, needs a clear European perspective and unhesitating help to meet the daunting challenges it is facing. +At the moment, both are missing. +Nobody should be misled by the relative calm now prevailing in Kosovo. +The Balkans' recent tragedies have shown that problems that remain unresolved sooner or later turn into open conflict, and that the costs become unbearable for all. +There is no time for complacency. +Those concerned should take to heart what American President Barack Obama said in his inaugural speech: "Our time for standing pat, for protecting narrow interests and putting off unpleasant decisions -- that time has surely passed." +TB and HIV: A Combination Made in Hell +These realities prevent people who believe they are infected with TB from seeking treatment. +In many regions -- and especially in rural areas -- people still believe that TB patients have been bewitched, poisoned, or, as one Nigerian doctor put it, "cursed by the gods." +More than half a million Africans and two million people globally die each year from TB, the leading infectious cause of death for people with HIV/AIDS. +To make matters worse, HIV/AIDS is fueling a dramatic resurgence of TB. +In Tanzania, for example, the number of TB cases increased almost six-fold between 1983 and 2003, from approximately 12,000 to 64,500. +HIV/AIDS has resulted in a 6% annual increase in the prevalence of TB in Nigeria, which now has the highest number of new TB cases in Africa. +Yet TB is commonly considered a disease of the past. +Most people -- even those at greatest risk of contracting the disease, including people living with HIV/AIDS -- lack accurate information about TB's symptoms or where to seek treatment. +Despite the fact that in many parts of sub-Saharan Africa more than half of all TB patients are HIV-positive, most HIV/AIDS testing sites do not offer TB diagnostic and treatment services. +Those sites that do offer such testing find it much more difficult to diagnose TB among patients infected with both diseases, because current diagnostic tests fail to detect active TB in 60-80 % of people with HIV/AIDS. +Political leaders across the globe have made a series of public commitments to address the deadly double impact of TB and HIV/AIDS. +One year ago, in Maputo, Mozambique, for example, African health ministers declared TB a "regional emergency" and lined up behind a new "Global Plan to Stop TB," which includes specific targets and guidelines for addressing TB/HIV co-infection. +Some positive steps have been taken. +Tanzania has experimented with community-based programs that send health workers to the homes of TB patients in order to monitor treatment compliance and provide support. +Yet these efforts have not been taken on a large scale and are not sufficient to stem the dramatic resurgence of TB caused by HIV/AIDS. +The political will to implement the commitments that governments have undertaken is still lacking. +TB programs continue to lack the resources needed to deal with the rising number of cases; health workers are overworked and underpaid; and better tools for diagnosing and treating TB/HIV co-infection are desperately needed. +For Fatima and thousands of people like her, government declarations will become meaningful only when they are translated into better services. +This means rapid expansion of TB centers, so that patients don't have to choose between treatment and caring for their families. +It also means careful coordination of TB and HIV programs, so that people living with both diseases can receive treatment in the same location. +Finally, significant assistance and investment in research and development from wealthy countries is needed, so that free TB treatment is truly available and accessible to all. +The resurgence of TB has become a grave health emergency, and the world can no longer afford to be lethargic in addressing it. +As Stephen Lewis, the UN Secretary General's Special Envoy on HIV/AIDS in Africa, has stated, "TB and HIV act on each other with fatal force -- a combination made in hell." +HIV/AIDS activists and policymakers need to focus much greater attention on TB. +Fatima and those like her deserve nothing less. +Turkey Plays the European Card +Elected with a parliamentary majority almost big enough to change the country's constitution, Turkey's new Islamist government faces daunting challenges. +The most urgent is the looming war between America and Iraq. +Will Turkey maintain its vital diplomatic and logistical support for its American ally? +Or will religious solidarities reshape Turkey's orientation, as the new government joins other Muslim countries in opposing any invasion of Iraq? +Obviously, Turkey's Islamists are not the only ones with serious doubts about the war. +Many Turks share the view that the war could have harsh consequences for their country, both in the short and long run. +The struggling economy does not need the disruption of even a rapidly resolved military conflict. +The Turkish establishment (the military as well as the diplomatic corps) worries about the possibility that a war will fracture Iraq, leading to an independent Kurdish state on Turkey's southern border that would inevitably serve to strengthen Kurdish nationalism within Turkey, raising new threats to Turkey's unity and stability. +Turkey's secular bureaucratic establishment has traditionally been pro-West but with a strong dose of nationalism. +Aside from the Kurdish issue, their attention is now focused on Cyprus as well. +The Cyprus problem has reached a critical turning point, following a peace proposal put on the table by UN Secretary General Kofi Annan with a deadline impending at the end of February. +Meanwhile, the Greek Cypriots have been given their entry invitation to the EU, despite the fact that there is still no agreement on the Cyprus problem. +Cyprus now becomes a key issue athwart the road of Turkey eventually joining the EU. +Unresolved, it will provide a sure means of preventing Turkey's membership by those who are against it. +This constitutes another potential trap for the new government. +Despite the importance of Cyprus, it is the possible war with Iraq that poses the most severe test of the delicate balance that now exists between Turkey's conservative old guard and the more liberal reformers within the ruling Justice and Development Party. +Could it lead to a new power struggle in the party? +The fact that the party leader Mr.Erdogan was prevented through technicalities from becoming a deputy in the Parliament and thus Prime Minister makes the maintenance of this balance even more tricky. +Any open rupture will weaken the hands of the reformers who want to have close ties with the West and the US. +Though the Justice and Development Party has held power only briefly, it has already given clear indications of its choice. +Well aware of western doubts about the party, Erdogan travelled immediately after the elections to western capitals, pressing his argument that the change in government had not changed Turkey's fundamental orientation. +He is well aware of the contrast with the approach taken by Turkey's previous Islamist-led government. +Elected in 1996, after a campaign marked by strong claims of religious revival, the Welfare Party's Necmettin Erbakan made a conspicuous point of making his first official visits to Iran, Libya, Indonesia and Malaysia. +Erdogan stressed this pro-Western orientation again but a few weeks later, at the EU enlargement summit held in Copenhagen in mid-December. +The new government's aggressive lobbying before the summit was perceived both at home and abroad as a clear sign of its commitment to the EU cause. +Rejecting Erbakan's earlier accusation that the EU was a "Christian Club," Erdogan has campaigned openly for full membership. +In this, he received enthusiastic support from the Bush administration, which hopes that Erdogan might have found a way to mix democracy and Islam. +So far, Erdogan has played the European card skillfully, reassuring Turkey's western allies and boxing in the Turkish military, which remains skeptical of his party's intentions. +By accepting European demands for democratic reform as a pre-condition for EU membership, Erdogan played a liberalizing role, reinforcing his claim that his party represents a genuinely democratic option for a Muslim-majority country B indeed, that it is an Islamic version of the Christian Democratic parties that have long dominated Europe's political right. +There is no doubt that the political and economic program of Erdogan and his party is a dramatic departure from traditional Turkish Islamism. +Islamist movements have generally been characterized by strong anti-market and anti-western attitudes. +Yet Prime Minister Gul routinely calls his government "business friendly." +The coming months will be crucial. +To convince skeptics, the party will have to break with conventional Turkish policies on Cyprus, and with conventional Islamist doubts about Europe. +To top it off, Turkey must reach some agreement with its closest ally, the US, if it moves against Iraq. +Erdogan's insistent opening to Europe may be the key to how this all turns out. +By pressing for membership in the EU, he is reinforcing Turkey's long-held western orientation. +This may give him room to distance himself somewhat from American policy. +After all, in becoming more European, isn't Turkey entitled to share Europe's doubts about a war with Iraq? +India's Agony +Because the denizens of this netherworld know neither patriotism nor morality, they are easily lured into partnership with terrorists, particularly when they have reason to feel aggrieved. +In Mumbai, a large proportion of them are Muslims who were denied space in the formal economy and have developed strong vested interests over the past 50 years. +Details about the Mumbai outrage, where terrorists killed over 100 people, are still unfolding. +But we do know that at least 30 men armed with AK47 rifles and grenades held India's business and financial center hostage, targeting both Indians and foreigners, particularly Americans and British. +It is likely that this operation was propelled from Pakistan through the Lashkar e Tauba, a terrorist organization sustained by hatred of secular India and backed by shadowy Pakistani agencies and street support. +In the blood and drama of the events, however, we might miss a significant element of the story. +The attacks were an operation that must have required months of planning: serious weapons were deployed, a small army was mobilized, targets were studied, transport was organized, and weak points identified. +A plan of attack that involved hundreds of people was put in motion, and yet the massive infrastructure of India's government discovered nothing. +The chief of India's Anti-Terrorist Squad, Hemant Karkare (who lost his life in the battles that raged through the night) received a death threat from the nearby city of Pune, but his own unit did not bother to investigate it, since it was busy playing games on behalf of its political masters. +Complacency and politics gave the terrorists more protection than silence or camouflage ever could. +Indeed, the attacks represent more than a failure of police work. They represent a collapse of governance; these are the wages of the sins of administrative incompetence and political malfeasance. +India is a tough nation. No one should have illusions about that. +It has fought off Muslim terrorists in Kashmir, Sikh terrorists in Punjab, Christian terrorists in Nagaland, and Hindu terrorists in Assam and across the country. It understands that you cannot blame the whole community for the sins of a few. +But under ineffectual governance, particularly during the last three years, India is in danger of degenerating into a soft state. +Instead of being an international leader in the worldwide war against terrorism, it is sinking into the despair of a perpetual victim. +Indeed, India stands only behind Iraq in the number of people killed each year in terrorist attacks. +Three years ago, Indian Prime Minister Manmohan Singh rather smugly told President George W. Bush in Delhi that Indian Muslims were not involved in any act of terrorism. +The implication was that the integration of Muslims in Indian society constituted a success story.  Muslims, Singh implied, also benefit from the virtues of democracy, a conclusion that Bush happily repeated. +But Singh certainly did not fool any of the terrorists, some of whom may have read his self-congratulation as a challenge for them to act. +I am an Indian and a Muslim and proud to be both. +Like any Indian, today I am angry, frustrated, and depressed. +I am angry at the manic dogs of war who have invaded Mumbai. +I am frustrated by the impotence of my government in Mumbai and Delhi, tone-deaf to the anguish of my fellow citizens. +And I am depressed at the damage being done to the idea of India. +Putin's Ark +Recently I visited Moscow after five years away. +The city, which looked different and strange, impressed me by its ability to change. +My days back in Russia were divided between official meetings, hours wasted in traffic jams, and nights spent with old friends who tried to show me the best of Moscow nightlife. +On my first free evening, I was invited to a place called "Shinok." +The restaurant had many of the traits found in ethnic restaurants everywhere. +Different bits of kitsch, this time Ukrainian, were richly represented. +But the interior decoration had one unique element -- an artificial wall with windows separating a part of the restaurant hall. +Behind the wall was a stage set of a village yard. +A real cow, as well as chickens and geese populated that ersatz farmyard. +At times an old woman in traditional dress appeared to feed the animals. +Visitors enjoying borscht and pirogi observed her efforts with satisfaction. +"She works for the restaurant," my acquaintance explained. +"She feeds animals and sits in the yard to create the rustic ambiance." +Shinok was just an introduction to today's new wave of Moscow restaurant culture. +A few days later, I visited "The White Sun of the Desert," another ethnic hangout. +The White Sun existed in Soviet times. +Back then, it was called "Uzbekistan" and was nothing more than an obligatory culinary demonstration of the supposedly unbreakable union of the USSR's fifteen fraternal republics. +Although the restaurant interior had completely changed since then, its decorative themes remained the same. +Nowadays, however, the establishment is named after a popular Soviet borscht-western (or "eastern") filmed in 1969 and set in Central Asia during the 1919 Civil War. +The restaurant is decorated not only with oriental carpets, but with life-size figures of the movie's heroes firing machine guns or sitting on crates of dynamite. +This Soviet "orientalism" is reinforced by pretty waitresses dressed in sexy outfits more inspired by the Arabian Nights than by any Central Asian reality -- then or now. +But the Soviet past, not ethnic motifs, are the biggest element in contemporary Muscovite restaurant design. +The club-restaurant "Major Pronin:" is conveniently located in the vicinity of the KGB-FSB headquarters. +It is named after the hero of bad Soviet-era spy novels, a figure who was also the butt of many underground jokes. +The restaurant's interior is decorated with various pieces of espionage equipment. +But the main attraction is a shooting gallery where patrons can test their skills between courses. +Targets depicting serial killers and drug dealers have mottos like "Save a woman" or "Save a boy" on them. +In the middle of the wall is a target representing New York's World Trade Center being approached by an aircraft, with the inscription "Save America." +A new club called "Zone" -- Russian slang for a concentration camp -- is designed to reproduce the feeling of gulag life. +Barking Alsatian dogs, stern guards, and waiters dressed in inmate uniforms work hard to recreate the gulag's sinister atmosphere. +Russian literature is not forgotten. +If the restaurant "Pushkin" on Tverskoy Boulevard not far from the monument to the great Russian poet is designed to recreate the "aristocratic atmosphere" of the early nineteenth century, the combined bar and diner called "Gogol" on Stoleshnikov Lane is an attempt to recreate a vanished Soviet institution called "rumochnaia." +A "rumka" is a vodka glass from which exhausted proletarians could revive themselves. +Of course "rumochnaia" had nothing in common with Nikolai Gogol, but the establishment named after the famous writer does have a skating rink that is used once a day by a man dressed up as Gogol. +After my return to Washington, I had a dinner with an American politician who had just visited Saint Petersburg. +As a special honor, his Russian hosts organized an excursion to Strelna, the "Russian Versailles," which was recently restored from ruin to become the Petersburg residence of President Vladimir Putin. +The palace didn't impress the American. +The amount of marble used for renovation seemed excessive, and the understanding of what constitutes luxury appeared to correspond to the standards of a Holiday Inn. +The American's excited Russian hosts asked him constantly for his opinion of the palace. +Throughout the tour, the American answered with polite exclamations like "exquisite" or "striking." +Finally, they reached the attic. +At last, the American was excited. +The attic of the presidential residence was designed as a belly of the seventeenth-century ship. +"The last time I saw something like this was in a Hamburg beer hall in the 1960's," the politician told me. +How perfect, I thought, as I imagined Russia's president climbing the stairs to the attic of his palace to play the role of Peter the Great. +Like the customers in that Ukrainian-style village restaurant, perhaps Putin found his attic ark reassuring in some unconscious way. +A historical wave beyond his control had lifted the former KGB lieutenant colonel from out of the shadows to the pinnacle of power. +But fate might also just as suddenly wash him away. +What could be better than to have an ark at hand if one day the political tides turn? +Please visit this link for full size photos: +Rushdie a la Russe +June will be a cruel month in Russia's courts. +On June 16th, the rebellious oligarch Mikhail Khodorkovsky and his comrade-in-arms Platon Lebedev finally began to face the judges of the Meshchansky district court. +No doubt, this case will attract the Russian and international press. +Hearings began just the day before Khodorkovsky's trial opened in another case that is no less significant. +But this case is not about oligarchs trying to interfere in politics; it is about a group of artists and curators whose professional activities have unexpectedly turned into a political hot potato. +In January 2003, a gang of Russian Orthodox activists destroyed an exhibition in the Sakharov Museum and Public Center called "Caution! +Religion." +The organizers of the exhibition stated that they wanted to attract attention to the new role of religious institutions in Russian life. +But the Orthodox fundamentalists found the art blasphemous and offensive, and some trashed the exhibition. +Last December, prosecutors charged two Sakharov Museum officials and three of the exhibition's organizers with inciting religious hatred. +They now face prison terms of up to five years. +The vandals, meanwhile, were hailed by church officials as heroes. +All charges against them were dismissed. +The vandals had influential protectors. +All of them were members of the congregation of St. Nicholas in Pyzhi, whose archpriest, Alexander Shargunov, is a well-known radical fundamentalist. +In 1997, he established a movement called the Social Committee For the Moral Revival of the Fatherland. +In 2001, the committee's Web site carried instructions on how to vandalize "immoral" billboards by splashing paint on them. +Followers promptly destroyed 150 billboards in Moscow. +A group of well-known nationalist intellectuals, including film director Nikita Mikhalkov, artist Ilya Glazunov, and writers Valentin Rasputin and Vasily Belov, weighed in with a petition calling the exhibition a "new stage of conscious Satanism." +They wrote that Russia's enemies were bent on humiliating the powerless "Russian people, their objects of worship, and their historic values." +Who, precisely, were these powerful enemies? +The intellectuals didn't identify them, but the fascist political party Pamyat (Memory) did not hesitate. +The appeal posted on its Web site called on Orthodox Christians to protect "our Lord Jesus Christ" from "Yid-degenerates," using the most derogatory Russian term for Jews. +These alarming events in the art world have taken place against a background of rising nationalism and Orthodox assertiveness in Russia. +The Orthodox Church has acquired enormous political clout in recent years, and few politicians risk offending it. +The Sakharov Museum exhibition was subjected to a vituperative media campaign, and the matter was almost immediately taken up in the Duma, where nationalist deputies vied with each other to denounce the artists and laud the vandals. +In February 2003, the Duma passed a decree stating that the Sakharov museum exhibition's purpose was to incite religious hatred and to insult believers and the Orthodox Church. +The state prosecutor was ordered to take action against the organizers, with 265 of 267 deputies approving the measure. +In April 2003, the Duma voted to toughen the law against inciting religious hatred by adding prison terms of up to five years for offenders. +In December 2003, Sakharov Museum director Yuri Samodurov was charged with actions "leading to the provocation of hatred and enmity." +If found guilty, he could be sentenced to up to five years in prison. +Church officials are not calling for that harsh a penalty. +In March 2004, the Moscow Patriarchy's External Relations Department issued a statement that surprised everyone. +It asserted, in effect, that the Sakharov Museum exhibition organizers had committed an administrative rather than a criminal offense. +The difference is that administrative offenses are punished with fines, at most, not prison terms. +Such a softening of the church's position was probably the result of the public outcry in Russia's liberal press. +Yet the pogrom at the Sakharov museum provoked a chain reaction of similar attacks on contemporary art by Orthodox fundamentalists whom the church has been unable to control. +Anna Alchuk, an artist who participated in the exhibition in the Sakaharov Center and was later charged, said she had read all 14 volumes of evidence collected by the prosecutor, and that 11 volumes consisted entirely of letters from "working people" expressing outrage at the show and demanding that the artists be punished. +Almost none of the writers had seen the exhibition - most had signed form letters. +"The events around the exhibition discredit the Russian Orthodox Church, just as the fatwah condemning Salman Rushdie to death discredited Islam," said Elena Bonner, Andrei Sakharov's widow. +The outcome of the court hearings is difficult to predict, but it will answer the question of whether Russians have lost the freedom artistic self-expression that they gained after communism's fall. +Disillusion with "democracy Boris Yeltsin-style" has pushed President Vladimir Putin to search for an ideology based on nationalism and the glorification of the state. +Putin calls it "managed pluralism." +As we can now see, the Social Committee For the Moral Revival of the Fatherland wants to be among the managers. +The Globalization of Science +For example, we know that someone who smokes two packs of cigarettes a day is likely to have a serious problem with cancer some 40 years later. +And science predicts that, unless we severely constrain consumption of oil and coal around the world, the climate will continue to warm, increasing ocean volume and melting huge amounts of ice in the Arctic and Antarctic -- thereby causing disastrous rises in sea level. +These are but two examples of thousands of instances in which it makes good sense for decision-makers to take into account what science can predict about the future. +And yet, what science knows is far too often overlooked when high-stakes decisions are made. +This is not to say that scientists should dominate the government decision-making process. +It is the business of politicians, not scientists, to consider the relative costs and benefits of the options before them, weighing them as they see fit in reaching their conclusions. +But many such judgments will be poor ones without effective scientific input. +For example, the United States government is well-served by an organization called the National Academies, based on three honorary organizations composed of the nation's most distinguished scientists, engineers, and health professionals (the National Academy of Sciences, National Academy of Engineering, and Institute of Medicine, respectively). +This independent, non-governmental organization produces more than 200 reports a year, most in response to specific requests from the US government. +These requests range from questions about the health hazards of trace amounts of arsenic in drinking water, to questions about how best to support various forms of scientific research. +Through a rigorous review process, the Academies insist that each report be limited to what science can say about the subject based on evidence and logic, without preempting the decisions that need to be made by others. +Thus, for example, the report on drinking water predicted the frequency of bladder cancers that would eventually occur in a population exposed to levels of five, 10, or 20 parts per billion of arsenic. +But it did not say what maximum arsenic concentration the government should legislate. +The full text of some 3,000 reports by the Academies are available online (at +However, there are other important science-based issues that require study by internationally-based organizations in order to be widely accepted. +To meet this need, the InterAcademy Council (IAC) in Amsterdam was founded in 2000 by a worldwide organization of science academies called the InterAcademy Panel (IAP). +The IAC is governed by a Board that includes a rotating group of 15 Academy presidents from around the world, representing nations at a range of economic development levels, and its reports present a truly international perspective backed by the world's best scientists and engineers. +The IAC provides advice on subjects requested by the United Nations and other international organizations, all of which is freely available at Inventing a Better Future: A Strategy for Building Worldwide Capacities in Science and Technology . +It argued convincingly for the importance of supporting science and technology institutions in every nation that focus on harnessing the increasing store of international scientific and technical knowledge to meet that nation's needs. +Inventing a Better Future also provided detailed guidance to governments and international organizations on how to build institutional capacities for science and technology in both developing and industrialized countries. +The IAC's most recent effort, entitled Lighting the Way: Toward a Sustainable Energy Future, presents an ambitious science-based agenda for meeting the world's enormously challenging energy requirements. +An important audience for each IAC report are the 100 academies of science that belong to the IAP.  Each has a special responsibility for disseminating a report's recommendations throughout its own country, which can considerably enhance the academy's effectiveness in influencing national policies. +The combination of the IAP and the IAC is an important new experiment for providing international scientific advice -- an experiment that has only just begun to demonstrate its potential effectiveness for spreading the benefits of science and technology to all humanity. +• because pensions are available only for a few executives in the formal sector and for state employees, with nothing provided to the rural poor; +• because free university education is a form of redistribution from poor to rich because the poor are taxed to pay for university, but rarely get to go; +• because expenditures for primary education often end up being captured by teachers' unions in order to guarantee privileges for their members; +• through health expenditures that are often concentrated on hospitals in relatively prosperous and politically important urban areas; +• because free water and electricity are mostly a subsidy for the urban middle class and for rich farmers. +Checks and Balances in an EU Constitution. +EU Commission President Romano Prodi has proposed a scheme to strengthen the Union's executive. +Britain, France, and Spain are working on an opposing plan that will consolidate EU executive powers among the biggest EU states. +What's the ordinary European to think? +Europe's citizens scarcely grasp the issues at the heart of the European Constitutional Convention in Brussels. +Mountains of detail obscure problems; sterile, misleading national discussions that pit "Euroskeptics" against "Europhiles" muster sound and fury but clarify nothing. +So complicated do many issues seem that some newspapers and broadcasters have abandoned reporting about the Convention. +EU citizens can secure a clearer understanding of what the Convention should achieve by asking this question: how should governmental functions be divided between the EU and its member nations? +To answer this, we need to grasp government's true purpose. +Government should provide citizens with public goods: collective defense, legislation and regulation, enforcement of the rule of law. +These can be provided at different levels: local, regional, national, or supranational government, i.e., the EU. +But what is the right level? +In some areas, decentralization works because it recognizes diverse local or national communities. +However, local decisions often have repercussions on citizens in other communities. +So certain services should be allocated to a broader geographic unit because they have externalities (that is, interdependence of effects). +Europe's allocation of governmental powers should be based on the principle that institutions carry out only those activities with clear economies of scale and where differences of opinion are modest. +The lower a government activity's externalities, the more it should be localized. +Low externalities imply limited benefits to be gained from centralization; deep differences among citizens imply that the costs of harmonization would be too high. +No longer can the lira be devalued to favor Italian exports to the detriment of the French, followed by a French reaction, etc. +In educational policy, however, to impose the same system on all members would not create economies of scale. +Of the areas of public policy with high economies of scale or externalities, two stand out: the common market and competition; and foreign policy and defense. +The former covers antitrust, trade, and the common currency. +Some think that fiscal policies - from the structure of taxation to welfare, to budget balances - should also be harmonized. +But national preferences are diverse, and if mechanically imposed, fiscal centralization might incite resistance. +Nor do centralized fiscal policies have any real raison d'être from a constitutional point of view. +The US Constitution, for example, does not prescribe balanced budgets for the states. +Only in exceptional circumstances is fiscal harmonization justified: prohibitions, say, on fiscal incentives aimed at limiting competition, impeding commerce, or restricting the movement of capital. +It would be absurd if New York pursued a different foreign policy than Texas. +Much the same is true in Europe. +The addition of new EU members implies that more internal differences will occur, which means that fewer centralized policies are justified. +These considerations suggest a series of principles for the Convention to consider: +1. +The EU Constitution should establish unequivocally which prerogatives belong to Europe and which to member countries. +When in doubt, the principle of subsidiarity suggests that national states remain supreme; +2. +European-level institutions should guarantee the functioning of markets, including competition, commercial, and monetary policies; +3. +Fiscal policy should remain largely decentralized, save for a few exceptions; +4. +Foreign policy and defense are areas of federal competence, to be delegated to Europe at a proper time; +5. +The creation of new areas of federal competence should be accompanied by decision-making mechanisms found in genuinely representative democracies. +So "No centralization without representation." +A. Alesina, I. Angeloni & L.Schuknecht, CEPR Discussion Paper no. 3115. +Europe faces an historic opportunity. +America's founding fathers wrote a Constitution that has lasted over 200 years. +Members of the European Convention obviously face a far more complex and diverse society-and thus a more daunting constitutional challenge. +But they can succeed by displaying comparable wisdom and foresight. +Some countries -- Mexico, Colombia, and Peru -- appear to want a privileged direct relationship with America. +Other countries -- Bolivia, Chile, the countries of Central America -- prefer regional solutions in which they have a clear and equal say. +The latter group, for example, are generally supportive of the plan to build a Community of South American Nations, a scheme backed primarily by Argentina and Venezuela. +The Mercosur countries don't want a confrontation with anyone, including the US, but do seek a more just and democratic international system. +But it is the ideological picture that presents the starkest contrasts. +Indeed, there could be political consequences that could affect the entire region if the confrontation between Venezuela and the US worsens beyond today's tense relations, or if there were an electoral victory for the Frente Sandinista de Liberación Nacional in Nicaragua, or for Evo Morales's Movimiento al Socialismo in Bolivia. +The eventual formation of a triangle that links Cuba, Venezuela, and Nicaragua is likely to be considered a direct threat to regional stability by the United States, which would have dangerous consequence of putting Latin America atop the security agenda of the Bush administration. +Managing Iraq's Oil +In recent months, Iraq's oil production has grown to more than two million barrels per day. At this rate, current oil output and oil exports now exceed post-invasion predictions. +Experts had argued that funding shortages, lack of security, the problems of stabilizing a legitimate government, and technology shortfalls would severely limit Iraq's output. +Despite the odds, Iraq's daily output reached a post-invasion record of 2.5 million barrels in March. +A number of factors enabled Iraq to increase its output. +Most significantly, the Bush administration gave Iraq $2.3 billion to restore its oil production. +After the invasion, no one expected Iraq to get loans, let alone outright grants. +Instead, $2.3 billion was invested directly into the Iraqi oil sector. +To protect the oil fields and other facilities, the Americans dedicated a massive, overwhelming force of soldiers and private contractors. +The level of protection was unprecedented even compared to Saddam's regime. +On the technical side, the Bush administration hired the world's best oil service companies to revamp Iraq's technologically challenged oil fields. +They still have a long way to go, but significant improvements are already evident. Moreover, the war didn't change the quality of Iraqi fields, which are still among the richest in the world and can produce oil with relatively little effort and investment. +Finally, high oil prices in the past 12 months provided an unexpectedly large windfall to the Iraqi budget, allowing for the financing of other sectors without slighting the oil industry. +High prices also enabled the Coalition Provisional Authority to add even more private security personnel to protect refineries and pipelines. +Granting Iraq the money to restore its oil industry was one of the best post-war decisions that the Bush administration has made. +The money allowed Iraq to begin to address security, production, and technology issues throughout its oil system. +But the question remains: will output growth continue following the transfer of sovereignty to an Iraqi government at the end of June? +Despite massive injections of funds and unprecedented security, insurgents have still managed to halt or reduce oil production and exports several times since the invasion. +The bombing of a pipeline or other oil facility somewhere in Iraq remains almost a daily occurrence, and the transfer of power has not reduced these attacks so far. +Like the Bush administration and Saddam himself, the insurgents understand that whoever controls Iraqi oil controls Iraq's destiny. The new Iraqi government, even supported by US military might, will simply not be able to guarantee a predictable flow of oil, and output will remain quite volatile. +At the same time, maintaining the flow of funds into the Iraqi oil sector is essential, not only for its growth, but for its very survival. +Money brings technological regeneration as well as security. +Under even the best circumstances for Iraq, with oil prices remaining high, the funds available to maintain and modernize the oil industry are limited. +If oil prices decline in the future, the oil industry will suffer severely. +This makes for an interesting relationship between Iraq and Saudi Arabia. +Only Saudi Arabia can manage the global output of oil in such a way that will make room for Iraqi oil and keep prices high. +In contrast, only Saudi Arabia can flood the market and reduce prices far below their current level. +A decline in oil revenues could be devastating to the fledgling Iraqi government. +Current oil revenues are barely enough to cover state expenses, let alone pay for reconstruction, debt, and war reparations. +Even if President Bush wins reelection, it is highly unlikely that the US will make another outright grant to a sovereign Iraq. +Theoretically, international loans could be an alternative, but who would lend to an unstable government, let alone a government whose legitimacy has not been fully established? +Likewise, privatization is out of the picture for now. +The new government will have to make do and chart a slow path for its oil recovery, just as Saddam's regime did. +At the same time, the logic of renewed American support for the Iraqi oil industry remains powerful. +Normal financing is not forthcoming. +Only grants from the US will reduce output volatility. +Saddam's regime caused most of the volatility in the oil market in the last 30 years. +In fact, every peak in oil prices since 1973 was caused by an event related to Iraq. +One would hope that his removal would reduce market volatility and stabilize oil prices. +Unfortunately, Iraq appears set to continue to be a major source of high oil prices, owing to highly erratic output. +For the foreseeable future, one of the principal outcomes of the invasion of Iraq will be greater volatility and thus higher prices. +The Perilous Fantasy of Energy Independence +increases energy insecurity. +However much politicians who call for energy independence might prefer it otherwise, the market has chosen oil as a staple energy source. +So governments should ignore neither the valid interests of oil exporters, on whom consumers in their countries depend, nor exporters' reaction to the rhetoric of energy independence or to steps taken to achieve it. +Isolationist politicians may not care about other countries, but they should think twice lest they harm their own. +The biggest threats to the world's energy security are not terrorist attacks or embargoes by oil-producing countries -- short-term events that can be dealt with quickly and effectively through various measures, including reliance on strategic petroleum reserves, increases in production, and diversion of oil shipments. +Instead, the main threat to the long-term sustainability of energy supplies is the mismatch between investment in additional capacity and energy infrastructure, on one hand, and growth in demand for energy on the other. +Major oil exporters could respond in a variety of ways to political posturing on energy, most of which would exacerbate rather than ameliorate the global energy situation. One of the most plausible scenarios in response to calls by governments and politicians around the world to reduce or even eliminate dependence on oil is a relative decline in investment in additional production capacity in the oil-producing countries. +An energy crisis in this case is almost certain if those who press for energy independence fail to provide a workable alternative in a timely manner. +Of course, these efforts will almost surely fail to replace oil within a reasonable time, as they are not market-driven and require heavy subsidies. +Indeed, confronted by political leaders' hostile rhetoric, oil producers have a strong incentive to increase production in order to lower oil prices to levels that undermine the economic feasibility of alternative energy sources -- a logical interventionist policy to counter the anti-oil interventionist policies of consuming countries. +After all, a collapse in oil prices would be a death sentence for several new energy technologies, and, not incidentally, would increase demand for oil. +Even if the oil producing countries do not intentionally bring about an oil price collapse, they might accelerate production as much as they could in the short term, while oil still had some value. +But lower oil prices, coupled with expectations of a decline in demand, would in turn put pressure on oil-producing countries to reduce planned investments in production capacity or even to mothball major projects, as they have done in the past, leading to a decline in oil supplies. +Thus, if alternative energy technologies did not come on-line by the time oil production started to fall, global shortages would become inevitable, while closing the investment deficit would take years, even in the face of rising oil prices. +In spite of these possibilities, let's assume that plans for energy independence succeed, and that several European countries, the United States, Japan, China, and India become self-sufficient. +Major oil exporters could then seek to use their now less-valuable oil at home as cheap fuel for an expanded heavy industrial sector. +Instead of exporting oil directly, they could export their energy embedded in metals, chemicals, and manufactured products at prices that undercut anything producers in the oil-consuming countries, especially Europe and the US, could match, given their dependence on higher-cost alternative energy sources. +Energy independence thus could destroy entire industries, especially petrochemicals, aluminum, and steel. +In fact, cheap energy in oil-producing countries might make their new industries competitive with those in China, India, and Southeast Asia. +The net result would be a loss of jobs and weakened economies. +Countries might end up energy-independent, only to become steel-dependent or petrochemical-dependent. +So what would come next? +Would politicians, with their perpetual fascination with "independence," attempt to eliminate dependence one commodity at a time? +Put another way, would the cause of "energy independence" seek to reverse globalization? +Oil is a finite resource. +Only long-term, market-oriented, economically viable, and sustainable energy options can ensure economic growth in both producing and consuming countries. +Isolationist policies, by contrast, always lead to shortages and discontent. +No matter how energy independence is pursued, it will never amount to anything other than an unattainable -- and potentially dangerous -- fantasy. +The Endless Iranian Nuclear Crisis +Iran, it is often claimed, has no need for nuclear power, given its abundant oil and natural gas reserves. +But the Iranian government is under economic and political pressure to supply increasing amounts of electricity to its growing population and fragile economy. +Using oil or natural gas for domestic electricity threatens oil and gas exports, which are the principle source of government revenues. +Indeed, with domestic oil consumption growing at a higher rate than production, government revenues from oil exports are already in decline. +Thus, nuclear power will halt the decline in government revenues by freeing more oil and natural gas for export. +Iran's natural gas resources, if developed, would not be a substitute for cheap nuclear power, because gas is more profitable in other uses than in power generation. +The Iranian government fears that electricity shortages, slow economic growth, and high unemployment will turn the populace against it. +As social tensions increase, political turmoil will follow. +Nuclear power offers the possibility of cheap, plentiful electricity, which will contribute to social and political stability. +Iranian experts argue that, in considering the trade-off between internal unrest and external sanctions, the Iranian government must choose between domestic security and international security. +Domestic pressure could very well bring down the regime, but international pressure will not. +History is on the side of the Iranian government. +The Islamic Revolution has survived a brutal war with Iraq, economic sanctions, and decades of international pressure and isolation from the US. +Moreover, Iran's leaders remember that the Shah was forced to flee the country in 1979, despite having strong international support. +While there may be security reasons for any future US administration to oppose even a civilian nuclear program, American policymakers also recognize the strategic impact that nuclear energy will have in stabilizing the Iranian regime. +The US and Iran have been fighting proxy wars since 1979, and their ongoing conflict means that proxy wars will continue in Lebanon, Iraq, Afghanistan, and the Caspian Sea region, as will trade and investment wars. +Indeed, as long as China and Russia have money to invest and arms to sell, most UN sanctions will be toothless. +Iran will continue to threaten the world community that it will use its oil weapon, but this is highly unlikely. +It is not in Iran's interest, under any scenario, to decrease oil exports, let alone halt them. +However, domestic pressure, a sense of nationalism, and the need to improve its bargaining position with Western countries might force the Iranian government to respond to harsh UN sanctions or an air attack on its nuclear facilities. +But even under these extreme circumstances, Iran will still need its oil revenue. +A symbolic cut or embargo, while possible, would have little impact on world oil markets. +Iran's government has more effective options to respond to attacks from the US and its allies. +Its supporters in Iraq might cripple Iraqi oil exports from Basra, which would damage US plans in Iraq while boosting Iran's oil revenues, or limit the availability of fuel to the US Army by attacking roads and bridges, especially the Kuwait City-Baghdad highway. +The world community will continue to pay a high price for the nuclear standoff, which will cast a shadow over world oil markets for years to come. +Some experts argue that it has already raised oil prices by about $15 per barrel. +Ironically, an Iranian civilian nuclear program would enhance US and world energy security by making more oil and gas available in the global market. +But America's determination to destabilize Iran and the Iranian government's determination to retain power reduce the likelihood of this scenario. +How Does the Weak Dollar Affect Oil Prices? +The implications of pricing oil in any single-currency are more far-reaching than most people think. +For example, some oil-producing countries ask their customers to pay in euros, but that does not mean that their oil is priced in euros. +And even if dollar prices were to be replaced by euro prices, the impact of single-currency pricing on the oil market would be the same.    +While oil-exporting countries receive revenues in dollars (or their euro equivalent), they use different currencies to import goods and services from various countries. +Any change in the exchange rate of the dollar affects the purchasing power of these countries, and therefore their real income.  +Likewise, international oil companies sell most of their oil in dollars, but they operate in various countries and pay some of their costs in local currencies. +Any change in the value of the dollar therefore affects their cost structure and profitability. In turn, it affects reinvestment in exploration, development, and maintenance. +The relationship between the value of the dollar and oil prices is very complex. +While they can feed on each other to produce a vicious cycle, their short-term relationship is distinct from their long-term relationship. +In the short-term, dollar depreciation does not affect supply and demand, but it does affect speculation and investment in oil futures markets. +As the dollar declines, commodities -- including oil -- attract investors. +Investing in futures becomes both a hedge against a weakening dollar and an investment vehicle that could yield substantial profit, particularly in a climate of vanishing excess oil production capacity, increasing demand, declining interest rates, a slumping real estate market, and crisis in the banking industry. +OPEC might be correct to blame American policies and speculators for higher prices. +It is also correct that if OPEC had excess capacity, it would have already used it to flush out speculators to bring oil prices down. +OPEC can regain control in one of two ways: use its "claimed" excess capacity to flush out speculators, or use its financial surpluses to overtake them. +Recourse to the latter option means that, even without excess capacity, OPEC can still be in the driver's seat. +In the long run, however, statistical analysis of various oil industry variables indicates that a weaker dollar affects supply by reducing production, regardless of whether oil is owned and produced by national or international oil companies. +A weak dollar also affects demand by increasing consumption. +The result of a decrease in supply and an increase in demand is higher prices. +The lower dollar also reduces the purchasing power of oil exporters. +If nominal oil prices remain constant while the dollar declines, the real income of the oil-producing countries declines, resulting in less investment in additional capacity and maintenance. +The same is true of oil companies. +Consequently, oil prices increase. +Indeed, because oil prices were rising while the dollar was declining, capacity expansion by oil firms failed to meet forecasts for non-OPEC production in the last three years. +Even oil production in the United States has not matched the increase in oil prices, as rising import costs for tools and equipment -- partly a reflection of the dollar's weakness and other factors -- have forced project delays and cancellations. +Of course, the lower dollar means cheaper oil in Europe, Asia, and all countries with appreciating currencies. +Oil prices hit records in the US in 2004 and 2005, but not in Europe, which partly explains why economic growth there has not been affected. +When Americans paid $120 per barrel, Europeans paid only about €76 per barrel. +Several factors have prevented high oil prices from affecting the demand for petroleum products in the US in recent years, such as increased government spending, low interest rates, tax breaks, and an increase in real incomes. +To be sure, the weaker dollar has forced some American families to spend their vacations in the US instead of Europe. +But, since many Americans use gas-guzzling SUV's for their vacations, demand for gasoline has remained high. +Unless and until US consumption patterns change or a rebounding dollar increases oil production, Americans will bear the brunt of single-currency oil pricing.   +Europe's New Mission in Africa +For some people, raw military might is the only true measure of power. +But the 16 EU military missions that have now been carried out in support of the ESDP have much more to commend them. +Large parts of Africa need support, and Europe can and must lend a hand. +Nor is the EU's new style of political-military engagement in Africa a throwback to colonialism. +True, many African countries currently suffer from instability, state failure, regional strife, violent internal political competition, and other assorted ills, including, massacres and large-scale brutality, civil war, massive movements of refugees, economic disruption, and environmental damage. +Yet the big picture in Africa is not uniformly bleak. +Some African countries are comparatively stable and prosperous, and the Continent possesses a youthful population that will soon top one billion people, abundant mineral reserves, and an inherent dynamism. +At the same time, we in Europe cannot afford to dismiss Africa's troubles as if they had no impact on our own societies. +The European project has been built on values that we deem to be universal, and we must make a very real effort to uphold them, not only as a moral imperative, but also because it is in our strategic interest. +The EU is by far the largest export market for African goods, and it also offers a home to large communities from almost every African country. +Likewise, a large number of European citizens and dependents are scattered throughout Africa. +In the early stages of a crisis, European intervention -- through political and financial assistance, diplomatic intervention, and even military action -- can prevent it from erupting into violence. +Moreover, when a crisis is winding down and there are openings for moderating influences, outside intervention can prove instrumental in enforcing peace and bringing warring factions to the negotiating table. +In countries that have experienced the horrors of civil war, the arrival of an effective military force from outside is generally welcomed, as was the case in both the 2003 and 2006 Congo operations. +Just by virtue of being there, the force shows the goodwill and commitment of the nations that sent it, and, by projecting a sense of law and order, it provides valuable leverage for honest brokers trying to mediate a peace deal. +Europe's policy toward Africa may suffer shortcomings, but at least there is a policy, which is based on supporting African states and regional organizations like the African Union whenever practicable, necessary and, above all, requested. +The ESDP takes into account the larger European policy, and aims to provide assistance in planning, training, and logistical support to missions and forces created by African states or groups of states. +For example, the recent concept of "European reinforcement of African capabilities in prevention, crisis response and conflict resolution" (which is known as ‘Recamp') openly calls for African ownership of this process. +Europe has never claimed to have the means of redressing all the strategic imbalances that exist in Africa -- nor does it have any intention of doing so. +Yet, taken together, the EU countries possess a considerable array of assets, including the military capability needed to conduct decisive operations. +Yet their most valuable asset is cultural: soldiers who are willing and able to interact with the local population, who are cautious in their use of lethal force, and who are ready to accept the many shades of gray that exist between conflicting parties. +Nevertheless, European military capabilities are limited, requiring that European planners look for "minimal" options, with the drawback that smaller commitments generally require a long-term perspective. +The ESDP has not functioned long enough to establish a clear track record. +Yet our modest ongoing endeavors in Congo − a police advisory mission known as EUPOL and a defense reform mission called EUSEC − and in Sudan, where 60 Europeans are providing staff support to the African Union's AMIS II mission in Darfur, offer grounds for hope. +The EU's members must above all recognize that Africa's ills have to be dealt with by Africans. +This is as much a matter of principle as of cold, strategic calculation, and it is here where the ESDP has much to offer: a long-term view, supported by a powerful economy with the assets needed to carry out humanitarian operations, conflict prevention, crisis management, and security support. +Foremost among the ESDP's advantages is Europe's cultural knowledge and understanding of Africa. +Today, former colonial powers have evolved significantly, just as have their former colonies. +On both shores of the Mediterranean, generations have passed and new connections have been formed. +It is the knowledge, understanding, and mutual respect that remain, and that are the cornerstones on which Europe's policy for Africa must be built. +Losing Turkey +Both the dominant Justice and Development Party (AKP) and its secular rivals remain publicly committed to pursuing EU membership, but in practice doubts have emerged. +French President Nicolas Sarkozy's insistence that a referendum should be held on Turkey's admission suggests that years of painful adjustment to EU norms will never produce the payoff of membership. +The US and the EU are evidently convinced that Turkey has nowhere else to go. +The Turks, they think, will fatalistically accept any snub. +But this cozy assumption overlooks a tectonic shift in Turkey's geo-political position. +Immediately after the collapse of the Soviet Union, Turkey looked to the newly-independent central Asian states in a mood of pan-Turkic romanticism. +These ancestral homelands exercised a hold on Turkish imaginations, but today it is business opportunities, energy resources, and other practical matters rather than ethnic unity that are creating a loose Turkic "commonwealth." +Most striking is Turkey's renewal of relations with Russia without damaging its ties to the newly independent post-Soviet states. +Turkey's ancient antagonism toward Russia briefly revived when the Soviet Union imploded. +In the early 1990's, some Turkish generals saw the humiliation of Russian troops in Chechnya as part of a long-awaited revenge. +But, while Russia (and Iran) were once Turkey's great geo-political rivals, today they are export markets and energy suppliers. +Energy is the key to Turkey's new geo-political position. +Its industry and population are growing dynamically, so its energy demands are producing geo-political synergy with Russia and Iran, neither of which can afford to cut the flow of oil and gas without provoking a massive internal crisis. +Meanwhile, as Turkey's attitude toward its neighbors has changed, its governing elite has watched the EU embrace ex-communist countries with far shakier market economies and shorter democratic records. +As one Turkish general put it, "If we had joined the Warsaw Pact rather than NATO, we would be in the EU by now." +Last summer's re-election of Prime Minister Recep Tayyip Erdogan's AKP, followed by the election of Abdullah Gul as the first president whose wife wears a headscarf, seemed to confirm the fears of anti-Islamic Europeans. +Yet, even if many AKP activists and voters are devout Muslims, Erdogan and Gul remain committed to European integration. +Time is running out, however, for them to satisfy their supporters and silence their critics by achieving it. +The problem is that the AKP's victories, together with America's courting of Erdogan and Gul, have triggered a crisis of direction among Turkey's once-dominant secular and pro-western elite. +Even if the AKP can rely on the allegiance of millions of voters and swarms of new members anxious to join the winning side, the secularists are deeply entrenched in Turkey's institutions, universities, media, and business. +But both ordinary AKP supporters and disillusioned secularists are now suspicious of America's actions and motives in the region. +Key military figures' tacit backing for the Turkish Parliament's refusal to endorse the March 2003 US-led invasion of Iraq suggests that Turkish nationalism could unite the AKP's rank-and-file MPs with their otherwise implacable foes in the secular camp. +If the EU were to snub Turkey openly over membership, or if America were to seem too lax on the Kurdish problem in Northern Iraq, a huge swathe of the two camps could well unite. +Turkey's links with Israel, for example, have been strained by Israeli investment in Kurdistan. +While Shimon Peres made a gesture of reconciliation by choosing Ankara as the setting for the first speech by an Israeli president to the parliament of a predominantly Muslim country, Israel's concerns about Iran are far more serious than are Turkey's. +Israel's two most irreconcilable enemies, Iran and Syria, are in fact among the most vocal supporters of Turkey's hard-line stance towards the Kurds. +America's conquest of Iraq de-stabilized Turkey's Western orientation more than the US cares to admit. +Most Turks don't want to see their country excluded from the West, but if the EU spurns them while speeding up entry for weaker candidates, Turkey may come to feel sufficiently strong and embittered to strike out on a new geo-political course. +The Euro Ark +Faced with the biggest test in its history, the euro is far from steering into disaster, as the Nobel laureate economist Milton Friedman predicted ten years ago. +On the contrary, Europe's Economic and Monetary Union is proving a major asset in these tumultuous times. +Doubters should remember that the euro was itself born out of crisis. +The single currency was conceived as an answer to the upheavals of the postwar period -- double-digit inflation, high unemployment, and speculative attacks on the pound, the lira, and the French franc. +It was the crisis of the European Monetary System that drove the euro's launch on January 1, 1999. +In ten short years, the euro revolutionized the global economic environment, rising to the status of the world's second currency and rivaling the dollar as a medium for international trade and finance. +The EMU is now the world's largest market, and continues to grow. +With Slovakia's entry on January 1, the euro spans 16 countries and 329 million citizens. +The benefits of a monetary union based on a stable macroeconomic framework and governed by an independent central bank are manifest: the euro area has enjoyed low inflation and low interest rates for much of the last decade, a boost in trade and investment, and rapid integration of financial markets. +Moreover, 16 million jobs have been created over the last 10 years -- a record more successful than even the US. +Today's financial turmoil and economic downturn are highlighting the EMU's advantages in several important ways. +First, the euro has eliminated the possibility of exchange-rate turbulence and speculative currency attacks that more vulnerable economies could have expected in the current turmoil. +As a stable and strong world currency, the euro is also limiting exchange-rate instability globally. +Second, the euro area benefits from an independent European Central Bank whose swift actions to ease liquidity constraints and coordinate monetary policy have recently helped to avert a financial meltdown. +Such rapid, coordinated steps by 16 national central banks would have been unthinkable. +Third, the EMU's stability-oriented macroeconomic framework has better prepared euro-area countries for economic storms. +Thanks to the fiscal rules of the Stability and Growth Pact, the euro area achieved its soundest budgetary position in 2007, bringing deficits to their lowest levels in 25 years. +This allowed many European Union countries to approach the crisis with room for maneuver. +Such are the EMU's benefits that the visible costs of remaining a non-member are beginning to recast the political debate surrounding euro adoption in several countries.  +Of course, the euro is no panacea, nor has it functioned perfectly over the last decade. +Divergences between euro-area economies in terms of growth and inflation have been a persistent challenge. +Though differences are no bigger than those found within larger economies such as the US or Germany, they risk being amplified by the crisis. +This is why it is even more important that we continue to improve the EMU's functioning. +This requires not just reinforcing resilience in the face of crisis, but also equipping euro-area economies for the longer-term challenges of globalization, aging, resource scarcity, and climate change. +In a potentially more volatile twenty-first century global economy, we must reap the maximum benefits of economic integration in terms of growth and jobs. +The key to a better functioning EMU is closer surveillance and deeper coordination of economic policies. +Leaders must start living up to the responsibilities that come with sharing a single currency. +They must recognize the impact that national economic policies have on the euro area as a whole, and thus discuss and coordinate economic programs at the euro-area level. +Here, the launch of the European Economic Recovery Plan -- the initiative for an EU-wide fiscal stimulus equivalent to 1.5% of GDP, endorsed by the European Heads of Government in December -- constitutes a major step forward. +This must now be followed by closer budgetary monitoring, particularly given that fiscal stimulus measures, the economic downturn, and bank rescue plans will take a toll on public finances. +The Stability and Growth Pact must remain the cornerstone of the EU's budgetary framework, and effective surveillance and peer support will be vital to help member states work towards balanced budgets once the economy rebounds. +Deeper fiscal surveillance should be matched by broader economic surveillance, especially since current-account imbalances have become more acute during the crisis. +The European Commission is now working on extending the focus of surveillance beyond fiscal policy so that we can identify risks stemming from macroeconomic imbalances or changes in competitiveness and address them before they become entrenched. +Finally, euro-area nations must strive harder to find common positions on international issues and to speak with a single voice in the global arena. +This is the only way to promote and defend the EMU's economic interests in a world where the challenges are global and overcoming them will increasingly depend on multilateral cooperation. +Consider November's international summit on the financial crisis. +Agreeing a common position ahead of the meeting gave Europe a greater role. +When the euro area manages to agree swiftly on a coordinated position, this can be instrumental to finding agreement in the EU as a whole and internationally. +It is vital we now build on this success and develop a genuine international strategy for the euro. +The European single currency has been a major success, but it remains a work in progress. +A decade after the euro's introduction, we must follow the example of its founders and turn crisis into opportunity by uniting in a spirit of cooperation and ambition -- and thereby reinforce the EMU's foundations. +Will Human Rights Survive Africa's Latest Oil Boom? +The region's economic stature was bolstered in 2003 with the advent of the Chad-Cameroon oil pipeline, a $4.2 billion project brokered by the World Bank that is expected to boost exploration and output in Chad and at offshore sites in Equatorial Guinea, while spreading the benefits more widely. +For example, with the pipeline crossing 890 kilometers of its territory, Cameroon will net $540 million annually in fees and royalties for the next 25 to 30 years. +All of this was made possible by what has been, by historical standards, an exceptional period of political stability. +Oil was discovered in Chad's southern Doba region in 1975, with 300 wells drilled so far. +But none of the reserves could be exploited until 1988, when Chad's protracted civil war finally ended. +With the subsequent oil boom, one would have expected the fortunes of Chadians and Cameroonians to improve at the individual, local, and national levels. +But instead we see a landscape of widespread poverty set against a backdrop of endemic corruption and official mismanagement. +So far, the governments in neither Chad nor Cameroon have been willing to publish any earnings records concerning the pipeline project. +This lack of transparency is not surprising. +For this reason, the World Bank imposed stringent conditions on Chad and Cameroon. +Both countries were required to deposit 10% of the expected oil income in a blocked foreign account intended for future generations. +At least 80% was to be invested in schools, healthcare, roads, electricity, and provision of potable water, while 5% would be allocated to the oil-producing areas and to settlements along the pipeline's route. +Periodic audits of oil accounts also were to be carried out. +Moreover, Chad and Cameroon were each to contribute $140m to the project, although this sum was paid entirely by the World Bank and the European Investment Bank. +Oil started to flow through the pipeline in July 2003, 16 months ahead of schedule, with the flow peaking at 225,000 barrels per day by the end of that year. +Now, 30 months later, interested groups and the larger public are angrily asking about the oil wealth that is yet to touch their lives. +Much attention is being focused on the terms of the so-called "host government agreements" concluded by the ExxonMobil-led financing consortium and the governments of Chad and Cameroon to govern the construction and operation of the Doba oil fields and the pipeline. +The report finds that the host government agreements place a price tag on protecting human rights by imposing large financial penalties if the operation of the oil fields or the pipeline is interrupted -- even to enforce valid laws. +During the same period, life expectancy grew by 11 years. +Despite longer retirements living standards among those on pensions improved enormously. +Is it likely that an equal increase in living standards could occur between now and 2040 (when there will be two working people -- as opposed to four today -- for each person in retirement)? +No, because social solidarity is not what it was. +After WWII, pensions were very low and the costs they imposed on workers were modest. +Because economies were growing, workers voluntarily accepted continuous increases in the taxes paid to finance the pension system. +Today, in all EU countries, the average income provided by pensions is much higher and, in some cases, such as in France, higher than many incomes received by the working population. +Rising pension pay-outs, when combined with continuous increases in taxes and social security contributions, have made those with jobs unwilling to contribute more to the retired. +This resistance has brought forward the issue of allowing capital markets to play a role in financing Europe's pension systems. +The rising popularity of personal retirement savings may also help enhance the efficiency of Europe's financial markets, the lack of which is partly responsible for Europe's slower growth and higher unemployment. +For countries where private pension funds are the most developed (the US, and Britain and the Netherlands) have the highest stock market capitalization. +• workers must participate in establishing a pension system to complement state pensions. +A proposed European Commission directive about professional pensions is now on the table. +Europe should be more ambitious. +The EU should put in place a common fiscal framework applicable to all capitalized forms of pension savings: pension funds, life insurance, or salary-reduction savings. +Wage earners opening a plan under a form and framework of their choice (say, a pension fund) should be able to deduct their contributions (up to a fixed ceiling) from income tax or, if they have no taxable income, should receive tax credits. +Further, up to prescribed limits, employee contributions should be, up to prescribed limits, matched by employers. +These savings should be constructed in such a way as to favor their being taken out in the form of annuities, without excluding (with an appropriate penalty) the possibility of a one-time withdrawal of the principal. +If pension reform is to work, attitudes toward savings must change. +Europeans should stop complaining that they save too much and consume too little. +In fact, Europe needs to invest more, and so must save more. +The economic policies of EU countries also need to be resolutely adjusted to promote investment, productivity, and growth. +If increased savings are used to finance public deficits or are invested overseas not least in the United States (too often the case nowadays), encouraging such savings may not be worth the effort. +Every now and then, Europe must act decisively to accomplish important political objectives. +Such was true with the euro's establishment. +An equally bold vision is required to assure Europe's future pensioners. +Europe and President Bush +ROME: What does the future hold for transatlantic relations? +That question arises with every new American administration. +Because worries about a "widening Atlantic" gap have existed since the early 1970s, it is tempting to proceed as if transatlantic relations will remain on roughly the same wavelength as before. +The truth is, however, that the US and the EU are rapidly evolving along their own paths: both sides of the Atlantic thus face the challenge of managing an ever more complex relationship. +Two other temptations must also be resisted. +On the European side is the temptation to speed the emergence of the Union as an international actor by constantly claiming autonomy or independence from the US. +Lingering anti-American undertones, of course, will invariably surface for, as in any long unbalanced relationship, the junior partner will tend to make declaratory statements that generate misperceptions. +Europeans should not succumb to this temptation, for the move from dependency to equal partnership is not measured by rhetoric. +Instead, Europeans must assume a fairer share of the transatlantic burden, putting in place a truly common European foreign policy, and think and act as a regional power with a global outreach. +If the Euro succeeds as a global currency, which I believe it will, and if Europe's rapid reaction force becomes a reality soon, as I also think it will, the EU will have secured the preconditions for a more equal partnership -- literally by putting its money (and soldiers) where its mouth is. +On the American side, the temptation is to overplay its "sole superpower" role by acting unilaterally. +But this is loneliness disguised as leadership and is not in America's interest. +National interests can no longer be effectively pursued unilaterally; US global interests are served best by multilateral action and bodies. +Even if, in military terms, America remains the sole superpower, military might is of limited use in the daily conduct of foreign policy. +America would benefit not less than Europe from an effective system of global governance in the achievement of its goals -- be it freer trade, a viable non-proliferation regime, containment and prevention of regional conflicts, or better regulated financial markets. +To this end, the US has a vital stake in the EU's coming of age as an international actor. +It should therefore do away with the traditional ambivalence of demanding a more mature and active Europe on one hand, all the time feeling uncomfortable with it on the other. +True, America officially welcomed the launching of a common European security and defense policy. +But recurring signs of US nervousness about the nature of this process exist. +Americans often ask whether it is all about better European capabilities -- which would be fine for NATO -- or about European integration (i.e. instrumental to a political project). +My response is that it is about both, and that Washington should support both. +A sober assessment of this process leads me to assert that a more capable and united Europe will usher in a more effective Atlantic Alliance and not, as some believe, in American disengagement from European commitments. +What the EU aims at is not a duplication of NATO structures or an alternative to the Atlantic Alliance. +The EU is preparing to deal -- jointly with US forces or with purely European forces when NATO as a whole decides not to engage -- with crises in and around Europe. +More than defense -- which will remain NATO-centered -- Europe is building up its security role as a regional stabilizer: a role that EU enlargement to include candidate countries in Central and Eastern Europe will strengthen. +For, contrary to what is often said in America's Congress, Europe already bears the lion's share of the peacekeeping burden (let alone reconstruction aid) in the Balkans. +It goes without saying that there should be "no taxation without representation." +If Europe's foreign and defense policies succeed, NATO should become more European. +Washington, however, should not worry about this: if Europeans see the Alliance as a more European organization they are more likely to commit themselves (in budgetary terms, too) to its success. +A similar logic of partnership applies to enlargement. +The concept of Europe is not immutable, and rightly so. +On the basis of a broad notion of security and stability, EU enlargement is every bit as important as deepening the EU. +Here a common transatlantic approach to both EU and NATO enlargement would enhance stabilization and integration in post-Cold War Europe -- to everyone's benefit. +A new and functional division of labor between Europeans and Americans is thus conceivable, provided it retains the framework of common political commitments and shared responsibilities. +What should not be pursued is a rigid, vertical and artificial division of labor, whereby the US plays the lone global leader (with Europe simply following) while the EU concentrates exclusively on enlarging its "house" (with the US disengaging from Continental security). +This would be unhealthy and make the transatlantic compound unsustainable. +The antidote is a genuine sharing of choices and decisions. +If divisive decisions must be taken, healthy partnership requires that they be discussed openly and honestly. +A case in point is the issue of National Missile Defense. +No matter what policy the Bush administration adopts, European reservations and doubts should be taken into account. +If Europeans want to have some influence here, they must play a unitary role by, say, encouraging America to update the ABM Treaty in agreement with Moscow. +That would help strategic stability, prevent antagonizing Russia (which remains a fundamental factor in European security) and avoid deteriorating the security climate in Asia. +The same is true of dealing with so-called "rogue States": here again, a better combination of US and European strategies could produce a more effective approach, based on a blend of engagement and resolve. +A new division of labor, and a new sharing of responsibilities, depends as much on economics as on security. +A stable Euro makes stronger cooperation possible and desirable: not only to prevent global financial instability but to avoid the risk of conflicting currency blocs arising. +Provided that the Bush Administration pragmatically pushes for more trade liberalization, we will be able to deepen transatlantic market integration, which will act as a boost for our economies. +Scope will also then exist for revitalizing the WTO, for which a strong European-American commitment is a necessary precondition, though not the entire solution. +Here a serious reassessment of our negotiating tactics and old habits is needed. +The WTO, but also the IMF and World Bank, must understand the evolving needs of those societies most vulnerable to the impact of globalization. +We need to reach out to the rest of the world in a more open and persuasive way. +The G-8 process, which Italy chairs this year, will test such resolve - on which rests the legitimacy of the entire process. +A renewed Euro-American partnership based on our own respective styles and instruments in foreign policy will benefit both sides. +The EU is rightly searching for its identity as a collective actor. +As Europe changes, so too does America -- in terms of its demographic and social composition, economic and political structures, geopolitical orientation and national psychology. +Granted, transatlantic diversity might cause occasional squabbles. +However, mutual interaction and equal partnership remain the only response -- especially if they are reflected into long overdue reforms of multilateral institutions and increased global governance. +Operating within multilateral frameworks, however tiresome, has more often than not served US national interests as well as those of Europe. +This will not change. +A stronger EU is America's natural partner, occasional competitor, but certainly not a rival. +It is the duty of governments on both sides of the Atlantic to persuade their publics of this. +Europe by Degrees +To be sure, impatient dissatisfaction has been a driving force behind European integration since its initial years. +But, as Robert Schuman wrote in his Declaration in 1950, Europe could not be built all at once. +Likewise, Altiero Spinelli, another of the EU's founding fathers, wrote late in life that without visionary Europeans there would be no Europe, but without pragmatic statesmen, the visionaries would have gotten nowhere. +The Reform Treaty's shortcomings are obvious. +Abandoning the name "Constitution" was probably necessary to bring all member states on board. +But not equally necessary is the enduring uncertainty about the common political platform upon which Europe's voice in foreign policy will have to rely. +Moreover, the Area of Freedom, Security, and Justice still requires unanimity for essential decisions in the fight against crime and terrorism and therefore, implying excruciating slowness. +Nor does the Treaty do enough to strengthen coordination of Europe's economic and budgetary policies. +Moreover, agencies such as Europol and Eurojust will be similarly subject to greater parliamentary scrutiny, and the budgetary procedure will be simpler and more democratic. +The EU Charter of Fundamental Rights will become legally binding and the judicial protection of citizens will be enhanced by facilitating their access to the European Court of Justice and by extending the Court's jurisdiction. +The Union's capacity as a global actor will be enhanced by merging the High Representative with the Commissioner for External Relations and establishing a single diplomatic service. +Europe's Constitutional Future +Last week, the President of the European Convention, Valery Giscard d'Estaing, submitted a so-called "skeleton" for a future Constitution of Europe. +All the ingredients of a constitution - values, principles, the rights of citizens, the competencies of the Union and its constituent institutions, etc - were included. +This document arose despite the fact that the Convention's mandate did not empower the delegates to produce a constitution. +According to the Nice Declaration, which I drafted as one of the participating prime ministers, we were only to simplify and restructure the EU's basic treaties. +As the C onvention worked, our mandate was transformed due to various pressures. +These came from member countries, from civil society organizations, and from letters, documents, and email messages from across Europe. +Democratic pressure changed our mandate. +When even the Foreign Minister of Britain, a country happy with its centuries-old "unwritten constitution," claims himself eager to have a written European Constitution, something truly has changed! +Yet, scholars such as Ralph Dahrendorf and Joseph Weiler suggest that a European constitution does not make sense because a democratic constitution presupposes a paramount common identity that is absent in an EU where individual national loyalties still prevail. +Others, such as Robert Dahl, argue that democracy requires smaller communities based on shared interests and personal relations. +For them, Europe may be too big to forge truly democratic institutions. +Such theoretical objections must be set against the fact Europe already exists - indeed, decisions are made everyday on the European level which determine our lives. +We may dislike it, but the EU is part of our system of government, like municipalities, regions, and nation-states. +So the question is not whether Europe exists, but whether we are satisfied with the way it functions. +If not, can we fix it, and is a constitution the way to do it? +The first problem in need of a "constitutional" solution that is tackled is Europe's clear and unified identity. +Not many people realize it, but because of the patchwork of treaties from which today's European institutions arose, "Europe" is not a unitary entity; indeed, the "European Union" and the "European Community" denote two different things. +The Community is the set of institutions created in the 1950's to establish a common market. +When we decided later to have a common foreign policy, and to cooperate in judicial and police matters, we invented the Union. +The Union deals with foreign policy; the Community with economic integration. +One consequence of this is that agreements with third countries that involve both foreign and economic matters require two distinct treaties: one for the Union, one for the Community. +This confuses even trained foreign diplomats who negotiate with Europe. +If it confuses them, how befuddling must it be for ordinary citizens? +How can a European citizen really identify with Europe if no single "Europe" exists? +Europe's indistinct legal identity has another deleterious impact. +If the Community does something that affects someone's rights, he or she can go to court. +But if the Union encroaches on your rights, access to a court may be closed because the Union happens to have no legal personality! +The next problem to be tackled - again with constitutional implications - is the anonymous, bureaucratic nature of European legal acts. +Criticizing institutions is as essential a part of democracy as protecting enumerated legal rights. +But Europe's institutions are hard to criticize because they produce acts that ordinary people cannot name or understand. +In national life, acts of parliaments are called "statutes" or "laws," and these usually have names that you can rally for and against. +In the EU we have " regulations," "directives," "decisions," "general guidelines," "common strategies," "common actions," "common positions" - a myriad that only experts can comprehend. +When a "directive" is issued, you don't know who is responsible; instead, they are known as, say, "Directive 17.62" (meaning that it is directive no. 17 issued in 1962). +In Italy there is now a controversial statute that will change the rules of criminal procedure in ways that might prove helpful to eminent public figures. +Well, the name of Senator Cirami is attached to that bill. +By god, we can fight about "the law Cirami"! +Would things be the same if the bill were called "Regulation 75"? +Because Europe has so many bodies that legislate - the Council of Ministers, the Council for Agriculture, the Council for Industry, the Council for the Environment, etc. - we cannot know who is doing what and why. +We need a single legislative council, a bicameral European Parliament, with one house representing member states, and the other the European electorate. +In this simplified system, legislation will be called legislation, and executive regulations, as in most legal systems, will fill in the gaps in primary legislation. +This is a system European citizens will understand. +The draft constitutional document presented last week introduces small but significant changes that may empower Europe's citizens to both identify with and criticize Europe. +It calls for a single, unified legal entity. +Whether it is called European Union, United States of Europe, United Europe, or something else, it will also provide for a unitary, simplified system of normative acts that will introduce more transparency and accountability. +The institutional structure envisaged by the proposed European Constitution should also reflect and help develop Europe's broader aspirations. +Europe must be more than a vehicle of economic integration, which is almost accomplished anyway. +At the simplest, we expect Europe to be fair. +We expect our social model to be realized. +We expect economic and social matters to be connected. +We expect Europe to play a role for good in the world. +Of course, roadblocks await. +One of them is that more Europe cannot mean a centralized system. +Democratic governments are too complicated for that. +Getting the proper balance among European, national, regional, and local institutions will be a crucial challenge. +But if the people are to ordain a Constitution for Europe, all of their ties and values will need to be respected by that Constitution. +Europe's Crisis of Leadership +Much less positively, EU member states have been slow to act in concert. +At first it was the European Commission that drew criticism for its slowness in making proposals to rally national governments and their policymakers. +Now it is the member states that are resisting the urgent need for a coordinated EU-wide policy response to the deepening crisis. +The speed and the severity of the economic slowdown are far greater than any of the post-war downturns of the past 60 years. +In Europe, we by and large failed to heed the warning signals of America's sub-prime mortgage crisis when it erupted in the late summer of 2007, and thus were unprepared when the next phase of the crisis engulfed European banks, too. +The lesson to be drawn is that the EU must move more quickly and with greater determination than has been the case so far. +Throughout the EU, people are asking, "What is Europe doing to address the crisis?" +The answer is "not nearly enough," and the political price may be high at next summer's European Parliament elections. +The remaining weeks of 2008 will be crucial to Europe's efforts to regain the initiative and to attempt to attenuate the effects of the crisis while also addressing unresolved problems on the EU reform agenda. +As Trustees of Friends of Europe , we would urge the European institutions and EU political leaders to renew their efforts regarding both the Lisbon Treaty and the Lisbon Agenda. +France's EU Presidency has done much to improve coordination between member states' responses to the financial crisis, and the European Commission has also begun to play the more active role that Friends of Europe called for on October 10. +The challenge now is for the presidency and the Commission to give fresh political impetus to the EU's stalled reform drive. +The December 11-12 European Council should signal clearly the timetable envisaged for re-opening the Lisbon Treaty's ratification process. Failure to do so would bring the risk of still greater political problems after next June's European elections. +The Lisbon Treaty is a step towards adapting the EU's decision-making mechanisms to the twenty-first century and a membership of 27 or more countries. +The global nature of the current crisis makes it plain that Europe must be able to decide quickly and coherently, or suffer adverse consequences. +There seems little doubt that public opinion across the EU is increasingly drawing the same conclusions. +The sovereign right of the Irish people to decide their own future is unchallengeable. +But Ireland should also allow the EU's other member states to proceed with the Lisbon Treaty if that is what they wish. +Even if another referendum is to be held in Ireland, the Irish government should foresee a procedure that, irrespective of the outcome, allows other member states to implement the essential parts of the Lisbon treaty. +The Commission now needs to take action to ensure that member states redouble their efforts with regard to the Lisbon Agenda for overhauling Europe's global competitiveness. +In 2000, the EU set a ten-year program of agreed reform targets, yet in many cases its member states have lacked the political will to implement them. +Europe's increasingly gloomy prospects make these reforms more necessary than ever. +The Gazpromization of European Energy Security +Concerns in the EU over energy security, fueled by increasing dependence on Russia, have never been greater. Together with the Russian authorities' expropriation of oil company Yukos, foreigners have been squeezed out of Russia's energy extraction sector. +Inevitably, many in Europe are questioning the value of the Kremlin's word. +Rather than turning away, the EU should seek deeper engagement and reciprocity. +It should facilitate further incorporation of Gazprom into the EU market through market liberalization and downstream integration. +Yet it must also press for Gazprom's ultimate restructuring and real market entry into Russia for European companies, because Russia's unwillingness to do so guarantees energy insecurity for Europe. +Indeed, the Putin administration established a track record of bending rules and bullying foreign investors, with the support of prosecutors, tax authorities, regulatory agencies, and courts. +At the same time, Gazprom has evolved into the dominant market-maker in gas for Europe, and its actions have made a mockery of EU efforts at greater collaboration with Russia. +Gazprom strategy deploys three tactics: co-optation -- cultivating partnerships with certain countries, political leaders, and corporations, as levers of its interests; preemption -- using upstream power and Russian diplomacy to manipulate downstream conditions and scoop up assets; and disaggregation -- dividing the EU through bilateral deals. +Gazprom's co-optation of Europe has been achieved mainly through Germany, where its partnerships with energy companies and banks have helped align the authorities with Russian aims. +Extensive lobbying, directly and by proxy, is underway to persuade European regulators to allow long-term supply contracts in the EU -- despite their deadening effect on competition. +Preemption by Gazprom has been accomplished through a raft of acquisitions. +Gazprom has flooded the market in Turkey, withheld gas in Ukraine, threatened to do so in Belarus, and offered preferential market access to willing partners, such as Italy. +In the Caucasus, the Kremlin has prevented Iran from establishing infrastructure to compete as a supplier of gas to Europe. +To stop Iran's gas, Russia effectively bought Armenia's entire energy sector, while its support for Iran's nuclear program helps maintain Iranian isolation, keeping away the Western money Iran would need to become a rival gas exporter. +Gazprom's dominance is reinforced by activities coordinated with the Kremlin to assert its influence in markets like Spain and Italy. +In exchange for gas deals with rival suppliers, such as Algeria, Russia has offered vast concessions on arms and preferential debt terms. +In other cases, the Kremlin acts punitively, as when it cut off oil supplies to Lithuania following the sale of the Mazeikiu Nafta refinery to a Polish company, or to Ukraine after its people voted for the "wrong" party. +The prime example of disaggregation is the Nord Stream pipeline, which appeals to Germany while angering Poland and the Baltic countries. +The undersea pipeline will cost three times as much as a new pipeline along existing land routes, undermines the energy security of Germany's eastern neighbors, and threatens the Baltic Sea's fragile ecosystem. +But, by delivering exports directly to Germany, Russia will be able to cut off gas to Ukraine, Poland, and the Baltic states without directly affecting West European supplies -- and Russia's recent behavior indicates that this is a real threat. +But Gazprom is worried about its upstream capabilities, as is evident from the decision to divert gas from its Shtokman field to Europe rather than liquify it for new North American markets. +As long as Gazprom remains opaque, Europe cannot know whether its key supplier is spending enough to develop future reserves. +The Kremlin's political battle to win control of Russia's energy sector has resulted in a dramatic reduction in the growth rate of domestic oil and gas production. +That is a problem for Europe. +Gazprom cannot be a partner to Europe if it does not invest in its own infrastructure, yet plays a leading role in stripping Russian private businesses, invests $14 billion in non-core assets, such as news media, and is run from the Office of the Presidential Administration. +The lights must not go out across Europe. +Brussels must demand transparency, symmetry, and the rule of law from Moscow, with the goal being a revolutionary integration of European and Russian energy markets. +Simultaneously, through the diversification of supply sources, massive investments in liquified natural gas (LNG), and a strong push in favor of the Nabucco pipeline and inter-connectors between the Mediterranean rim countries, Europe can move closer toward energy security. +The very downstream access Gazprom wants in Europe is the EU's trump card. +The EU should tell Gazprom that access to Europe's downstream assets is conditional on the reciprocal openness of Russia's energy sector. +The result would be a welcome place in the European energy market for a Russia that is both trusted and respected by its international partners. +Free Trade, Free Labor, Free Growth +Things are no better in Europe. +France has dealt the Doha round of World Trade Organization (WTO) negotiations a blow by rejecting the outline deal on agriculture. +European Commission President José Manuel Barroso believes that protectionist pressures are increasing.  +When the Doha trade round was launched shortly after September 11, 2001, there was plenty of international goodwill. +But disenchantment with globalization -- and, in some regions, fear of immigration -- has since set in. +A recent Financial Times/Harris poll in the US, Germany, France, the United Kingdom, Italy, and Spain found people nearly three times more likely to say that globalization is negative than positive. +Free trade would lead to an overwhelming boost to welfare everywhere, but especially in the developing world. +Grasping these benefits is potentially one of this generation's greatest challenges. +Increased negative sentiment could have the worst possible result: not just Doha's failure, but also the raising of trade and immigration barriers. +These barriers remain largely because further liberalization would redistribute jobs, income, and wealth in ways that governments fear would reduce their chances of remaining in power -- and their own wealth in countries where corruption is rife. +The greatest hope is thus getting the Doha round back on track. +But there is a big difference between a low-quality result and one that is more comprehensive. +Moreover, the long-term impact of free trade is huge. +Recast as after calculating the net present value of the stream of future benefits, a realistic Doha outcome could increase global income by more than $3000 billion per year, $2500 billion of which would go to the developing world. +In addition, the experiences of successful reformers like Korea, China, India, and Chile suggest that trade liberalization immediately boosts annual economic growth rates by several percentage points for many years. +Eliminating subsidies and trade barriers would mean that resources could be used more efficiently, so there would be more scope to reduce inequality and poverty, social tensions, environmental degradation, malnutrition, and disease. +There would, of course, be costs. +Firms and workers would need to adjust as reform forces some industries to downsize or close and allows others to expand. +In addition, there are social costs to consider. +Yet the benefits of a successful Doha round are between 45 and 440 times higher than these costs. +This is clearly an extremely sound investment. +An "alternative" to Doha, whereby other high-income countries would follow the European Union's offer of duty-free access to products from Least-Developed Countries (LDCs) and African, Caribbean, and Pacific (ACP) small countries, would involve only a tiny fraction of global gains from trade reform. +Moreover, it may well hurt other poor countries -- thereby worsening inequality -- by encouraging resources to be allocated to activities that become uncompetitive following the next World Trade Organization agreement. +Europe's Military Revolution +BRUSSELS: Creating the euro -- a revolutionary innovation in an EU whose nature is to evolve slowly, by fits and starts -- provoked debate across the continent and beyond. +Plans for a common EU defense policy, however, have thus far attracted less attention. +No longer. Americans increasingly ask: "Why bother?" and point to the efficacy of NATO. +Europeans often find such questions hard to answer, partly because there is no single answer. +For believers in a more united Europe, closer cooperation on defense is self-evidently desirable. +Others emphasize the pragmatic, pointing out that EU members can achieve far more in foreign/defense policy by working together than on their own. +These pragmatists stress the growing number of external challenges -- in the Balkans, Middle East, Africa or elsewhere -- requiring a concerted response. +A third argument, held by some French Gaullists and many EU left-wingers, says that Europe needs a common foreign and defense policy to resist American hegemony. +This anti-American view, however, is not widely held. +Supporters of a common EU foreign/defense policy see a Europe capable of looking after its own defense as a better partner for the US. +Confusion and doubts arise now because of vagueness about the likely uses of the Rapid Reaction Force, a key step in developing these common policies. +The Rapid Reaction Force, it is said, should be capable of fulfilling the so-called "Petersberg" tasks. +Yet "peacemaking" (one of those tasks) could cover anything from Operation Alba -- which in 1997 saw Italy lead a 6000-strong European force into Albania to suppress anarchy -- to an attack on Sierra Leone rebels resisting UN peacekeepers, to Gulf War type conflicts. +Because all EU governments know that, for the foreseeable future, Europe will be capable of only modest military operations there is no great value in defining now how the Rapid Reaction Force will be used. +America should welcome the increasing weight and sense of responsibility for Europe as represented by the Rapid Reaction Force. +True, America's role in NATO -- that ingenious device through which America retains, with Europe's blessing, an institutionalized influence over the continent -- would diminish. +For NATO would become a framework in which two major powers, instead of one big and 18 smaller ones, coordinate policies and responses to crises. +The gains here outweigh any inconvenience to America's freedom to maneuver. +Enhanced European capabilities would allow America to leave many instabilities in and around Europe in the care of its allies. +Moreover, adding defense to the informal acquis that would-be EU members must endorse will reduce pressure on NATO to enlarge. +An EU committed to its own defense, although not offering the same formal guarantees as NATO, offers candidate countries the prospect of belonging to a genuine security community. +More fundamentally, creation of a Europe whole and free, but also united, is America's greatest foreign policy success of the past half-century. +To complete that objective, the EU must become a fully-fledged international actor. +Thus the challenges posed to America by Europe's common and defense policy are primarily psychological. +In Europe, however, those challenges are matters of will and political leadership, which cannot come from committees. +Here we propose a number of institutional and policy reforms, including: +· Merging the jobs of Chris Patten, the external relations commissioner, and Javier Solana, the High Representative for foreign policy, so that the EU speaks with a single voice; +· Giving the new Brussels�based Political and Security Committee higher status to draw together both the inter�governmental and Community sides of foreign policy; +· Setting a Europe�wide target for national defense budgets, committing all member�states to spending at least 2% of GDP on defense, and 25% of their defense budgets on arms procurement and R&D; +· Creating a special EU defense budget, to finance common missions, capabilities and weapons programs; +· Establishing a Monitoring Group of force planners, based within the Council of Ministers secretariat, to co�ordinate the peer group pressure that should encourage governments to improve their military capabilities. +Authority to build coalitions, push governments to fulfill deadlines, generate support or take the blame for failure must come from that traditional source of leadership, the nation state. +Because no single EU state can provide the dominant leadership America provided NATO during the Cold War, Britain, France, and Germany must assume this role in Europe. +Were one of them to oppose common action, the cohesion and credibility of any EU undertaking would be destroyed. +But if these three are determined to push ahead, they will represent the will of most, if not all, other EU members. +Membership in this group of three entails, not the power to command, but the responsibility to lead. +If these three fail to agree in a crisis, Europe will be opting out; if united on taking action, Europe will be committed. +So Britain, France, and Germany must start thinking of the EU as a whole, carrying the greatest burden and taking the greatest risks. +Their leadership will need to be informal, transparent, and inclusive. +Unfortunately, at this moment, none is prepared for these unenviable, yet inevitable, tasks. +But their commitment to Europe's military revolution is bound to move them closer to fulfilling them. +Failing to act now will increase costs in the future -- both financial and humanitarian. +We all stand to lose from a reversal of the economic and social progress made across Africa in the past decade. +Burgeoning markets might disappear and investment opportunities evaporate, while the risk of political instability will increase. +Every percentage-point fall in growth has direct social consequences, whether on nutrition levels, infant mortality, or school attendance. +Every person pushed back into poverty is another step away from achieving the Millennium Development Goals. +For all of these reasons, the continued engagement and support of all of Africa's partners, including the G-8 countries, is vital. +As this year's DATA Report from the Africa advocacy group ONE underscores, many donors are honoring their aid commitments, despite the economic downturn. +Why Put Charles Taylor on Trial +We petitioned Nigeria's Federal High Court last May to review the decision of Nigerian President Olusegun Obasanjo to grant refugee status to former Liberian President Charles Taylor, who is a fugitive from war crimes charges brought by a United Nations-backed Special Court in Sierra Leone. +We are two of Taylor's many victims. +Seven years ago, we were young Nigerian businessmen trading in electronic hardware and medical equipment on Africa's West coast. +We procured our supplies in Nigeria and exported them to Liberia and Sierra Leone. +In the summer of 1997, David was in Monrovia when Charles Taylor was inaugurated President of Liberia following an eight-year civil war. +One year later, the UN and the Economic Community of West African States deployed soldiers as peacekeepers in neighboring Sierra Leone to guarantee a ceasefire in that country's near-decade-long conflict, instigated by rebels of the Revolutionary United Front. +In the fall of 1998, we traveled separately on business trips to Freetown, the capital of Sierra Leone. +On previous visits, we had heard reports of atrocities committed by RUF rebels, including amputations, rapes, and mutilations of civilians in the countryside. +But the presence of the international community reassured us that it was safe to do business in the country. +Both our home government and friends in Sierra Leone agreed. +We planned to spend the Christmas and New Year holidays in Freetown before returning to Nigeria early in 1999. +Then our plans went awry. +Shortly before Christmas, rumors of an impending rebel assault began to filter into Sierra Leone's capital. +First a trickle, then a deluge of internally displaced persons arrived. +We tried to change our flights and return to Nigeria, but there were no flights available. +On January 6, the rebels overran the home where we were staying in Freetown. +We were among nine Nigerians staying there. +The rebels - over one hundred of them, many young teenagers - surrounded our building, set it on fire, and ordered all Nigerians to come out. +Their commander, who spoke with a distinct Liberian accent, called himself Captain Goldteeth. +When we tried to escape, the rebels captured us. +Captain Goldteeth had us brought to a bus terminal next to our residence, where more than 80 other captives were assembled. +He said that he had instructions - from the Executive Mansion in Monrovia - to send a message to Nigeria, the leading troop contributor and financier of the regional peacekeeping force, ECOMOG. +Captain Goldteeth asked the "cut-hand-cut-foot man" to separate Nigerians from the others. +Then they began to amputate us. +Their first victim was Emmanuel's younger brother, Benedict Egbuna. +They cut off his hands from beneath the elbow. He bled to death in front of his pregnant wife, Zainab, and us before he was dumped behind the house. +Many of our best friends were also mutilated and killed. +Next it was our turn. +The machete cut through Emmanuel's flesh and bones but did not entirely sever them. +With hands dangling from his arms, the rebels dumped Emmanuel in the cemetery. +They then cut off David's arms before setting him ablaze. +Neither of us knows how we survived this ordeal. +Benedict Egbuna's five-year old son, Benedict Jr., born five months after the slaughter of his father, is a source of comfort to both of us and to all who knew his father. +Someday, when he grows up, Benedict Jr. will look to us to reconstruct the memories of the father he will never know. +At a later point, Benedict will almost certainly also ask us what happened to those responsible for his father's killing. +What shall we tell him? +We have a duty to seek justice for the victims of Charles Taylor's crimes. +Refugee status is a humanitarian shelter. +Nigeria must not let it be used as a tyrant's shield. +Turkey, Europe and Middle-East Security +Many factors contributed to the French and Dutch objections to the proposed EU Constitution. +One -- usually unstated -- factor is a fear of Turkish membership in the Union. +That membership drive, however, has already transformed Turkey. +In order to prepare for EU accession, Turkey has undertaken vast and serious legal, political, and economic reforms. +Turkey's bureaucrats, politicians, and citizens united to fulfill the Copenhagen criteria for EU membership and tolerated the pain of the IMF-directed structural-adjustment programs. +The looming accession process will be even more painful, but Turkey's people are firmly resolved to face this challenge. +Turkey's transformation has already put an end to the Cold War-style security-state apparatus that ruled the country for half a century, and has changed the framework of the country's domestic and foreign policy. +By modernizing and democratizing at home, Turkey's politicians gained self-confidence in their ability to conduct a successful regional policy. +As a result, Turkey's leaders are now willing to pursue active diplomacy in the Middle East in an effort to minimize problems with neighboring countries. +Of prime importance is the fact that Turkey is emerging as a role model for those across the Middle East who are seeking reform and modernization. +This influence does not imply a hegemonic relationship, but rather points to an alternative path for reform and economic development that other primarily Muslim countries might take. +The EU is associated with peace, democracy, and economic development, while the Middle East is characterized by instability, authoritarianism, and economic backwardness. +Turkey's reform process shows that the latter is not an unavoidable destiny for the countries of the region. +In this respect, Syria and Iran appreciate Turkey's EU membership process. +They consider a European Turkey an opportunity to develop their own relations with the EU. +Turkey also shows that the supposed clash between democracy and security -- and, indeed, between democracy and Islam -- can be reconciled. +Other Muslim states seem to grasp this: recently, a Turk was chosen for the first time and by a majority vote to be Secretary General of the Organization of Islamic Countries. +Turkey's other major contribution comes through constructive diplomatic engagement in the region. +The Turkish government has adopted an active role as a promoter of peace and has reconfigured its policies toward a number of regional problems. +For example, Turkish Prime Minister Tayyip Erdogan broke with tradition by displaying a critical attitude toward Israel's more hawkish policies in the occupied territories, and did so without severing diplomatic relations with Israel. +During a visit of Turkey's Foreign Minister Abdullah Gul to Israel in early January, there was serious discussion about Turkey assuming a mediating role between Israel and the Palestinians, as well as in future Syrian-Israeli talks. +Turkey, of course, did not join the US-led occupation forces in Iraq, but it has put enormous effort into mobilizing regional support for a stable Iraqi state. +Indeed, Turkish policymakers have, on a regular basis, brought the countries bordering Iraq together for discussions about the future of the region. +The United Nations Security Council has taken these meetings seriously and has requested further regional cooperation on the Iraqi question. +Turkey's constructive engagement with the EU creates a sense of trust in the West -- among Western leaders at least, if not yet the general population -- for its regional initiatives. Yet Turkey is also succeeding in keeping an equal distance between both the EU and the US. +For example, Turkey is closer to the EU in its policies toward Iraq and Palestine, yet follows a line similar to that of the US in the Balkans and Cyprus. +In recent history, a variety of regional powers -- the Shah's Iran and Nasser's Egypt -- have arisen in the Middle East. +Turkey's arrival as a regional power is different in that its democratic structures make an active peacemaker, not a local bully. +This is both a necessary and a promising role, for the region needs a local dynamic force pushing for reform, transformation, and peace. +Turkey's experience shows that true security in the region requires internal stability and social peace. +With luck, this model can be exported throughout the Muslim world. +Resilient Brazil +"The sub-prime crisis hasn't yet reached the beaches of Copacabana," Finance Minister Guido Mantega recently proclaimed. +"We are growing free of imbalances and, in fact, gradually reducing our dependence on inflows of foreign exchange -- that's key." +Indeed, the government has emphasized that Brazil will be even more insulated as efforts to cut spending reduce dependence on external capital flows. +But Brazil's ability to escape the effects of a recession in the United States depends on the scale of the crisis. +Brazilian officials do have some reasons to boast that Latin America's largest economy may be stronger than ever: macroeconomic indicators are healthier, solvency ratios have improved, and a mix of exports, investment, and domestic demand has been stimulating economic activity. +During the recent years of abundant global liquidity, the real grew stronger and the central bank was able to pile up foreign reserves, creating a cushion that totaled roughly $185 billion in late January, an amount sufficient to cover the entire foreign debt for the first time in history. +Nevertheless, government officials admit, off the record, that the impact of an expected US recession will not be insignificant, because Brazil is not fully protected from external events. +Beyond the sub-prime crisis, concerns about the US financial system's stability carry serious implications for the global economy. +Moreover, a recession or a slowdown in the US and Europe would hit Brazilian exports, narrowing Brazil's trade surplus considerably. +In fact, although America's trade significance has diminished, accounting for only 16% of Brazilian exports last year, Brazilian trade and growth typically go hand in hand with the US and Europe; historically they have never decoupled. +At the same time, an extended US slowdown could reduce foreign demand from other markets. +The scenario could worsen if there is a breakdown in commodity prices -- one of the most serious threats to Brazil from a global economic slump. +Deceleration in India and China would lead to further cuts in prices for raw materials, weakening markets whose strength has underpinned Brazil's powerful trade performance in recent years. +In any case, the central bank has already projected that Brazil's trade surplus will disappear this year, with a small deficit expected. +Fortunately, Brazil's stock exchange has suffered less than other emerging-market bourses from the financial turbulence in the US and elsewhere. +Recently, the exchange has become the prime source of financing for Brazilian companies, ahead of the state-owned National Development Bank, which grants loans at below-market rates. +But Brazil's financial markets are much more sensitive than trade to international disturbances, and monetary flows could decrease in the long term. +Indeed, should the global economy deteriorate further, outward portfolio investment could accelerate, reducing the financing available to Brazilian corporations and eventually affecting their ability to invest. +So far, business confidence is still high in the industrial sector, according to internal surveys conducted by the São Paulo Association of Industries, and inward FDI hit a record-high US$34.6bn last year. +Optimistically, Brazilian officials believe that the government's Growth Acceleration Program will serve as a vaccine against global turbulence and help reduce bottlenecks in the economy. +Human Rights Made Whole +It will now be up to the UN General Assembly to provide final approval of the Protocol. If adopted, this instrument can make a real difference in the lives of those who are often left to languish at the margins of society, and are denied their economic, social, and cultural rights, such as access to adequate nutrition, health services, housing, and education.   +Sixty years ago, the Universal Declaration of Human Rights recognized that both freedom from want and freedom from fear are indispensable preconditions for a dignified life. The Declaration unequivocally linked destitution and exclusion with discrimination and unequal access to resources and opportunities. Its framers understood that social and cultural stigmatization precludes full participation in public life and the ability to influence policies and obtain justice. +Yet this unified approach was undermined by the post-World War II logic of geopolitical blocs competing over ideas, power, and influence. Human rights were also affected by such Cold War bipolarity. Countries with planned economies argued that the need for survival superseded the aspiration to freedom, so that access to basic necessities included in the basket of economic, social, and cultural rights should take priority in policy and practice. +By contrast, Western governments were wary of this perspective, which they feared would hamper free-market practices, impose overly cumbersome financial obligations, or both. Thus, they chose to prioritize those civil and political rights that they viewed as the hallmarks of democracy. +Against this background, it was impossible to agree on a single, comprehensive human rights instrument giving holistic effect to the Declaration's principles. And, unsurprisingly, it took almost two decades before UN member states simultaneously adopted two separate treaties -- the International Covenant on Civil and Political Rights and the International Covenant on Economic, Social, and Cultural Rights -- encompassing the two distinct baskets of rights. However, only the former treaty was endowed with a follow-up mechanism to monitor its implementation. +In practice, this discrepancy created a category of "alpha" rights -- civil and political -- that took priority in the influential and wealthy countries' domestic and foreign policy agendas. By contrast, economic, social, and cultural rights were often left to linger at the bottom of the national and international "to do" lists. +Addressing this imbalance between the two baskets of rights, the new Protocol establishes for the Covenant on Economic, Social, and Cultural Rights a vehicle to expose abuse, known as a "complaint mechanism," similar to those created for other core human rights treaties. This procedure may seem opaque, but by lodging a complaint under the Protocol's provisions, victims will now be able to bring to the surface abuses that their governments inflict, fail to stop, ignore, or do not redress. In sum, the Protocol provides a way for individuals, who may otherwise be isolated and powerless, to make the international community aware of their plight. +After its adoption by the General Assembly, the Protocol will enter into force when a critical mass of UN member states has ratified it. This should contribute to the development of appropriate human rights-based programs and policies enhancing freedoms and welfare for individuals and their communities. +Not all countries will embrace the Protocol. Some will prefer to avoid any strengthening of economic, social, and cultural rights and will seek to maintain the status quo. The better and fairer position, however, is to embrace the vision of the Universal Declaration of Human Rights and promote unambiguously the idea that human dignity requires respect for the equally vital and mutually dependent freedoms from fear and want. +Democracy in Latin America +I am a firm believer in free trade and hope to see the proposed "Free Trade Area of the Americas" established, as scheduled, in 2005. +Still, I find it disconcerting that economic issues have eclipsed discussion about how to strengthen and consolidate democracy and human development in Latin America. +Much remains to be done in these areas. +If neglected, poverty and poor governance will begin to overshadow any success we have in promoting economic growth. +In an area where 12% of adults are illiterate and more than a fifth of the population lacks safe drinking water, focusing exclusively on economics is simply not enough. +In the Central American countries torn by war in the 1970s and 80s, peace agreements have been signed and democratic institutions are in place. +Yet, the weapons from those wars remain in the hands of former soldiers and rebels and are often sold on the street. +These weapons of wars past contribute to levels of violent crime so atrocious that many Central Americans feel greater fear for their safety today than they did during the years of civil war and rebellion. +So, although we have not seen outright coup attempts of late, we still see levels of threat and rebellious behavior on the part some Latin American militaries that are unacceptable in mature democracies. +One example is the pressure placed on Chile's President Ricardo Lagos to spend outrageous sums of money on sophisticated fighter jets to "modernize" Chile's Air Force. +As long as military chiefs continue to hold undue power within their governments, spending priorities will be out of step with the needs of ordinary people, and democracy will remain threatened by the Damoclean Sword of a potential coup. +Like Caudillismo , another old ghost continues to haunt the continent - poverty. +Although Africa and South Asia suffer much higher rates of poverty, Latin America has the ignoble distinction of incorporating the greatest economic and social inequality within its societies. +Instead of finding ways to remedy this, we continue to condemn our children to poverty by failing to provide them a decent education. +Many countries went too far in fiscal reform programs during the 1980s and 90s, slashing not only wasteful public spending, but essential spending on health and education. +Without these basic building blocks, it will be impossible to ensure that the benefits of growth are widely shared. +Wealthy Latin Americans are not doing their part. +While European countries such as Sweden and France collect more than 45% of their gross domestic product in taxes, Guatemala collects a mere 9%. +The democratic principle of equality has a long way to go in order to deepen its roots here. +Elitism, on the other hand, remains deeply entrenched in our institutions and our cultures. +Perhaps not all culture is worth saving. +The Storm Before the Calm +Indeed, financial markets may have taken the Fed's view on US inflation as representative of other central banks' outlook on inflation, reinforced by the surprising ECB decision of October 2 to keep interest rates on hold. +In October the US was on the cusp of the most significant turning point for inflation in the last 20 years. +Of course, forecasting inflation is notoriously difficult. +There have been large structural shifts in the world economy (e.g., trade and financial globalization) as well as in individual economies (such as the decline in trade union power). +Monetary policy itself has shifted to a far greater focus on inflation. +Moreover, energy and food price shocks can be both large and largely unpredictable, while the speed of price changes tends to increase with big shocks. +Most forecasting models used by central banks therefore put a large weight on recent inflation. +This approach tracks inflation quite well, except at turning points , because the models miss key underlying or long-term influences. +The turning point that the US and world economy are facing is straightforward. +Global output is probably falling faster than at any rate since World War II, except perhaps for 1974-1975. +Under these circumstances, large excess capacity develops and commodity prices fall. +Indeed, it seems unlikely that governments in China and similar emerging markets can compensate swiftly enough to boost domestic consumption. +And, with growing over-capacity, investment in goods production may fall even further, with serious implications for GDP. +Hence demand for commodities, which has been driven by emerging-market growth, has fallen sharply, and help decrease global inflation. +Eventually, lower commodity prices and lower inflation will act like a huge tax cut for households, allowing interest rates to fall further and thus stabilize economic activity. +Paradoxically, the faster oil prices now fall, the shorter the subsequent period of deflation will be, as further damage to the economies of industrial countries is avoided. +Since oil and food prices have fallen sharply, and probably have further to fall, while unemployment is soaring, our models suggest that consumer price inflation, particularly in the US, must fall at record rates over the next 6-12 months. +about inflation risk, others are concerned that the usual monetary transmission mechanism is not working, and that the US could face a Japanese-style "lost decade," while others worry about a 1930's-style slump in the industrial countries. +So the policy debate now under way is about whether monetary policy can stem deflation and what happens if and when the "zero lower bound" on interest rates is reached. +The zero lower bound arises because nominal interest rates cannot fall below zero. +But if nominal interest rates stay positive, while inflation is negative, then real interest rates may become too high for an economy in recession, causing recession to become more severe and prolonged. +Influenced by a misreading of the Japanese experience, this led to excessive protection against the "tail risk" of deflation. +Ironically, that policy response helped to fuel the credit and housing bubble, whose collapse has triggered the current recession, which may actually bring about deflation. +There are important differences between the structure of the Japanese and the US economies, including the enormously high level of liquid assets held by Japanese households, which tends to lead to lower consumption when interest rates fall. +These differences, and the lessons that have been learned from Japan's "lost decade" about the need to refinance the banking system, suggest that a "lost decade" for the US is most unlikely. +The policy implications outside the US and Japan, where rates are close to zero, are that central banks can safely cut policy rates and continue aggressive liquidity support operations with little risk of inflation.,.. +In any case, with so little confidence in the financial system, and credit constrained by concerns about falling housing prices, the usual transmission channels from the policy rate have been blocked. +Thus, the emerging emphasis on recapitalizing the banking system and more recently, on unorthodox policies, including the purchase of private sector credit securities is correct. +Finally, there are two major differences between the 1930's and the present. +The industrial world is now far more dependent on (mostly foreign) oil than it was then. +The extreme rise in real oil prices was a major cause of the current recession, and its reversal will be a major factor in recovery. +The other crucial difference is that we know enough not to repeat the errors -- particularly trade protectionism -- of the 1930's. +Pinochet's Trial, Chile's Dignity +The court battle on whether or not to punish former Chilean dictator Augusto Pinochet is now over. +After prolonged reflection on medical reports regarding Pinochet's health, Judge Juan Guzmán found him mentally fit to stand trial on nine counts of kidnapping and one count of homicide. +Chile's Supreme Court has now upheld that indictment. +All of those crimes were committed during "Operation Condor," a Latin America-wide program among the continent's dictators to physically eliminate their opponents on the left. +Judge Guzmán also determined that the former dictator is not insane and knows right from wrong. +This is critical, as Pinochet has sought to deny his competency. +A recent "vascular incident" that sent him to a military hospital -- where he regained consciousness and motor skills -- will furnish excuses to request new medical examinations and delays as criminal proceedings move forward. +But Guzmán's efforts to bring the dictator to justice should not remain isolated. +Other judges and official bodies need to keep the pressure on Pinochet. +Much, for example, is still to be learned in cases such as the assassination of General Carlos Prats and his wife in Buenos Aires in 1974. Moreover, investigations by the US Congress into the Riggs Bank have uncovered the suspicious means by which Pinochet and his family obtained their wealth. +These investigations need to be followed up with judicial action. +The investigation into the death in 1980 of ex-president Frei Montalva, the principal opponent of the dictatorship, has advanced but needs to be pursued vigorously in the courts. +Frei's death implicates the repressive apparatus that Pinochet and Manuel Contreras, his "right hand," managed in lockstep. +Operation Condor, the Riggs, Frei, and Prats affairs, and many other crimes are documented in the recent report on torture and political imprisonment written by the special commission established by President Ricardo Lagos. +Arriving 30 years after the military coup that brought Pinochet to power, the report has both unsettled and empowered Chileans. +Seemingly invincible for many years, the former dictator's final collapse began in London in October 1998, when Spanish lawyers, Judge Baltasar Garzón of Spain, and Scotland Yard brought charges against him. +Pinochet responded with arrogance, provoking a huge sense of shame for Chile's young democracy. +Pinochet's ability to evade the courts cast a dark shadow over the country's military institutions and made many Chileans wonder how far the country had really gone in its transition to democracy. +Without Judge Garzón's insistence on pursuing the matter, prosecuting Pinochet would have been nearly impossible, owing to powerful opposition from wealthy and media-savvy Chileans. +The Chilean government's excessive caution -- rooted in fear of instability that could affect the basic rights regained after the dictatorship -- also helped Pinochet evade justice. +Indeed, Chile's courts could not have garnered the necessary public support to free them from their inertia without the push Garzón provided. +It would also have been impossible to consider bringing Pinochet to justice without the extraordinarily important human rights struggles waged by victims' organizations, victims' families, and jurists who, against all the odds, remained true to their cause for decades. +Few organizations in Chile have been as capable or as successful as those dedicated to human rights. +Because of the tenacity and passion of ordinary Chileans demanding that the state fulfill its mandate to protect their human rights, Pinochet finds himself before the bar of justice, and others who used their power to kill, torture, or exile their fellow citizens are being pursued. +Yet many still wonder, "Will Pinochet ever pay for his deeds?" +International public opinion and history have already condemned him. +Chile's dignity now hinges on whether or not its legal system reaches the same conclusion. +Doubts that Pinochet will be punished exist because "pinochetismo" remains alive in Chile. +Powerful supporters defend him, using any underhanded means they can muster. +They are aided by the fact that some within the government would prefer to close a sorrowful chapter of human rights violations rather than bringing it to a conclusion. +Depending on the course the nation takes, Chileans may in time reconcile themselves to their past. +For now, their different views coexist and they live together peacefully. +But citizens and the state must also face the truth and bring human rights abusers to justice if people are to live honestly in their society and in history. +To the extent that Chileans do so, they will create the conditions for a more dignified and honorable society. +A judicial judgment against Pinochet is an important step forward. +The Case for Mitigating Greenhouse Gas Emissions +Stern Review Report on the Economics of Climate Change amounts to a call to action: it argues that huge future costs of global warming can be avoided by incurring relatively modest cost today. +Critics of the Stern Review don't think serious action to limit CO2 emissions is justified, because there remains substantial uncertainty about the extent of the costs of global climate change, and because these costs will be incurred far in the future. +However, I believe that Stern's fundamental conclusion is justified: we are much better off reducing CO2 emissions substantially than risking the consequences of failing to act, even if, unlike Stern, one heavily discounts uncertainty and the future. +Two factors differentiate global climate change from other environmental problems. +First, whereas most environmental insults -- for example, water pollution, acid rain, or sulfur dioxide emissions -- are mitigated promptly or in fairly short order when the source is cleaned up, emissions of CO2 and other trace gases remain in the atmosphere for centuries. +So reducing emissions today is very valuable to humanity in the distant future. +Second, the externality is truly global in scale, because greenhouse gases travel around the world in a few days. +As a result, the nation-state and its subsidiaries, the typical loci for internalizing externalities, are limited in their remedial capacity. (However, since the United States contributes about 25% of the world's CO2 emissions, its own policy could make a large difference.) +Thus, global climate change is a public good (bad) par excellence . +Cost-benefit analysis is a principal tool for deciding whether altering it through mitigation policy is warranted. +Two aspects of that calculation are critical. +First, it has to be assumed that individuals prefer to avoid risk. +That is, an uncertain outcome is worth less than the average of the outcomes. +Because the possible outcomes of global warming in the absence of mitigation are very uncertain, though surely bad, the uncertain losses should be evaluated as being equivalent to a single loss greater than the expected loss. +The second critical aspect is how one treats future outcomes relative to current ones -- an issue that has aroused much attention among philosophers as well as economists. +At what rate should future impacts -- particularly losses of future consumption -- be discounted to the present? +The consumption discount rate should account for the possibility that, as consumption grows, the marginal unit of consumption may be considered to have less social value. +This is analogous to the idea of diminishing marginal private utility of private consumption, and is relatively uncontroversial, although researchers disagree on its magnitude. +There is greater disagreement about how much to discount the future simply because it is the future, even if future generations are no better off than us. +Whereas the Stern Review follows a tradition among British economists and many philosophers against discounting for pure futurity, most economists take pure time preference as obvious. +However, the case for intervention to keep CO2 levels within bounds (say, aiming to stabilize them at about 550 ppm) is sufficiently strong to be insensitive to this dispute. +Consider some numbers from the Stern Review concerning the future benefits of preventing greenhouse gas concentrations from exceeding 550 ppm, as well as the costs of accomplishing this. +The benefits are the avoided damages, including both market damages and non-market damages that account for health and ecological impacts. +Following a "business as usual" policy, by 2200, the losses in GNP have an expected value of 13.8%, but with a degree of uncertainty that makes the expected loss equivalent to a certain loss of about 20%. +Since the base rate of economic growth (before calculating the climate change effect) was taken to be 1.3% per year, a loss of 20% in the year 2200 amounts to reducing the annual growth rate to 1.2%. +In other words, the benefit of mitigating greenhouse gas emissions can be represented as the increase in the annual growth rate from today to 2200 from 1.2% to 1.3%. +As for the cost of stabilization, estimates in the Stern Review range from 3.4% of GNP to -3.9% (since saving energy reduces energy costs, the latter estimate is not as startling as it appears). +Let's assume that costs to prevent additional accumulation of CO2 (and equivalents) come to 1% of GNP every year forever, and, in accordance with a fair amount of empirical evidence, that the component of the discount rate attributable to the declining marginal utility of consumption is equal to twice the rate of growth of consumption. +A straightforward calculation shows that mitigation is better than business as usual -- that is, the present value of the benefits exceeds the present value of the costs -- for any social rate of time preference less than 8.5%. +No estimate of the pure rate of time preference, even by those who believe in relatively strong discounting of the future, has ever approached 8.5%. +These calculations indicate that, even with higher discounting, the Stern Review's estimates of future benefits and costs imply that mitigation makes economic sense. +These calculations rely on the report's projected time profiles for benefits and its estimate of annual costs, about which there is much disagreement. +Still, I believe there can be little serious argument about the importance of a policy aimed at avoiding major further increases in CO2 emissions. +The Vanishing Swedish Exception? +For the past two years, Western Europe's voters have been turning rightward. +In Denmark, France, Italy, the Netherlands, Norway, and Portugal, concerns about immigration, chronic unemployment, high taxes, and deteriorating public services have fuelled this trend. +But as Europe's most recent parliamentary election shows, Sweden's Social Democrats--in power for 61 of the past 70 years--remain relatively immune to serious challenges from the right. +Opinion polls just a few months ago gave the Social Democrats 44% popular support. +Together with the former Communists and the Greens, the left held a comfortable 12-15% lead over the four non-socialist parties. +Why has Sweden held out against the right-wing tide sweeping so much of Western Europe? +The immediate reason for Social Democracy's enduring appeal is foreign policy. +In early 2001, Sweden held the EU presidency, giving Prime Minister Göran Persson, the country's dominant politician, a bright spotlight in which to shine. +The Social Democrats also benefited by supporting the US after the September 11 +Persson exudes competence and authority. +He bolstered his image considerably after winning the 1994 election by tightening government finances and eliminating a huge fiscal deficit. +But he has done nothing remarkable since winning again in 1998. +Sweden's economy rose and fell with the IT bubble, reflected in telecoms giant Ericsson's troubles today. +Persson's main advantages entering this year's campaign were that he was unencumbered by new promises and was well equipped to run a presidential-style contest based on his personal appeal. +But force of character cannot mask real problems and a changing political agenda. +Although foreigners often idealize Sweden's welfare state, its economy has been losing ground steadily for 30 years. +In 1970, GDP per head was the fourth highest in the world; now it is 17 +One reason for this relative malaise is that Sweden remains the world leader in taxation, with public expenditures claiming nearly 60% of GDP. +Conservatives demand lower taxes, but this is unpopular: almost 65% of Swedes live on public salaries or social transfers. +Unlike other Europeans, Swedes are thus much keener to keep taxes high, which guarantees a large left-wing vote. +Even so, Swedes fret about the deteriorating quality of services provided by the social welfare system. +The Social Democrats shrewdly reversed themselves on this point during this year's campaign, but health care entitlements have clearly gone too far. +No less than 14% of Swedish employees are currently registered as sick, double the number five years ago. +The Social Democrats argue that this reflects a serious health problem, while non-socialists suggest that the system is defective. +Many Swedes have come to believe that it is their right to register as sick regardless of their health . +No other evidence suggests that public health is actually declining. +Deteriorating public education poses another worry. +Stockholm, ruled by conservatives and liberals, has extended its free-market experiments, such as privatization of subway trains, to education vouchers and free choice of alternative schools. +The Social Democrats lost miserably in the capital. +As in most recent European elections, immigration loomed large, but as usual, Sweden was out of step with other countries. +The small Liberal party, which campaigned in favor of free labor immigration, tripled its support. +The Liberals make the sensible argument that anybody with a job should get a work visa, but that knowledge of Swedish be a citizenship requirement and that unemployed immigrants be barred from receiving social benefits for five years. +Post-Soviet Free Trade +Ever since the Soviet Union collapsed, the independent states that emerged from the wreckage have tried to sort out their trade relations. +The twelve members of the Commonwealth of Independent States (CIS) concluded an Agreement on a Free Trade Zone in 1994, but it does not work. +Whenever one member is successful in exporting to another, the importing member soon imposes quotas or prohibitive tariffs, impeding economic development. +The simple solution is a mechanism for conflict resolution. +The World Trade Organization (WTO) has a well-functioning arbitration court with accepted penalties that could be utilized, but only four CIS countries (Kyrgyzstan, Georgia, Moldova, and Armenia) have joined the WTO. +The largest CIS economies-Russia, Ukraine, and Kazakhstan-should hurry up and join as well. +Alas, instead of adapting tried and tested mechanisms, various CIS countries invent ever more complex schemes, such as the five-state Customs Union, which was renamed the Eurasian Economic Community last year, when its failure became evident. +Three ideas are contained in this nebulous term: a customs union, coordination of accession to the WTO, and a currency union. +None of these will benefit any participant. +A CIS customs union failed already, and will fail again in the future. +It delivered no freer trade than the CIS free-trade zone. +No participant harmonized its customs with anybody else. +Russia refuses truly to accept the sovereignty of the other CIS states, and instead wants only to impose its own customs policy, which the others do not accept. +Now the four presidents propose an independent supranational commission for trade and tariffs in order to forge a common customs policy. +But there is no reason to believe that this will work any better. +Simply put, these countries have different foreign-trade interests. +A country that does not produce a product has no interest in its protection, while countries that do have protectionist interests. +For instance, Russia's automotive and aviation industries insist on high import tariffs, while Kazakhstan produces neither cars nor airplanes. +Russia's high import tariffs on cars would impose an unjustified consumer tax on Kazakhs. +Coordination in accession to the WTO sounds good, but would actually delay membership by several years at a time when speed is vital. +It is much more difficult for Russia, with its large and complex trade, to enter the WTO than it is for Ukraine and Kazakhstan. +Russia must conclude bilateral protocols with no less than 67 countries, compared with 22 for Ukraine. +Indeed, Russia has demanded that Ukraine revoke the 11 bilateral protocols for WTO accession that it already signed. +Meanwhile, until Russia, Ukraine, and Kazakhstan accede to the WTO, the trade situation within the CIS will not improve. +If they would stop "cooperating" and start competing to be the first to enter the WTO, all three countries could be members within a year. +The worst idea is the currency union. +The fundamental problem was that each country had a central bank that issued ruble credits, because no country was prepared to accept central-effectively Russian-control over its monetary policy. +Why repeat that catastrophe? +None of the political preconditions has changed. +No CIS country would accept a Russian monopoly on the emission of a common currency, and without a central monopoly on the emission of money, a currency union cannot work. +Third, a currency union should be undertaken with a large, differentiated economy with substantial financial depth. +But these economies are small, and most are not highly diversified; +Fourth, the members of a currency union should have similar economic structures or at least have business cycles that move in parallel. +Given Russia's dependence on exports of oil and natural gas, and Ukraine's status as a major energy importer, the two countries' business cycles are likely to diverge rather than overlap. +Whereas Russia would require devaluation when oil prices fall, Ukraine could consider revaluation. +For the last three years, Russia, Kazakhstan, and Ukraine have been economically successful, with Russia and Ukraine boosting average annual economic growth rates of 6% and Kazakhstan around 11%. +Sound market-based thinking has driven their domestic economic policies. +None of them can afford to fool around with economic nonsense in their trade policy. +Is Putin Self-Destructing? +With the arrest of Russia's richest man, oil tycoon Mikhail Khodorkovsky, Russia has lurched into a deep political crisis. +Unwittingly, President Vladimir Putin has opted for an all-or-nothing victory over the oil oligarch. +At stake is nothing less than Russia's frail democracy. +The legal charges against Khodorkovsky concern old privatization and tax evasion cases. +But the charges against Khodorkovsky are as flimsy as they are tendentious: the privatization case had been amicably settled previously, and Khodorkovsky has merely used tax avoidance schemes that are commonplace in Russia--and that have been upheld in court. +Putin's real problem is that Khodorkovsky is too powerful and independent for the straitened politics he wants. +During his four years in power, Putin has advanced four major policies. +The first three--free market reform, the rule of law, and a pragmatic foreign policy--have been widely acclaimed, while the fourth--"managed democracy"--has been tolerated because it has brought political stability. +But "managed democracy" now threatens to unravel all three of his real achievements. +Khodorkovsky is the fourth major businessmen taken out of action by the authorities. +Four independent TV channels have also been taken over by the state, and no criticism of Putin is permitted in significant media. +The main polling organizations have also been brought under Kremlin control. +Regional elections are regularly manipulated, often by disqualifying leading opposition candidates. +The pattern is evident: a systematic authoritarian drive is underway. +Russia's oligarchs are undoubtedly unpopular, and Khodorovsky's arrest was evidently aimed at boosting Putin's prospects in the looming parliamentary and presidential elections. +But although Russians dislike the powerful, and cherish underdogs and martyrs, a man in jail no longer looks strong. +With Khodorkovsky's arrest, the authorities flaunted their extralegal and arbitrary powers in such a way that they have aroused widespread public worry. +Previously, Putin had enigmatically appealed to most Russians. +By balancing between ex-KGB people and big businessmen, he seemed independent of both. +Now he has antagonized all big businessmen; he even refuses to meet them. +Suddenly, he has reduced himself to KGB President, jeopardizing the very political stability he sought to guarantee. +Putin has spoken continuously about the need for the rule of law, but in his TV statement on October 27, he effectively stated his preference for law enforcers. +Indeed, in the Khodorkovsky affair, all procedural requirements have been blithely neglected. +For example, although prosecutors control the relevant courts, they did not bother to secure the necessary court orders for the Yukos raids and arrests. +The obvious conclusion that even ordinary Russians are drawing is that neither property rights nor people are safe. +Investments are likely to be stopped or delayed. +Those who can export capital will do so. +An emerging panic seems certain to dampen today's strong growth. +The fallout from Khodorkovsky's arrest is felt abroad as well. +The world's business press has roundly condemned the authorities' behavior, especially the impounding of Yukos shares worth many times more than possible state claims, which smacks of expropriation. +Foreign governments are voicing their fears. +In one stroke, Putin has jeopardized his considerable accomplishments. +With his public bluntness, he has discarded his prior coyness and deprived himself of deniability. +As the KGB culprits keep quiet, the President must do most of the talking, exposing himself further. +But why defend the arrest in a televised statement? +Why refuse to meet Russia's business elite, while meeting with foreign investment bankers? +Why seize Yukos shares and licenses? +A couple of weeks before his arrest, Khodorkovsky told me: "I do not understand how they can win, given how many mistakes they make." +His words seem prescient. +The situation in the Kremlin appears reminiscent of the spring of 1996, when a group of KGB men, led by President Boris Yeltsin's chief bodyguard, General Alexander Korzhakov, almost seized power. +But the oligarchs mobilized behind Anatoly Chubais, who ousted Korzhakov and his circle by June. +Once again, Russia's big businessmen have united behind Chubais. +If Putin wants to save his own skin, he must act fast and sack his top KGB aides in the Kremlin and the Prosecutor General. +It is worth recalling that in 1999 former Prime Minister Yevgeny Primakov and Moscow Mayor Yuri Luzhkov were seen as a shoo-in ticket for the presidency. +But, having curried favor with Russia's media, they were unaccustomed to criticism--and rendered helpless when it appeared. +The taboo against criticizing Putin is already powerless. +The main liberal parties--the Union of Rightist Forces and Yabloko--are attacking him ferociously, while the faceless parties that supposedly support him are silent and confused. +They are presumed to be on the verge of winning an overwhelming majority in the parliamentary elections due on December 7, yet like Korzhakov and his clique, they could be routed. +Indeed, by alienating big business and letting his wily chief of staff, Alexander Voloshin, resign, Putin has deprived himself of crucial electoral resources. +His former chief political advisor has even accused him of using "Stalinist measures." If Putin falls short of the high expectations in the upcoming parliamentary election, his fortunes in the March 14, 2004, presidential vote may be jeopardy. +By arresting Khodorkovsky, Putin has revealed his authoritarian nature to the entire world. +He has thrown a gauntlet in the face of Russia's civil society and business elite. +They have little choice but to resist, and their strength should not be underestimated. The battle for Russian democracy is joined anew. +Putin's Last Stand +Russia's President Vladimir Putin was incredibly successful in achieving his goals during his first term. +He strengthened the power of the federal government, while defeating big business, free media, the communist party, the liberal parties and civil society. +Within government, he squezzed regional governors, both chambers of parliament and even the government apparatus, concentrating all legislative, executive and judicial power in himself. +Meanwhile, solid macroeconomic stability and steady growth of 6.5% a year were attained. +Alas, Putin's success may lead to his downfall. +He was fortunate during his first term because he recognized limits to his power. +An avid reader of opinion polls, he tried enigmatically to be everything to all voters. +Now, he seems to think himself free of constraint, but no politician is that lucky. +Putin is violating too many rules of politics, and just cannot stop. +Putin is too jealous of power to delegate. Because he wants to make all decisions, he replaced a strong prime minister and chief of staff with two men unable to make decisions. +So rather than creating a strong vertical command, he paralyzed his government. +One reason for this extreme overcentralization is that Putin does not trust anyone. +Another reason is his preoccupation with secrecy. +A true secret policeman, he relies on his circle of KGB men from St. Petersburg. +His power base shrinks by the day, and his strangling of independent information makes him increasingly ill-informed. +The consequences were apparent in the school hostage drama in Beslan in North Ossetia. +Law enforcement failed the population. +It possessed no relevant intelligence. +Policemen accepted bribes to let the terrorists though. +Russia's best special forces were sent to Beslan, but they were not given ammunition, body armor, battle plans, or operative command. +The school was never cordoned off. +In the end, local Ossetians stormed the school with their own guns and killed several special troops in contempt. +Incredibly, the Chairman of the Federal Security Service (FSB) and the Minister of Interior arrived in Beslan soon after the siege started, but hid doing nothing. +Similarly, the two regional governors concerned refused to go to Beslan. +In fact, nobody from the government did anything. +Putin and his government simply ignored the Beslan crisis, minimizing news coverage about it. +Official statements came from a junior local official, who made himself a fool through gross lies. Obviously, such secrecy hurts Russia. +It is difficult to imagine a worse government performance. +In his time, Soviet President Leonid Brezhnev was ridiculed for only being interested in concealing bad news and not wanting to remedy problems. +Putin now acts just like that. +The conclusions from the Beslan drama are obvious. +Chechen policy must be revisited. +The security forces should be cleansed and disciplined. +Impotent ministers and governors should be sacked, while their offices should be given more authority. +More open information flows and fewer KGB appointees are needed. +Putin, however, wants nothing of the kind. +He does not obey the elementary rule that when in a hole, you stop digging. +None of the culprits has been sacked, while the editor of Izvestiya was sacked as a punishment for accurate reporting. +Nothing is done against the rampant corruption of the FSB. +Rather than give governors more authority, he demanded to appoint them himself. +Instead of strengthening the government, he deprived it of his one of his best men, Dmitri Kozak, and appointed another unknown KGB man from St. Petersburg in his place. This is all harm and no cure. +Putin's rule is not only authoritarian; it is dysfunctional. +It is too rigid and centralized to handle crises. +Rather than address actual problems, Putin pursues his personal authoritarian agenda. +This centralized police state is interested in little but its own economic and political power. +It is difficult to escape the impression that Putin is more interested in pampering his KGB men than fighting terrorism. +Because liberal economic reforms harm their interests, such reforms have been abandoned. +Ordinary Russians are not blind. +They ask: "How can the appointment of governors be a means of fighting terrorism?" +Putin is swiftly eroding the great authority he built up during his first term. +This process can destabilize Russia faster than anybody now realizes. +The question is no longer whether Putin will really leave office when his term ends in 2008, but whether he will be able to save himself that long. +He can probably do so, but will need to undertake a complete U-turn. He must sack his top KGB friends and hapless Prime Minister Mikhail Fradkov. +A return to democracy, regional self-government and free media are other requirements. +He must also settle the Yukos affair and change his Chechen policy. +Putin has the power to do so, but hardly the mindset. +The Orange Velvet Revolution +Ukraine's ‘Orange Revolution' will reach its climax on December 26, when Prime Minister Viktor Yanukovich and former Prime Minister Viktor Yushchenko will replay their run-off for the presidency. The massive fraud that was supposed to bring victory to Mr Yanukovich, and which incited hundreds of thousands of Ukrainians to take to the streets of Kyiv to defent their rights, no longer looks possible. +Yet Ukraine's democratic future is still not guaranteed. +Ukraine is undergoing a true liberal revolution, akin to the great European liberal revolutions of 1848, and reminiscent of Prague's Velvet revolution of 1989. +Ukrainians demand democracy, freedom and the rule of law. +After five years of an average annual economic growth of 9%, economic claims are strikingly absent, as are all socialist and even social demands. +The discredited election results suggested that the country is geographically and ethnically divided, with the democratic opposition candidate Yushchenko winning overwhelmingly in seventeen western and central regions, while Yanukovich dominated in ten eastern and southern regions. +However, Yushchenko did carry several Russian-speaking regions, notably the capital Kiev, and Yanukovich won most in the authoritarian Donetsk and Luhansk regions furthest to the east. +Much of the regional differences can be explained by their degree of democracy and openness rather than ethnicity. +Wisely, Yushchenko launched the slogan "East and West together!" emphasizing his endeavor to unite the country. +Similarly, miners bussed by their managers to Kiev were soon being convinced of the ‘Orange' cause by the demonstrators and were quickly sent back East by their minders. +The role of business is palpable on both sides. +A quip says this is a revolt of the millionaires against the billionaires. +The Yanukovich candidacy was supported by the three dominant business clans with rather few allies, while the business community, and even some billionaires, overwhelmingly supported Yushchenko. +This is a truly bourgeois revolution. +Both the Ukrainian revolution and high economic growth have been caused by President Leonid Kuchma's patent habit of playing everybody against everybody, while abstaining from fair play. +Ordinary Ukrainians aspire to law and order; businessmen want their playing field to be leveled with the richest and most well connected. +Yushchenko is careful not to criticize oligarchs but "bandits" and corruption, because smaller oligarchs support him. +Rarely has one country intervened so heavily in another country's elections as Russia did here. +Yushchenko's campaign alleges that Russian enterprises were forced by the Kremlin to put up $300 million for the Yanukovich campaign. +Kyiv and its airwaves were flooded with Russian political advisors, slandering Yushchenko worse than any Ukrainian did. +President Putin himself campaigned twice for Yanukovich in Ukraine and congratulated him twice before the forged final results had been presented, rendering him little but ridiculous. +Russia's extreme activism is curious. +Yanukovich stands for a truly oligarchic state of the sort Putin defeated at home, and Yanukovich accused Yushchenko of having sold Ukrainian companies to Russian corporations. +President Putin's behavior is probably best explained by his dislike for democracy. +In addition, if Ukraine's President becomes an international pariah, he can only turn to Russia, as is the case of President Aleksandr Lukashenko in Belarus. +After this spectacular Russian failure, however, Putin's "managed democracy" looks anachronistic and faces the threat of a real democracy in its neighbor spreading to Russia. +For the first time, Ukrainians have thrown their little-brother complex toward the Russians overboard. +With new self-confidence, they note that they are thinking and facing the truth unlike their Russian brethren. +Ukraine has little choice but to turn to Europe and the West. +Ukrainian exports of steel have boomed on China's appetite, but sooner or later that appetite will be sated, and Ukrainian steel producers will need new markets. +Europe is the obvious choice, while Russia has little but stiff competition to offer. +If Ukraine becomes a democracy, it will undoubtedly soon develop the rule of law. +It is already a market economy and it is certainly located in Europe. +Thus, it becomes a formidable challenge to the European Union to offer anything but welcome to Ukraine. +Yet much can still go wrong. +The most obvious risk is that the elections are not concluded or that Yushchenko is denied executive power. +Solidarity suffered that frustration in Poland in 1980-81, which prolonged communist rule for a decade. +Fortunately for Ukraine, its business is private, and a common view of the whole business community is that the electoral rerun must be conclusive. +Otherwise, financial destabilization will threaten the fortunes of the very rich. +Another danger lies in the prominent role in the revolution of multi-millionaires. +No doubt they want to dominate the new cabinet, and with their impressive executive and intellectual skills they are dispersed over all parties. +Alas, if they are allowed to run the show, Ukraine might face more redistribution of fortunes than cleansing of corruption, letting the revolutionary public down. +Ideally, Yushchenko should reach out to the new professionals who have not as yet been intoxicated by the pervasive corruption of the old administration. +Nor has the old regime disappeared. +Yushchenko has gained a majority in Parliament because many adherents of the old regime switched their allegiance out of convenience. +They can change again, and no less than 300 of the 450 members of the Ukrainian Parliament are supposed to be millionaires. +Ukraine needs early parliamentary elections, but that is constitutionally difficult to accomplish. +Meanwhile, Yushchenko was forced to accept a poorly designed political reform full of traps. +The Russian threat lingers, whereas the West is more likely than not to be too passive. +Fortunately, Yushchenko's camp is painfully aware that time is short and that they must act fast. +Ukraine has a great opportunity, but its leaders must act radically to exploit it. +Lucky Putin, Unlucky Yeltsin +But Russia's stellar economic performance has little to do with Putin's policy, and a lot to do with the reforms Yeltsin embraced. +By 1998, Russia already had achieved a critical mass of markets and private enterprise, while the financial crash of that year worked like a catharsis, forcing the government to abolish enterprise subsidies that underpinned a devastating budget deficit of some 9% of GDP. +Moreover, world oil prices that had fallen to $10 a barrel started rising toward the stratosphere. +The whole success story thus was in place in early 1999, one year before Putin entered the stage. +To be sure, Putin should be praised for substantial economic reforms during his first three years. +A new tax code was adopted, with lower and fewer taxes, notably a flat income tax of 13%. +The civil code was completed, a new customs code was enacted, and substantial judicial reform was implemented. +At the same time, however, Putin has systematically eliminated the rudimentary democracy Yeltsin had build. +One television channel after another was taken over by the state under various pretexts, as were major newspapers. +Opposition candidates and parties were denied registration for the slightest formal complaint. +Falsification of elections became the rule. +Many prominent Russians favored the Pinochet model of authoritarian politics and liberal economics. +But growing authoritarianism also hit business. +In October 2003, Putin cracked down on Mikhail Khodorkovsky, the CEO and main owner of Yukos oil, Russia's most valuable company, who was thrown into prison on dubious charges of tax fraud after backing Putin's political opponents. +Moreover, Putin's associates wanted Yukos' wealth, which was confiscated by the state oil company Rosneft through lawless taxation, leaving Putin's tax reform and judicial reform in tatters and severely undermining property rights. +In fact, since 2003, Putin's main economic policy has been re-nationalization. +Well-run private companies have been more or less forced to sell out to state-dominated companies. +Gazprom is buying up oil (Sibneft), gas, and power companies at knockdown prices, reinforcing its monopoly. +That, in turn, allows Gazprom to boost its profitability through price increases, despite stagnant production. +Indeed, with state companies now producing one-third of Russia's oil, output growth has plummeted, as owners of private enterprises -- the source of dynamism in the sector -- are now afraid to invest in new capacity. +Among foreign investors, both Shell and TNK-BP are being pushed out by Gazprom in their main gas fields in Russia. +Beyond oil and gas, Russia's arms export agency, Rosoboronexport, has just seized Avtovaz, the giant dysfunctional Soviet car factory, and VSMPO-Avisma, Russia's big titanium company, while all aircraft production has been concentrated in one state company. +The government cheers this re-nationalization, although it has reduced Russia's industrial growth from 8.3% in 2004 to 4% in the last two years. +Similarly, inefficient state banks -- far inferior to private banks even in Kazakhstan or Ukraine -- dominate the banking system. +The not very profitable state-owned Vneshtorgbank, for example, is on a buying spree, aggravating the quality of Russian banking. +Increasingly, Russia's oil surpluses drive economic growth through rising investment, which boosts construction and consumption, in turn benefiting retail trade and finance. +With personal incomes rising strongly, poverty is declining, while 68% of Russia's college-age youth now attend universities. +But other social indicators are unimpressive. +Life expectancy for men is stuck at 59. +The murder rate is even higher under Putin than it was under Yeltsin, as is the traffic death rate. +None of the big public systems -- education, health care, or the military -- has been reformed, and the regime shows little interest in doing so. +Instead, the Kremlin is preoccupied with the profitability and value of the state-dominated companies that it controls. +Not surprisingly, all corruption indicators have been rising since Putin took over from Yeltsin, whereas they are falling in most post-communist countries. +Although corruption is pervasive, no top official has been prosecuted. +Putin and his KGB friends from St. Petersburg sit safely on all this wealth, thanks to their authoritarian governance and control over all security organs. +Such a powerful apparatus cannot retire to a quiet life in a dacha as Yeltsin did -- it would have to privatize everything first -- which implies that Putin has no choice but to remain in office, regardless of what he says about not seeking a third presidential term. +But if he holds on to power contrary to the constitution, his popularity could easily collapse, especially as his economic policy has thrived on luck, not reform. +Putinomics +The strangest thing about the Duma election was that Putin lost his nerve. +He over-exposed himself in public appearances that were as aggressive as they were vague in substance. +He ran against the West and the "chaos" of the 1990's, just as he raged against Chechen terrorists in 1999 and against oligarchs in 2003. +The Kremlin abandoned democratic procedures, controlling which parties were allowed to run and their candidates, while Putin's United Russia monopolized media coverage. +Opposition activists were blocked from most campaigning, and often arrested, while Kremlin-controlled courts denied their complaints. +As a consequence, the new State Duma has not been elected so much as appointed. +It lacks legitimacy and its members are unknown. +But Putin's legitimacy has also been tainted by the pervasive fraud. +His only "mass" meeting in Moscow drew no more than 5,000 people. +The main questions are how authoritarian he will become, or whether this pathetic campaign will weaken him. +Putin's policy is easy to understand if one realizes that he usually does the opposite of what he says. +In his first term, Putin appeared to be an authoritarian reformer, undertaking substantial market reforms, such as introducing a 13% flat income tax. +But in his second term, Putin was simply authoritarian, undertaking no economic or social reforms worth mentioning. +The expropriation of the oil company Yukos, valued at $100 billion, was the signal event, and was followed by rising corruption. +Putin has established a purely personal dictatorship. +He rules through the presidential administration and competing secret police forces without ideology or party. +United Russia is little more than a bunch of state officials. +He has sapped most power from other state institutions. +Personal authoritarianism rarely survives its founder. +Since Putin has created an over-centralized regime that cannot survive without him, he has to stay as president. +Law is of minimal relevance, as he can always order the Constitutional Court to approve his third term. +Putin's regime may be described as a group of clans, consisting of state-dominated corporations, such as Gazprom, Rosneft, Vneshtorgbank, Rosoboronexport, and the Russian Railways, together with the security agencies. +Putin's KGB cronies, usually from St. Petersburg, control these institutions, and tap them for huge kickbacks. +At the same time, Putin has made sure that they all hate one another, so that they need him as arbitrator or godfather. +In a sensational interview before the election in the Russian newspaper Kommersant , one of these previously unknown KGB managers explained how they use state extortion against private enterprises to accomplish their "velvet re-privatization" through state corporate raiding. +According to the European Bank for Reconstruction and Development, the share of GDP originating in the private sector has declined from 70% to 65% under Putin. +Re-nationalization through extortion is likely to accelerate. +This re-nationalization has not been justified ideologically, but rather cynically: the purpose is simply to generate corrupt revenues for top Kremlin officials. +None of Putin's KGB kingpins has been arrested or even demoted. +As re-nationalization gained momentum, the public economic rhetoric changed and become statist. +Putin now favors protectionism, state intervention, and subsidies. +In this climate, no progressive structural reforms are likely. +Until recently, Russia has pursued an admirably conservative macroeconomic policy, running up huge budget and current account surpluses. +It has paid off its foreign debt and built up foreign currency reserves of $450 billion. +Before the Duma election, however, Putin jeopardized this last vestige of responsible economic policy. +Currently, Russia's greatest economic concern is growing inflationary pressure, driven especially by food prices. +Rising food prices are an international phenomenon, and Russia's inflation is driven by the large current account surpluses and capital inflows. +But Russia's government is no longer trying to mitigate these factors, instead pursuing an inflationary policy. +Not surprisingly, inflation has shot up from 7% last spring to 11% currently, and may reach 15% in the spring. +Naturally, monetary and fiscal policy should be tightened, but that is difficult when Putin is trying to placate the population. +He could liberalize the exchange rate and let it float upwards, but he is not even doing that. +Instead, using an old Soviet tactic, Putin has imposed informal price controls, which cannot hold for long in a privatized economy. +Russia's economic growth is still driven by the sound market reforms undertaken in the 1990's and Putin's first term, together with high oil and gas prices. +The main question about economic policy in Putin's third term, then, is how fast it will deteriorate. +Putin's Last Stand +The two biggest issues in Bucharest will be whether to invite Albania, Croatia, and Macedonia to join NATO, and whether to offer applications to Ukraine and Georgia to start so-called "membership action plans." +These questions should be decided by NATO's members, not outsiders. +In February 2007, Putin, in an anti-Western tirade delivered in Munich, declared: "I think it is obvious that NATO expansion does not have any relation with the modernization of the Alliance itself or with ensuring security in Europe. +On the contrary, it represents a serious provocation that reduces the level of mutual trust." +So Putin's views about NATO are clear. +He will scandalize the summit by seeking to intimidate the former Soviet clients in the room. +Such an aggressive attitude benefits a country's foreign policy only up to a point -- one that Putin passed long ago. +Initially, he acted as an able diplomat and accommodator, but since his Munich speech, Putin has begun uniting the West against Russia. +In his speech on May 9, 2007, commemorating Russia's victory in World War II, Putin compared the United States with Nazi Germany: "We have a duty to remember that the causes of any war lie above all in the mistakes and miscalculations of peacetime, and that these causes have their roots in an ideology of confrontation and extremism. +It is all the more important that we remember this today, because these threats are not becoming fewer, but are only transforming and changing their appearance. +These new threats, just as under the Third Reich, show the same contempt for human life and the same aspiration to establish an exclusive dictate over the world." +Serious politicians do not speak like that. +These are the rants of Putin's few remaining friends -- Venezuela's Hugo Chavez, Iran's Mahmoud Ahmadinejad, and Belarus's Alyaksandr Lukashenka. +At home, awareness is rising that Putin is damaging Russia's interests by insulting and intimidating everybody. +He is isolating his country among the world's pariahs; worse yet, he has achieved little. +When Putin became president in 2000, he named accession to the World Trade Organization as his foreign policy priority. +He failed, because he gave in to petty protectionist interests, imposing a timber embargo against Finland and Sweden, a fish embargo against Norway, and various agricultural embargos against Lithuania, Ukraine, Moldova, Georgia, and others. +Russia's foreign policy is focused on the interests of its state-dominated corporations, notably Gazprom, which has concluded agreements with many foreign countries and companies for monopolistic deliveries. +But a Gazprom pipeline typically costs three times as much per kilometer as a similar Western pipeline, because of "leakage" (kickbacks and waste). +The primary purpose of Russia's foreign policy seems to be to tap Russia's state companies for the benefit of Kremlin officials. +But customers do not trust suppliers who cut deliveries, raise prices unpredictably, expropriate competitors, and let production decrease in the way Gazprom and Russia's other state companies have done. +As a result, Russia's gas exports to Europe have started declining. +Putin's foreign policy also is evidently intended to whip up populist chauvinism. +Beating up on foreigners may boost his authoritarian rule, but this, too, has a price. +Not only the US and Europe, but all former Soviet republics feel alienated by Putin's aggressive tactics. +Many are seeking to shield themselves from Russia's capricious embargos -- for example, by seeking alternative energy supplies. +Arguably, Russia has improved its relations with China under Putin, but at the cost of acceding to China's demands for two big disputed islands over which the two countries fought in 1969. +Putin's apparent aim was to secure financing for Rosneft's purchase of the Yugansk oil field, which was part of the Yukos confiscation. +Yet China, too, is wary of Putin, and has been sending warm signals to leaders of former Soviet republics, such as Ukraine's Yuliya Tymoshenko. +Russia's nationalists are also outraged by Putin's foreign policy, because it has alienated former Soviet republics and weakened Russia's military. The nationalist Council for National Strategy published a devastating report on the decay of Russia's military under Putin. +Russian military procurement, it claims, has plummeted. For example, only three new military aircraft have been purchased since 2000. +True, armaments costs have risen sharply, but only because Putin's KGB friends, who monopolize weapons production, have stolen inordinate amounts. +Yet, despite this spending shortfall, Putin seems obsessed with making pointless and provocative gestures, such as resuming long-range nuclear bomber flights off the American coast. +In the early 1990's, many westerners and Russians wanted Russia to become a full-fledged member of both the European Union and NATO, on the condition that Russia became a full-fledged democracy. +Unfortunately, the West never made that offer, and Russian democracy went astray. +Russia should be given a new chance, but only after Putin has departed. +Russia is no enemy of the West; Vladimir Putin is. +Ukraine's Dollar Addiction +Ukraine's prices started spiraling out of control around the time when Yuliya Tymoshenko returned as prime minister last December. +Malicious observers suggest that she is to blame for pursuing populist social expenditures. But this is false. +Her government actually tightened the budget just before New Year. +Indeed, Finance Minister Viktor Pynzenyk reports that the state recorded a budget surplus of 0.6% of GDP during the first quarter of 2008. +This is not surprising, because state revenues expand with rising prices, while expenditures are largely fixed. +But Tymoshenko's government has, in reality, done a solid fiscal job. +State finances are generally in good shape, with public debt at just 11% of GDP. +According to the National Bank of Ukraine (NBU), international reserves have grown steadily and now stand at $33 billion. +The real cause of Ukraine's inflation is that its currency, the hryvnia, remains pegged to the US dollar. +When the dollar falls in value, as it has, Ukraine's very open economy imports inflation. +In the last year, the dollar's value dropped by 12% against the euro, which is a more important currency than the dollar in Ukraine's foreign trade. +The International Monetary Fund has persistently warned Ukraine that its dollar peg could cause a financial crisis because of over- or undervaluation, and for years has called on Ukraine to free its exchange rate. +But the NBU refused to do so -- making Ukraine the last country in Central and Eastern Europe to tie its currency to the dollar. +Ukraine's powerful industrialists praised the NBU's low exchange-rate policy, believing it makes the country more competitive. +They ignore the fact that the NBU can control only the nominal appreciation of the hryvnia. +But costs are determined by the real revaluation, which is the sum of exchange-rate changes and inflation. +The dollar peg has also forced the NBU to pursue a loose monetary policy. +Ukraine's current refinance rate is 16% a year, 10% less than inflation, which means that Ukraine has a negative real interest rate of 10% a year. +As a result, Ukraine's money supply, M3, exploded by no less than 52% in the last year, which points to inflation hitting 30% soon. +The NBU's leadership understands that it must act to contain inflation, but its insistence on the dollar peg ties their hands, because it prevents them from raising interest rates sufficiently. +Instead, they have reverted to strict reserve requirements, effectively rationing credit and thereby causing a domestic credit squeeze in the midst of the current international financial crisis, which is likely to force some medium-sized banks into bankruptcy because of liquidity problems. +Rationing is always worse than a market. +Why does the NBU persist with this harmful policy? +Incompetence is one reason, but politics is probably the decisive cause. +The NBU is subordinate to President Viktor Yushchenko, who, despite naming Tymoshenko as prime minister, seems more interested in harming her politically than in capping inflation. +The flaws in the NBU's policy are so obvious it will be forced to free the exchange rate, but it might act too late. +Even now, in the midst of an inflationary crisis, the NBU wants to move in small steps, evidently failing to grasp the severity of the crisis. +The NBU needs to announce that it no longer has an exchange-rate target and that it will stop intervening by ending its purchases of dollars on the currency market. +If the NBU lets the exchange rate float, Ukrainians are likely to exchange billions of dollars into hryvnia, driving up the hryvnia exchange rate. +That would contain Ukraine's inflation, as the NBU could restrict the money supply through high interest rates rather than rationing. +Time is short. +The great economist Rudi Dornbusch used to say that a financial crisis usually starts much later than anyone expects, but then develops faster than anyone can imagine. +Ukraine is on the financial precipice. +Yushchenko and the NBU can still act, but if they do not do so immediately, a costly and unnecessary financial crisis might ensue. +As prime minister, Yushchenko saved his country from financial default in early 2000. +Ukraine's well-being must not be sacrificed to his political ambitions. +The Return of the Siloviki +Putin's statement hit like a bolt from the blue. +Two days earlier, United States Trade Representative Ron Kirk and European Union Trade Commissioner Catherine Ashton had completed successful talks on Russia's accession to the WTO with Putin's first deputy, Igor Shuvalov, Finance Minister Alexei Kudrin, and Minister of Economy and Development Elvira Nabiullina. +As late as June 3, Putin had declared himself sure of Russia's "swift joining of the WTO." +The leaders of Belarus or Kazakhstan seemed equally surprised by Putin's statement, especially as Russia had just prohibited almost all imports of dairy products from Belarus in a protectionist ploy. +After 16 years of negotiations, Russia appeared poised to join the WTO within a couple of months. +Indeed, only three difficult hurdles remained. +First, Ukraine demands a bilateral protocol on market access, which would force Russia to abolish roughly 100 trade sanctions, primarily in agriculture. +The second obstacle is border controls with Georgia, a mainly political issue: whether Abkhazia and South Ossetia are independent, as Russia maintains, or are part Georgia, as the rest of the world believes. +Finally, the EU insists that Russia abolish planned prohibitive export tariffs on lumber. +Only the Georgian issue is really serious. +A customs union with Belarus and Kazakhstan is no alternative to Russia's WTO accession. +No countries have ever entered the WTO collectively, nor is this legally possible says WTO head Pascal Lamy. +Moreover, while the customs union was proclaimed in 1995, the earliest it can be formed is in July 2011, which is unlikely. +Predominantly a commodity exporter, Russia has less need for the WTO than a manufacturer like China. +Even so, one-fifth of Russia's exports comprise metals and chemicals that are sensitive to anti-dumping measures. +A series of World Bank and Russian studies have estimated that Russia can gain 0.5-1.0 percentage points in economic growth for half a decade if it joins the WTO. +Membership is also important for Russia's international standing. +It is the only G-20 country outside of the WTO, which accounts for 96% of global trade. +The WTO also represents a choice of economic and political strategy. +Before Putin resigned as president in May 2008, he presented his "Russia 2020" program. +Its heart was an "innovation strategy" based on more market reforms and investment in human capital, leading to annual growth of 6-7%. +In their rhetoric, President Dmitri Medvedev and his technocrats embrace this vision. +But Putin and his siloviki (political allies whose power base is in the security apparatus) seem to prefer an "inertia strategy," the worst of the Russia 2020 scenarios. +This strategy amounts to state capitalism, living on Russia's energy wealth, and doing nothing to curtail Russia's massive red tape and corruption. +By reversing course on the WTO, Putin has again shown himself to be Russia's master. +He did the same thing last summer by lashing out against a successful mining and metallurgical company, Mechel, and provoking the war in Georgia. +During the winter, Putin's poor policy choices on the financial crisis undermined his power. +Rather than shielding Russia's private enterprises, he engineered a domestic liquidity freeze, which led to a sharp drop in GDP of 9.5% in the first quarter of 2009, despite Russia's huge foreign reserves. +The pragmatic technocrats took over, but the subsequent doubling of oil prices signals that the danger for Russia's economy is over for now, so the siloviki are resuming command. +The question is what their next step will be. +The prominent Russian military analyst Pavel Felgenhauer insists that their prime aim is to finish off Georgia and its president, Mikheil Saakashvili, who remains in power and defiant. +Georgia has received no military support and is virtually undefended. +The Kremlin continues its propaganda offensive against Georgia, and has vetoed prolonging the mandate for United Nations observers in Georgia and Abkhazia. A major Russian military maneuver, Caucasus 2009, is underway. +The last such maneuver, Caucasus 2008, was followed by the invasion of Georgia. +During the latter part of this maneuver, July 6-8, US President Barack Obama is supposed to meet President Medvedev in Moscow. +Medvedev obviously hopes to reach out and improve Russia's and his own standing in the world. +The siloviki , however, prefer Russia isolated and authoritarian, with power securely in their hands. +The Kremlin wants a new strategic arms control agreement, but the siloviki desire nothing more. +Obama's administration had hoped for a final breakthrough in Russia's WTO talks, but Putin's actions have eliminated prospects for such an outcome. +The US also wants progress on the territorial integrity of former Soviet states, such as Georgia, but that, too, is unlikely. +Putin or his collaborators seem to be setting up Medvedev for a failure, suggesting that their jealousy of Medvedev's limited power is greater than their interest in defending Russia's national interests. +Yet there is still hope that Putin encounters a sufficiently negative reaction that he changes his stance on WTO accession. +After all, he suspended Russia's WTO accession talks after the August 2008 war in Georgia, only to allow them to restart this spring. +Westernize the Black Sea Region +The bloody end to the schoolhouse hostage crisis in North Ossetia, and recent clashes in Georgia between government troops and separatist forces, have put the troubled Black Sea region on the front pages of newspapers once again. +This rising violence is also a wake-up call for the West, highlighting the need for a new Euro-Atlantic strategy in a vitally important region that lies at the crossroads of Europe, Eurasia, and the Middle East. +Indeed, the Black Sea region is the Euro-Atlantic community's eastern frontier with the wider Middle East. +With Afghanistan, Iraq, and Iran topping the list of strategic challenges facing the West, anchoring democracy and security in these new borderlands of the Euro-Atlantic community has become imperative for both the United States and the EU. +Moreover, success here can provide lessons in how to facilitate the daunting process of reform and modernization in the wider Middle East. +Georgia's "Rose Revolution" last winter demonstrated that the will to implement radical reform now exists. +For the first time, a country in the region is matching its aspirations with the concrete steps needed to become a viable candidate for eventual membership in Euro-Atlantic institutions. +A visitor to Georgia's capital, Tbilisi, now sees the same level of determination to join the West that existed a decade ago in the Baltic states. +America and Europe share an interest in the success of these efforts, particularly as they seek to diversify energy supplies away from Saudi Arabian and Persian Gulf oil. +The Black Sea is poised to become a key conduit for non-OPEC, non-Gulf oil and natural gas flowing into European markets and beyond. +The Black Sea region's long-term stability and integration with the West is thus critically important to the long-term energy security strategy of EU and NATO members. +Anchoring these countries to the West will not be easy. +Whether the end result is better relations or full integration of these countries into the EU and NATO is an open question. +But both organizations need to reach out to these countries, a process that should be seen as the next phase in completing the wider Europe. +What should a new bold yet realistic EU and NATO outreach strategy for the Black Sea region look like? +Clearly, the region's countries are weaker and further behind previous candidates for Western integration. +But the good news is that the EU and NATO are much better positioned to develop an ambitious strategy than they were vis-à-vis Central and Eastern Europe a decade ago. +If the EU and NATO decide to launch a bold outreach strategy for the region, they will be able to draw on existing tools, conceptual talent, and practical experience. +For example, NATO already has three members - Bulgaria, Romania, and Turkey - bordering the Black Sea. +As for the EU, the candidacies of Romania and Bulgaria need to be concluded successfully, together with the issue of Turkey's membership aspirations. +An EU that includes Sofia and Bucharest, and that is on track with Ankara, will be well positioned to engage the wider region. +The EU also needs to put meat on the bones of its new Neighborhood Policy, while NATO must apply new mechanisms for strengthening ties with the region. +As opposed to a 100- or 200-meter sprint, both organizations need to think more in terms of a much longer race, perhaps a marathon. +If countries in the region embrace the idea, a network of current EU and NATO members could step forward with projects and assistance aimed at promoting a Black Sea identity and community. +Recent events in Georgia remind us that resolving the region's "frozen conflicts"- i.e., those in the breakaway regions of South Ossetia and Abkhazia, of Transdneistria in Moldova, and Nagorno-Karabakh in Azerbaijan - must be a priority. +In reality, these conflicts are not frozen; they are festering wounds that breed corruption and organized crime. +They inhibit democratization and incite instability. +While these conflicts involve historical grievances, outside actors - particularly Russia - contribute to their lack of resolution, which is essential for successful reform. +So far, neither America nor Europe has made these conflicts a top priority. +Resolving these semi-dormant wars requires stepped-up political involvement, economic engagement, and a willingness to provide Western peacekeeping forces and monitors if and when they are needed. +But the long-term peace and stability needed to advance economic and political reform in the region will also require either a change in Russian behavior or a reduction in Russian influence. +The experience of the last decade suggests that a policy of engaging the Kremlin intensely while protecting fundamental Western interests may be the best way to proceed. +Developing a new Euro-Atlantic strategy for the Black Sea region must start with the democracies of North America and Europe recognizing their moral and political stake in the outcome. +Projecting stability and security in these countries is the next logical step in building a Europe "whole and free" and securing the Euro-Atlantic community's eastern frontier with the Middle East. +This task will be as important over the next decade as integrating Central and Eastern Europe into the West was in the 1990's. +A Global Green New Deal +Far from burdening an already over-stressed, over-stretched global economy, environmental investments are exactly what is needed to get people back to work, get order books flowing, and assist in powering economies back to health. +In the past, concern for the environment was viewed as a luxury; today, it is a necessity -- a point grasped by some, but by no means all, economic architects yet. +A big slice of President Barack Obama's $825 billion stimulus package for the United States includes a boost to renewable energy, "weatherizing" a million homes, and upgrading the country's inefficient electricity grid. +Such investments could generate an estimated five million "green-collar" jobs, provide a shot in the arm for the construction and engineering industries, and get America back into the equally serious business of combating climate change and achieving energy security. +The Republic of Korea, which is losing jobs for the first time in more than five years, has also spotted the green lining to grim economic times. +President Lee Myung-Bak's government plans to invest $38 billion employing people to clean up four major rivers and reduce disaster risks by building embankments and water-treatment facilities. +Other elements of Lee's plan include construction of eco-friendly transportation networks, such as high-speed railways and hundreds of kilometers of bicycle tracks, and generating energy using waste methane from landfills. The package also counts on investments in hybrid vehicle technologies. +Similar pro-employment "Green New Deal" packages have been lined up in China, Japan, and the United Kingdom. +They are equally relevant to developing economies in terms of jobs, fighting poverty, and creating new opportunities at a time of increasingly uncertain commodity prices and exports. +In South Africa, the government-backed Working for Water initiative -- which employs more than 30,000 people, including women, youth, and the disabled -- also sees opportunity in crisis. +The country spends roughly $60 million annually fighting invasive alien plants that threaten native wildlife, water supplies, important tourism destinations, and farmland. +This work is set to expand as more than 40 million tons of invasive alien plants are harvested for power-station fuel. +As a result, an estimated 500 megawatts of electricity, equal to 2% of the country's electricity needs, will be generated, along with more than 5,000 jobs. +So it is clear that some countries now view environmental investments in infrastructure, energy systems, and ecosystems as among the best bets for recovery. +Others may be unsure about the potential returns from investing in ecosystem services such as forest carbon storage or in renewable energy for the 80% of Africans who have no access to electricity. +Still others may simply be unaware of how to precisely follow suit. +In early February, the United Nations Environment Program will convene some of the world's leading economists at the UN's headquarters in New York. +A strategy for a Global Green New Deal, tailored to different national challenges, will be fleshed out in order to assist world leaders and ministers craft stimulus packages that work on multiple fronts. +The Global Green New Deal, which UNEP launched as a concept in October 2008, responds to the current economic malaise. +Spent wisely, however, these stimulus packages could trigger far-reaching and transformational trends, setting the stage for a more sustainable, urgently needed Green Economy for the twenty-first century. +The trillions of dollars that have been mobilized to address current woes, together with the trillions of investors' dollars waiting in the wings, represent an opportunity that was unthinkable only 12 months ago: the chance to steer a more resource-efficient and intelligent course that can address problems ranging from climate change and natural-resource scarcity to water shortages and biodiversity loss. +Blindly pumping the current bail-out billions into old industries and exhausted economic models will be throwing good money after bad while mortgaging our children's future. +Instead, political leaders must use these windfalls to invest in innovation, promote sustainable businesses, and encourage new patterns of decent, long-lasting employment. +Designer Diets? +Throughout our lives, we are exposed to a complex mixture of food compounds. +Intricate biochemical processes extract from food the energy and other useful components that enable us to grow and function. +Many compounds, seemingly unimportant in the past, are now recognized as influencing our health. +For example, lycopene from cooked tomato sauces may help prevent prostate cancer. +Everyone, indeed, knows that food can have a positive or negative impact on health. +Food may never cure any particular disease, but diets rich in fruits and vegetables, cereals and plant-sourced oils offer protection from many cancers, cardiovascular disease, and other illnesses associated with old age. +The problem, for scientists and consumers alike, is that the benefits are not the same for everyone. +So we need to understand how what we eat interacts with our bodies -- or, more specifically, our genes -- to affect our health. +This is the science of nutrigenomics. +The long-term aim of nutrigenomics is to define how the whole body responds to food using so called "systems biology." +Every cell in your body (except mature red blood cells) -- there are about 50 trillion in an adult -- contains copies of your DNA, which are coiled up tightly to form 46 separate bundles called chromosomes. +These chromosomes are stored in the core of the cell (nucleus), and there are 22 matching pairs, one of each pair from each of your biological parents, plus an X-chromosome from your mother and either an X- or Y-chromosome from your father; XX makes you a girl and XY a boy. +DNA stores information that is vital to the growth, repair, replacement, and correct functioning of our cells. +It consists of two strings -- formed from phosphate and sugar -- along which four unique chemical compounds (DNA bases) are attached. +There are about three billion bases, and the sequences in which they occur is our genetic code, or human genome. +Within the genetic code, there are 30,000-40,000 highly organized regions called genes. +Genes are the basic unit of heredity, and, unless you are an identical twin, the combination of genes inherited from your parents is unique to you. +Genotyping can be used to determine which genes you have, but it cannot always predict your phenotype. +This includes our risk of developing a host of age-related diseases. +Genes code for proteins, the body's workers, which are not made directly from DNA, because they do not speak the same language. +Ribonucleic acid (RNA) acts as an interpreter in a process called transcription (the reading of genes). +Translation from RNA creates three-dimensional proteins from combinations of 22 essential amino acids -- essential only because our bodies are not able to make them, so they must be obtained from our diet instead. +Such is the complexity of nutrigenomics that it is no longer possible for nutritional researchers to work alone. +Expertise in a wide variety of different areas -- molecular and cell biology, mathematics and statistics, nutrition and diet, food chemistry, and social science -- is fundamental to progress. +No War of Civilizations +More to the point, this is not a new war. +Terrorism has existed as a political tool in the Middle East for a long time -- and it has been used not only against Israel or the United States. +It was Syrian agents who assassinated Lebanon's President-elect Beshir Gemayel in 1982. +Kurdish terrorists have been active in Turkey for decades; Islamic terrorists assassinated President Anwar Sadat in l981 and later tried to assassinate President Mubarak. +This is not a fight against Western imperialism or globalization. +Nor is it a response to the present violent deadlock in the Israeli-Palestinian negotiations: some of Osama bin Laden's terrorist acts against American targets in the mid-1990's, it should be recalled, occurred at the height of the Israeli-Palestinian honeymoon that followed the Oslo agreements of l993. +Instead, we are witnessing a much deeper phenomenon, which is as much cultural as political and economic. +Islam as a religion can be tolerant as well as triumphalist -- as its sister world religion, Christianity, can be. +But there is a strain in extremist Islam that sees modernity -- the whole Enlightenment project -- as its enemy. +For it democracy, equality, political liberalism, separation of state and church, equality between the sexes, secularism -- are all the work of the Devil. +Just like the Anabaptists of Münster, they see themselves as God's agents in a world corrupted by the sins of materialism and faithlessness. +Such a Manichaean world legitimizes terrorism as the will of God. +For people like Bin Laden -- and it appears that it is his version of Islamic fundamentalism which is behind the terror acts in New York and Washington -- even the Saudi monarchy is evil, because it has facilitated American presence in the Middle East. +For years, some versions of such terrorism have received tacit support from some Arab states. +Even some European countries, for causes deeply rooted in a Machiavellian raison d'etat , have sometimes closed their eyes when confronted with terrorist behavior. +Syria -- a prime source of state-sponsored terrorism -- is now even considered a candidate for a seat in the Security Council. +But just as there could be no moral neutrality in the war against Nazism and Fascism, so the coalition the Americans are now trying to build will begin to take as a root assumption that, if the war against terrorism is to be serious, tolerance of terror-supporting regimes cannot go on. +Some terrorists are, no doubt, motivated by legitimate concerns and have legitimate grievances (the Kurds and the Palestinians come to mind). +Yet legitimate goals do not legitimize evil means. +The kind of terrorism which we saw in the l970's and l980's -- airline hijacking, the murder of Israeli athletes in the l972 Munich Olympics -- has now mutated into the Islam-inspired Palestinian suicide terrorist, and finally into the Armageddon-like landscape we now see in New York and Washington. +The war ahead will be a difficult one. +The war against Iraq of a decade ago, and the "virtual" war without casualties that NATO waged in the skies over Kosovo, offer no precedents. +Indeed, they deluded us for too long into thinking that the war against terrorism was a police matter -- that investigators and indictments were the way to fight fanatical terrorists, not a relentless, painstaking armed struggle. +Those delusions, at long last, ended brutally with the massacres in New York and Washington. +No clear strategies now exist for how the war is to be waged. Strategies, however, will be found. +What would be a tragic is if this struggle against terror became a war of civilizations, of the West against Islam. +For the terrorist vision of Islam is a perversion of it. +But collaborators with terrorism should, and will likely be viewed with the same severity as the terrorists themselves. +Only in this way can this war against the world of the Enlightenment, which is the modern world that stretches across all the oceans and, yes, embraces all its faiths, be won. +How to Target Iraq +In the current debate about policy towards Iraq, two extreme alternatives are usually presented: either extend the military campaign against terrorism to Iraq, or maintain the current uneasy status quo with that country. +Pious talk about reworking the UN sanctions is another version of the second alternative - that is, of doing nothing. +Both alternatives are unpalatable. +Yet preparing a ground war against Iraq - finishing off the unfinished business of the 1991 Gulf War - is a high risk strategy. +Arab countries, already questionable allies in the war against fellow Muslims in Afghanistan, will be even less reliable in a war against fellow Arabs. +The Europeans, let alone the Russians, may demure. +The military odds appear daunting. +Still, letting the status quo continue is equally problematic. +It means that the Iraqi people will continue to suffer - both from Saddam's brutalities, as well as from the consequences of the sanctions caused by his continued rule. +Moreover, it would continue to send the wrong message to would-be terrorists: you can get away with murder. +The perceived weakness of the US after the embassy bombings in East Africa and the attack on the destroyer the USS Cole no doubt contributed to the audacity of the attacks of September 11 +Other options, however, do exist and a combination of them could help bring down Saddam without necessarily engaging in outright military action. +First, local forces opposed to Saddam should be encouraged. +By this I do not mean the loudmouthed but totally ineffective so-called Iraqi Opposition. +The local forces to be encouraged - by special operations people and the provision of arms and training - are the leaders of the southern Shi'a and the northern Kurds. +In the latter case, the infrastructure for support already exists, though it was partially dismantled during the Clinton administration. +In the Shi'a south, still reeling from the brutal suppression of the ill-fated 1991 rebellion, contacts must be created and networks established. +Iraq's neighbors - Saudi Arabia in the south and Turkey in the north - must be reassured that Shi'a and Kurdish rebellion will not result in the dismantling of Iraq and a change of borders: both countries have legitimate concerns regarding this issue. +With the current much more open regime in Teheran, Riyadh can also be convinced that the dangers from an Iranian-controlled Shi'a entity in southern Iraq are less formidable now than they were in 1991. +On the other hand, the cozy relationship that now exists between Jordan and Saddam must be addressed, with all sensitivity to Jordan's dilemmas. +The Iraqi politico-military elite must be both targeted and approached. +Saddam has been masterful at filling most crucial positions in the army and security services with people who come from his Tikriti clan. +But they are far from being a monolithic group: enmity, jealously, anger over the past brutalities and injustices visited upon many of their kin may make some generals and colonels open to suggestions of a coup. +Those suggestions should be premised on a two level approach: first, the US, with UN support, should create a war crimes tribunal to judge Saddam and his top generals: they should know that come the day of reckoning, they will be hunted down like Milosevic and his minions. +One major indictment should deal with the use of poison gas against Kurdish rebels in Halabja during the time of the Iran/Iraq war. +Parallel to this, and the encouragement of insurrections in Iraq's south and the north, preparations for a military option should be credibly enhanced. +But with the stick should come a carrot: with good intelligence, some Iraqi generals and colonels should be approached with offers of amnesty and support should they decide to try to topple Saddam. +Failure to act, they should be told in no uncertain terms, will leave them exposed (like Saddam) to an indictment by in an international war crimes tribunal once Saddam's rule is brought to an end. +They should also be offered the lifting of sanctions on Iraq provided that they - after getting rid of Saddam - accept the resumption of a UN inspection regime. +Even if this will not immediately bring Saddam's regime down, such active attempts at undermining his rule will certainly make Saddam nervous, and as Ceausescu and Milosevic have shown, nervous dictators make fatal mistakes. +One premise underlies this entire line of thought: to imagine that there is a democratic alternative to Saddam, or that once he disappears there will be a democratic transition in Iraq, is to entertain dangerous illusions. +The only alternative to Saddam's regime is some sort of military rule, but one less oppressive and relatively more open. +It must certainly be committed to a foreign and internal policy not based on terrorism and thuggery and a Saddam-like quest for weapons of mass destruction. +Here, undoubtedly, is a complicated strategy, and one with its own inherent pitfalls. +One key advantage of it is that such an approach has a real chance of gaining support, albeit sometimes tacit, from Arab countries - and from Europe and Russia as well. +Such a calibrated approach, however, combining a differentiated understanding of the nature of Saddam's regime and its weaknesses, has a better chance of success than an outright assault, or the dangers inherent in allowing Saddam to remain in power. +The successes in Afghanistan call for an equally nuanced and sophisticated approach in regard to Iraq. +A Saudi Protectorate for the Palestinians +From Hosni Mubarak to Ariel Sharon, Middle East leaders are trekking to Washington to discuss restarting the peace process. +President Bush talks of a Palestinian state and of reforming the Palestinian authority, but (so far) offers no road map to achieving either. +Here Shlomo Avineri, once Director-General of Israel's Foreign Ministry, proposes an innovative approach to reach both goals. +Two conflicting needs assail the Middle East. +The Palestinians must rebuild political structures almost completely destroyed by Israel's recent incursions into the West Bank. +Yet it is also clear that the Palestinians are unable to create a polity untainted by terrorism and free of an ideology that violently repudiates Israel's right to exist. +After the Oslo agreements were reached a decade ago, supporters of the peace process, in Israel and abroad, hoped that the PLO - an armed national liberation movement deeply enmeshed in terrorism - would transform itself into a responsible and viable political structure. +Only then would a sovereign Palestinian state be able to live in peace alongside Israel. +If the ANC could make such a transition in South Africa, why not the Palestinians? +The hope that Yasser Arafat might become a Palestinian Nelson Mandela inspired even Israelis skeptical about the Oslo process. +This was not to be. +Arafat missed the historic opportunity to achieve a Palestinian state in 2000 when he rejected proposals by President Clinton and then Israeli Premier Barak at Camp David and later in Egypt. +Instead, he launched an armed intifada, in which competing Palestinian militias unleashed terrorism and suicide attacks against Israeli civilian targets - not only in the occupied territories, but also in Jerusalem, Tel Aviv, Haifa, Hadera, Afula, and Netanya. +Some militias were under Arafat's direct control, while others got semi-official support from him, and still others were his antagonists. +Their common aim was to wrest from a frightened and terrorized Israel what could not be achieved by diplomacy. +Palestinian territories descended into a lawless chaos reminiscent of Lebanon in the 1970-80's. +Israel will not allow the reconstruction of terrorist structures on its doorstep: no country would. +But Ariel Sharon's government should not be allowed to use the Palestinians' utter failure at peaceful nation building as an alibi for continued occupation. +What, then, is to be done? +Will an international force hunt down suicide bombers? +Will it possess intelligence assets and the will to fight if needed? +Such a force is dangerous nonsense. +Palestinian institutions must be rebuilt, but within a legitimate Arab context. +Like Kosovo and Bosnia, Palestinian territories should be put under an international protectorate, but not +A Saudi protectorate over the Palestinians will have internal Arab legitimacy; it will also possess knowledge and techniques used in the Arab world to ensure security. +Palestine at the Crossroads +President George W. Bush's long-awaited speech on the Middle East combined hope for both sides with extremely tough language. +The hope was clear: Israelis deserve security and a life without fear of suicide bombings and other acts of terrorism; Palestinians deserve dignity, an end to the Israeli occupation, sovereignty, and statehood. +But the toughness was reserved solely for the current Palestinian leadership: without mentioning Yasir Arafat by name, Bush clearly called for a new Palestinian leadership, one "not compromised by terrorism." +The current leadership, he maintained, has not fought terrorism, but has instead encouraged and even "trafficked" in it. +He condemned the Palestinian Authority's rejection of Israeli peace offers and promised US support for statehood if the Palestinians change their leadership, reiterating that "a Palestinian state will not be achieved by terrorism." +One cannot imagine a harsher condemnation of Arafat and the entire Palestinian leadership. +Bush is now clearly suggesting that Arafat is not a partner for peace, that the Oslo agreements are, in effect, dead, and thus that the Palestinian Authority as constituted by them does not exist anymore. +By adopting this policy, Bush is walking a fine line between Arab pressure to support the emergence of a Palestinian state and his own commitment to fight terrorism and not reward suicide bombers. +The speech was a masterful blend of the carrot and the stick. +But Bush now faces two challenges--one major, the other minor--in pushing his policy forward. +The major challenge is how the demand for a change in the Palestinian leadership will be met. +As a result, elections in Palestine currently mean about as much as they did in the old Soviet Union. +How will democratic change come about in such a society? +Will it follow the path of chaotic, violent regime collapse by which Nicolae Ceausescu lost power in Romania? +Or will the Palestinians change their autocratic leadership peacefully, as in Serbia when Slobodan Milosevic was ousted? +Both options cannot be ruled out. +President Bush also mentioned Arab help in bringing about a change of Palestinian leadership. +Does he have in mind something like a Saudi protectorate over the Palestinians, sanctioned by the Arab League? +It may not be a bad idea. +But until now, at least, the Palestinians have not been good at building institutions that are not contaminated by terrorism. +How to build them remains the central question, and Bush has yet to offer a clear answer. +The minor challenge is to get the Europeans to support Bush's policy. +Some Europeans may see Bush's approach as another example of American unilateralism--and in a way they are right. +But so what? +The problem with the Europeans is that all they have are declarations and speeches--a policy toward the region that is rich in lofty rhetoric, but poor if not starved in the capacity to implement anything concrete. +The Middle East Dream Map +The recent push given by President George W. Bush to the so-called Middle East "road map" is welcome, and the fact that both Israel and the Palestinians have accepted it is a good omen. +Yet the chances that it will bring real, as opposed to merely rhetorical, progress toward reconciliation remain slim. +The reasons are manifold: first, what is called a "road map" is in reality little more than a wish list of what has to be done in order to achieve peace between Israel and the Palestinians. +It is a noble set of goals, but it sometimes appears to be distant from the region's political realities. +For example, the road map rightly acknowledges that the Israeli-Palestinian conflict cannot be solved in a void; regional considerations must be taken into account. +At the same time, the "quartet" that composed the road map--the US, the EU, Russia, and the UN--realizes that Israel cannot be convinced to make such concessions without a fundamental change in the general attitude of the Arab world to the existence of the Jewish state. +For this reason, the road map premises peace between Israel and the Palestinians on normalization of relations between Israel and all Arab countries. +Can this really be achieved in the foreseeable future? +Does the US--or, for that matter the Quartet--really believe they know how to move Syria or Libya from their current closed-mind position, which threatens Israel's existence? +There is no indication in the road map that the initiators have thought this out beyond wishing out loud that it would happen. +Similarly, the road map is an attempt to revive the Oslo peace process. +But this process, based in the 1993 Oslo accords between Israel and the PLO, has been in serious trouble since Yasser Arafat rejected the peace package offered to him by Prime Minister Ehud Barak, with the support of President Bill Clinton, at Camp David in December 2000. +This was a watershed in Middle East politics--a massive change for the worse. +The Palestinians' refusal to accept - or even continue to negotiate about -- the most generous and comprehensive Israeli offer since l967 in exchange for an end-of-conflict agreement signified that the Palestinians are not ready to accept Israel's legitimacy. +There is now much more bitterness, fear, and hatred on both sides than in 2000, when the Camp David negotiations failed. +The direct and indirect support given by the Palestinian Authority to suicide bombing against civilians in Israel suggested to most Israelis that the Palestinians still view attacks against civilians as a legitimate weapon. +The sometimes-brutal Israeli responses to such terrorism further embittered the Palestinians against Israel. +True, the sidelining of Arafat and the appointment of Abu Mazen as the Palestinian Prime Minister is an important step in the right direction. +But Abu Mazen's real power has yet to be tested. +Does he really control the murky financial resources of the PLO, which gave Arafat so much real power beyond the formal title of head of the Palestinian Authority? +Most importantly, does Abu Mazen have the political will and power to really suppress--harshly, if necessary--the murderous terrorist gangs that control so much of the Palestinian population? +Much depends on the answers to these questions. +Last but not least: by the admission of its drafters, the road map will take a number of years to implement--in the best case two, in the worst case three or four. +It would need constant follow-up on dozens of contentious points at the highest level, i.e., the US President. +Is President Bush--or any US President--capable of effectively exercising his enormous authority, day in and day out for two or three years, to ensure that the parties really translate what might be just a verbal acceptance of vague language into painful, and even politically dangerous, decisions? +Past experience is not encouraging. +The attention span of a US President is limited on any issue. +Yet without his constant attention, the road map will run into the Middle East sand dunes that have already buried so many well-intentioned peace plans. +What, then, can be achieved? +Perhaps, as in Bosnia and Kosovo--where nobody talks about a permanent solution, but violence has been stopped--what is needed is stabilization, an end to daily bloodshed, de-escalation of hostility, and some mutual confidence building. +Israelis and Palestinians are not yet ready for the tough political decisions envisaged by the road map. +They need a series of stopgap measures to bring stability and safety for civilians on both sides. +With such de-escalation, perhaps at some time in the future true reconciliation will be possible. +However difficult or sad to admit, the moment is not ripe for more than this. +Palestinian Refugees and German Expellees +The atmosphere could not have been more tranquil: a former royal castle in the rolling hills of the Taunus region near Frankfurt, where statesmen and politicians held an annual meeting dealing with the Middle East. +Europeans and Americans, Israelis and Iranians, Egyptians and Turks, Palestinians and Tunisians rubbed shoulders. +The novelty this year was the presence of representatives from post-Saddam Iraq, among them an official from the Kurdish Regional Government, as well as a high ranking Shi'a representative. +The new situation in Iraq, along with the Middle East road map, were at the center of attention. +On the opening night, a senior German government minister, himself deeply involved in Middle Eastern affairs, addressed both subjects, displaying great sensitivity both to Israeli and Palestinian concerns. +The evening proceeded along the expected anodyne trajectory until a Lebanese academic raised the issue of the right of Palestinian refugees to return to Israel. +The senior German minister listened attentively, and then said: ``This is an issue with which we in Germany are familiar; may I ask my German colleagues in the audience to raise their hand if they, or their families, have been refugees from Eastern Europe?'' +There was a moment of silence. +The issue is embarrassing in Germany, fraught with political and moral landmines. +Slowly, hands were raised: by my count, more than half of the Germans present (government officials, journalists, businessmen) raised a hand: they, or their families, had been Vertriebene --expelled from their ancestral homes in Poland, Czechoslovakia, Hungary, and Yugoslavia after World War II. +It is estimated that up to 10 million were expelled, and with their descendants they make up today almost double that number--almost one in four Germans. +In the hushed room, the senior German minister continued: he himself was born in Eastern Europe, and his family was expelled in the post-1945 anti-German atmosphere. ``But,'' he added, ``neither I nor any of my colleagues claim the right to go back. +It is precisely because of this that I can now visit my ancestral hometown and talk to the people who now live in the house in which I was born--because they do not feel threatened, because they know I don't want to displace them or take their house.'' +The minister went on to explain that peace in Europe is today embedded in this realization: if East European countries had thought that millions of ethnic Germans would like to return, ``the Iron Curtain would have never come down.'' +It was a highly emotional response to the Lebanese academic's question--one that Arab representatives chose later on to ignore. +But it was just one more expression of the context in which the issue of the 1948 Palestinian refugees has to be addressed. +As the German senior minister reminded the audience, there are numerous parallels in recent history to the Palestinian refugee problem. +Anyone who now claims that the 1948 Palestinian refugees have a claim, in principle, to return to Israel, must confront the question: should the millions of Germans expelled from Eastern Europe after 1945 also have the same right of return to their lost homes? +The German minister supplied the answer. +Similarly, if Helmut Kohl's government had insisted in 1990 that all Germans expelled from Poland and Czechoslovakia have a right to return to those countries, German reunification would not have gained the broad international agreement that it did. +It would be clear that what West Germany had in mind was not reunification, but reversing the consequences of Nazi Germany's defeat in 1945. +The Palestinians' demand for the right of return has an analogous meaning. +Insistence on it in 2000 at Camp David and Taba made clear to most Israelis that what the Palestinians have in mind is not undoing the consequences of the Six Day War in 1967. +Rather, the demand for a right of return amounts to an effort to reverse the consequences of their defeat in 1948, when the Arab world went to war to prevent the state of Israel from being born. +It is worth keeping in mind what advocates of a Palestinian right of return now prefer to forget: Palestinian Arabs and four Arab members of the UN went to war in 1948 not only against Israel, but against international legitimacy and the UN plan for a two-state solution. +There is no other example of UN member countries going to war to prevent implementation of UN decisions. +This is what the Arab countries and the Palestinians did. +Clearly there is a serious humanitarian issue involved. +The fact that the refugees' plight was compounded by their use as political pawns for half a century is a measure of the cynicism and immorality of Arab political leadership. +Nonetheless, the humanitarian issue remains. +The senior German minister referred to it explicitly, both with regard to the Palestinians and the post-1945 German refugees. +But the political consequences for him were clear: the revanchist call for a return of refugees--in both the German and the Palestinian case--is a formula for instability, if not war. +Three Iraqs, Not One +America's mounting difficulties in setting up a coherent form of government in Iraq, let alone a democratic one, inspire a question that most statesmen consider unthinkable: is it possible that there is no way to re-constitute Iraq as one state, and that alternative options must be considered, unpalatable as they may appear? +Like so many problems in the re-birth of states wounded by dictatorship--Eastern Europe is a good example--Iraq's difficulties have deep historical roots. +To blame everything on the heavy-handedness of the Americans is too simplistic and shallow, even if their mistakes have, indeed, been legion. +Iraq was established in the 1920's by the British, who occupied the region after the Ottoman Empire disintegrated at the end of WWI. +Their policies were dictated by British imperial interests, and gave no consideration to the wishes, interests, or characteristics of the local population. +What British imperial planners did was to stitch together three disparate provinces of the old Ottoman Empire and put at their head a prince from Hedjaz (now a part of Saudi Arabia). +The three provinces--Mosul, Baghdad, and Basra--each had very distinct characters and very different population structures. +Mosul had a Kurdish majority, with significant Assyrian-Christian and Turkoman minorities; Baghdad was mainly Sunni; and Basra was predominantly Shi'ite. +Throwing such disparate groups into one body politic doomed the newly invented country to decades of strife and repression. +The old Ottoman Empire ruled these three provinces--as it ruled all of its imperial possessions--through its historically autocratic means. +The challenge facing the new Iraqi state was to try to create a non-despotic, relatively representative form of government in which all sectors of the population would find an expression of their political will. +This turned out to be an impossible mission. +For this reason Iraq--even before Saddam Hussein--always suffered the most repressive regime of any Arab state. +In a country where Shi'ites form the majority, the Sunnis--traditionally the hegemonic group in all Arab countries--were totally unwilling to allow any democratic process to jeopardize their rule. +A Shi'ite insurrection was brutally put down in the 1920's (with the help of the British Royal Air Force). +Similarly, Kurdish attempts at autonomy before WWII were drowned in bloody massacres of tens of thousands of innocent civilians, and even the Assyrian Christian minority--a relatively small group, with no political ambitions--was exposed to murderous assaults in the 1930's. +Under these conditions, with the Sunni ruling minority constantly feeling threatened, it was no accident that the only attempt in any Arab country to establish something like a pro-Nazi fascist regime occurred in Iraq in the early 1940's under Rashid Ali al-Khailani. +The British suppressed this misadventure, but not before hundreds of Jews in Baghdad were murdered in a wild farhood (pogrom) instigated by the short-lived pro-Nazi government. +Saddam's regime was merely the most extreme manifestation of the harsh underlying fact that Iraq's geography and demography condemned it to rule by the iron fist. +Nor has Saddam's fall changed this fact: anti-US violence is not only an expression of anger at foreign occupation; it is also a Sunni attempt to abort the establishment of a democratic order that would put them--the historical masters--in a subordinate position. +Similarly, one cannot see the Kurds in the north submitting willingly to a Baghdad-dominated Arab regime, let alone a Shi'ite one (most Kurds are Sunnis). +There is little understanding in the West of how deep the Sunni/Shi'ite divide runs. +Put yourself in pre-1648 Europe, a time when Protestants and Catholics slaughtered each other with abandon, and you'll understand the enmity immediately. +So what can be done? +Yugoslavia's example shows that in multi-ethnic and multi-religious countries deeply riven by conflict, partition and separation may be the only way to ensure stability and democratization. +There is no doubt today that Croatia and Serbia--despite their difficulties--stand a better chance of becoming more or less stable democracies than if they were still fighting for mastery among themselves within the Procrustean bed of the former Yugoslavia. +Nor is federation an alternative--as the terms of the federation itself become the bones of contention (see Bosnia or Cyprus). +Even the pacific Czechs and Slovaks found it easier to develop their respective democratic structures through a velvet divorce rather than be joined in an unworkable marriage. +The time has come to think the unthinkable, about creating a Kurdish state in the north, an Arab Sunni one in the center around Baghdad, and an Arab Shi'ite state in the south around Basra. +Repeating mantras about territorial integrity--the conventional wisdom of international relations--is productive only as long as it ensures stability and averts chaos. +Again, as Yugoslavia--and the Soviet Union--showed, once strife replaces stability, territorial integrity loses its strategic meaning and legitimacy. +This is not a universal prescription for ethnically homogenous states. +The point is simply that there are moments in history when democratization and nation building coincide, and that in deeply divided societies the minimum consensus needed for both to succeed simultaneously is difficult to achieve. +All this may run contrary to conventional wisdom, but who thought that the USSR would disintegrate? +Creative and innovative thinking is needed about Iraq; otherwise today's mayhem will continue--and worsen. +A Referendum For Kurdistan? +The assassination of the President of Iraq's Governing Council makes it crystal clear that the US is failing to create the minimal law-and-order needed for any sort of orderly transfer of power to take place by June 30th. +Barely two months ago, the signing of a constitutional document by a US-appointed group of un-elected Iraqi officials was heralded as if it were the re-enactment of America's constitutional convention in Philadelphia in 1787. +But by now it is clear that this is a worthless piece of paper. +No imposed constitution, however elegant it may be, will be very helpful to Coalition forces when confronted with the type of mayhem seen in towns like Fallujah or Najjaf. +In the Kurdish region of northern Iraq, however, the situation is completely different: in the last ten years, under the protection of the Allies' no-fly zone, and even more so since the toppling of Saddam, the Kurdish regional government has been able to establish and sustain a relatively orderly administration. +It has overcome tribal and party differences and created a de facto functioning government, with an impressive record on development issues such as education, irrigation, and construction - and, above all, with no violence. +Confronted with the debacle in the rest of (Arab) Iraq, the question has to be asked why the US-led coalition should not hold a referendum in the Kurdish region, asking the population how they would like to be ruled. +After all, the Kurds have, by any internationally accepted standards, a right to self-determination. +Historically, the Kurds - who are distinct in language, culture, and historical consciousness from Arabs - never had their day in court. +After World War I and the fall of the Ottoman Empire, the victorious Allies promised them a state of their own - a promise that was cynically betrayed when British and French imperial interests took precedence. +Since then, the Kurds have suffered under the despotic rule of rival ethnic groups. +There are obvious obstacles to holding such a referendum, primarily because the US does not have a mandate to dispose of Iraq as it pleases. +But the same goes for the rest of Iraq: the US is now lamely asking for a UN resolution mandating a transfer of power to a legitimate Iraqi government - but such an authorization is highly unlikely, nor is there anyone in Iraq to whom authority can conceivably be transferred. +Why should the one region - and people - who run an orderly government, are not involved in murder, attacks on mosques, and suicide bombing of schoolchildren, be penalized? +Another objection is the opposition of Turkey - and, to a lesser degree, Iran and Syria - to granting the Iraqi Kurds self-determination. +But if one thinks in terms of universal norms of human rights, what right has Turkey to dictate internal development in another country? +After all, nobody accepts Israel's claim to oppose as a matter of principle the establishment of a Palestinian state in the West Bank and Gaza. +The same should apply to Turkey. +If Turkey grants its own Kurdish minority more cultural and language rights and allows legitimate Kurdish political representation in the Turkish parliament, the willingness of Turkish Kurds to oppose Ankara will be diminished. +In the nineteenth century, the joint interests of the authoritarian Russian, German, and Austrian Empires prevented the establishment of a free Poland: such unholy alliances have no place in the twenty-first century. +Recently, under the aegis of the UN, a referendum on the future of Cyprus was held within the island's Greek and Turkish communities. +The outcome was paradoxical, and not to the liking of those who initiated it: but the right of the communities to determine their future was accepted. +Why not in Iraqi Kurdistan? +Perhaps to assuage political fears - and considerations of international law - any plebiscite in the Kurdish region should, initially, have only a consultative status. +But it will give legitimate expression to the will of a people long oppressed and entitled to their place in the sun. +Such a referendum may also concentrate minds among the Arab Sunnis and Shia in Iraq, when they come to realize that it is their violence that is dismantling Iraq. +Perhaps they may decide that violence is counter-productive and carries its own penalties, and may then follow the Kurdish example of curbing violence, which would help put Iraq together again without recourse to permanent repression. +If not, at the very least, the injustice suffered by the Kurdish people for generations would, at long last, be rectified. +The Other Palestinian Revolution +The euphoria that has, for over a week, greeted Mahmoud Abbas's election as President of the Palestinian Authority was perhaps justified. +But now it is time for a clear-eyed assessment of what lies before Palestinians, Israelis, and, perhaps more importantly, for the wider Arab world. +Such an assessment requires acknowledging that the election was far from flawless: Hamas and Islamic Jihad boycotted the poll, and Marwan Barghouti, a fellow Fatah member with Abbas and the one candidate who could seriously have challenged him, was ungently persuaded by the movement's leadership to withdraw his candidacy in order to present a unified front. +Moreover, Abbas (also known as Abu Mazen) succeeded in getting the dozen or so Palestinian security services and militias under his control. +This guaranteed his victory, though the parades of armed men brandishing guns at his rallies were not exactly what democratic norms call for. +Yet the fact remains that after decades of Yasir Arafat's autocratic rule, and despite the obvious constraints of continued Israeli occupation, the Palestinians did elect a leader in a relatively free and competitive election. +For years, Arafat avoided holding elections, as required by the laws of the Palestinian Authority, under the pretense that they cannot be held under occupation: but, lo and behold, two months after his demise, an election was held - and with resounding success. +The presidential election will obviously serve as a catalyst for renewed, and possibly more successful, negotiations with Israel. +But the impact of the Palestinian vote will also be watched closely in the Arab world, because what happened in the West Bank and Gaza is unparalleled in the annals of Arab politics. +Abbas will now bask in the glow of having been elected. +Nothing like this has happened in any Arab country. Indeed, Abbas is now the only Arab leader who came to power in a more or less free election. +Is Palestinian society so different from other Arab societies? Not really. +But there were several unique factors in the Palestinian context. +First, there was strong external pressure: confronted and exasperated by Arafat's deviousness and autocratic style, the United States and the European Union clearly told the Palestinians that any future support for their quest for independence would depend on their going through a reasonably acceptable democratic process. +Second, most Palestinians perceived that their ability to go through such a democratic process was itself a significant step in their struggle against Israel. +Finally, Palestinians have been exposed not only to the obvious hardships of occupation while living under Israeli rule for the better part of four decades; they were also able to experience, at close range, a liberal democracy at work - a free press, an independent judiciary, and political pluralism. +The dialectic of occupation plays strange games, both with occupier and occupied. +The Palestinian elections were seen all over the Arab world on Al-Jazeera and other Arab TV channels. +They must have focused people's minds on their own stunted political conditions. If the Palestinians, under Israeli occupation, can choose their own leaders, why can't the same happen in Cairo or Damascus, in Ryadh or Algiers? +When the jubilation and the justly earned compliments for the Palestinians subside, both Arab rulers and Arab masses (the much hyped "Arab street") may start asking some hard questions. +The Palestinians have shown that it is not true that an Arab society cannot progress towards representative institutions. +So why can't this progress be emulated in other Arab societies? +Perhaps a time bomb has been planted under the thrones of Arab potentates - kings, emirs and presidents. +While Iraq - an attempt to import democracy by force - is failing, the paradoxical conditions of an Arab democracy under Israeli occupation may be a threat that Arab rulers have not yet comprehended. +Humpty-Dumpty Iraq +The problem is not with the constitution, but with the conventional wisdom -- almost an idée fixe -- that Iraq is a viable modern nation-state, and that all it needs to make it work properly is the right political institutions. +But this is a fallacy, and responsible leaders should begin to think of alternatives. +The Iraqi state, established in the 1920's by British imperialist planners (with Winston Churchill in the lead), is a strange pastiche of three disparate provinces of the old Ottoman Empire: Mosul in the north with a Kurdish majority, Baghdad in the center with a Sunni Arab majority, and Basra in the south with a Shia Arab majority. +For their own political reasons, the British put the Sunni Arabs -- never more than 25% of the population -- in control of the whole country, and even imported a Sunni Arab Hashemite prince to rule over their creation. +Ever since, the country could be held together only by an iron fist: Iraq's history is replete with Shia, Kurdish, and even Christian Assyrian revolts, all put down in bloody fashion by the ruling Sunni minority. +Throughout its history, modern Iraq has always been the most oppressive of the Arab countries. +Saddam's rule was only the most brutal in a long line of Sunni regimes. +It was this Sunni hegemony -- and not merely that of Saddam's Ba'athist regime -- that was toppled by the United States. +But, given Iraq's history and demography, the American attempt to refashion the country as a functioning democracy has foundered on three shoals: the Shia majority's empowerment, the Kurds's refusal to give up their hard-won de facto mini-state in the north, and the Sunnis' violent campaign to undermine any system that they do not lead. +In short, the draft constitution is an attempt to square a circle. +The Sunni resistance -- a guerilla and terrorist war that was well prepared in the last years of Saddam's rule -- will continue to try to subvert any semblance of order representing the current majority Shia-Kurdish coalition. +The Sunnis will go on with their murderous attacks on Shias, Kurds, and the US-led military coalition. +They will probably boycott the constitutional referendum and all subsequent elections, just as they have boycotted the previous elections. +After all, given the brutal logic of their long hegemony in Iraq, why should the Sunnis contemplate submitting to a process that is premised on their minority status, particularly when whole areas of the country are under the effective control of the Sunni insurgency? +Similarly, why should the Shias, for their part, submit to Sunni hegemony rather than building up their own political structure in the south, modeled on what the Kurds have already achieved in the north? +Let's be frank: Iraq is going the way of Yugoslavia as it disintegrated in the early 1990's. +Of course, such norms are helpful. +But once a state disintegrates, as happened in Yugoslavia, no constitutional formulations can save it. +Constitutions works only if all sides have an interest in operating within the proposed framework -- and this obviously is not the case in Iraq. +There is nothing sacrosanct in the continued existence of multi-ethnic and multi-religious states if their constitutive groups do not wish to live together. +On the contrary, there are lessons to be learned from the demise of the Soviet Union, Yugoslavia, and even -- perhaps especially -- Czechoslovakia, which negotiated its break-up without violence. +By contrast, the current Bosnia-Herzegovina is an example of another failed attempt to keep a decrepit multi-ethnic entity alive: it doesn't work, and the country is held together only by the almost dictatorial power of the international community's High Representative and the presence of foreign troops. +Hamas in Power +The Hamas victory is, first and foremost, an indication of the total failure of the traditional Palestinian leadership to create a body politic. +Palestine is not yet a state, but it is already a failed one. +Since the Oslo Accords of l993 between Israel and the PLO, the Palestinians enjoyed limited transitional autonomy. +To be sure, the new Palestinian Authority (PA) took power under difficult conditions, but which new liberation movement does not face serious challenges when it finally must govern? +The PA had an opportunity to lay the institutional foundations for a functioning state. +But, but instead of supplying the population with the necessary infrastructure -- economic development, education, welfare, medical services, housing, and refugee rehabilitation -- Yasser Arafat's Fatah-led PA spent more than 70% of its meager budget on a dozen competing security and intelligence services, neglecting all other spheres of activity. +It created what is called in Arabic a Mukhabarat (security services) state, very much like what is prevalent in almost all Arab countries -- Egypt, Syria, Saudi Arabia, republics and monarchies alike. +The vacuum that the PA left elsewhere, including the social sphere, was filled by Hamas. +Indeed, its popularity is due not only to its fundamentalist Islamic ideology and its commitment to the destruction of Israel. +The high esteem in which Palestinians hold Hamas also grew out of what Hamas actually did for them while the PA squandered its resources. +It was not only the endemic corruption of the official Palestinian leadership that turned so many Palestinians from it. +Hamas set up better schools, kindergartens, crèches for mothers, medical centers, welfare services, and programs for youth and women -- all of this in addition giving special grants to the families of suicide bombers. +In the elections, Hamas received its dividend for doing what the Fatah-led Palestinian Authority failed to do. +It is still an open question whether Hamas in government will become more pragmatic and less committed to terrorism: it certainly is a possibility, and one should not prejudge the outcome. +But nor, on the other hand, is it clear that the existing organs of the Palestinian Authority -- especially the security services at its disposal -- will allow a peaceful transfer of power. Indeed, no such precedent exists: there has never been a peaceful transfer of power in any of the Arab League's 22 member states. +Israel's response to Hamas's victory will obviously be complicated by its own elections on March 28, and by a government headed by an interim prime minister, Ehud Olmert, owing to Sharon's incapacitation just weeks after leaving Likud and founding a new, centrist party, Kadima (Forward). +Despite Sharon's absence, Kadima maintains its lead in public opinion polls -- the most recent gave it 44 of the Knesset's 120 seats, compared to 21 for Labor and 14 for the right-wing rump-Likud, under Binyamin Netanyahu. +Kadima's success is due to Sharon's main innovation in Israeli politics: the successful unilateral disengagement from Gaza. +That withdrawal was based on the conviction that the gaps between the Israeli and Palestinian positions are too wide to enable meaningful negotiations. +Hence, Israel must start deciding the future boundaries of the country unilaterally, hoping for eventual negotiations at a later stage. +This is also the line adopted by Olmert. +But Hamas's victory suggests that the gaps between the Israeli and Palestinian sides will grow even wider, and that the chances for a negotiated settlement will recede even farther into the future. +This leaves further unilateral Israeli moves -- such as a partial set of withdrawals from selected areas in the West Bank -- as the only feasible option. +Realistic conflict management will replace utopian hopes for conflict resolution. +In a region full of paradoxes, the Hamas victory may have added another one: usually, when extremists on one side become stronger, it plays into the hands of extremists on the other side, producing a dangerous spiral effect. +In this case, however, the victory of the extremist Hamas may strengthen not the extremists of Likud, but, surprisingly, the more moderate centrists of Kadima. +One cannot be certain of such an outcome, of course, but it is now the best that one can realistically hope for. +Can Hamas Stay in Power? +The abduction of an Israeli soldier in the Gaza Strip, as well as the abduction and subsequent murder of an 18-year old Israeli civilian in the West Bank, have brought to the fore that question, which has haunted Israeli-Palestinian relations since Hamas won parliamentary elections in January. +The international community, led by the "Quartet" (the United States, the European Union, the United Nations, and Russia), has put three conditions to the Hamas government if it wishes to achieve international legitimacy and continue to be supported financially. +Hamas must recognize Israel's right to exist, stop all terrorist activities, and commit itself to carry out all previous international agreements signed by the Palestinian Authority. +These look like reasonable conditions to any outside observer. +To Hamas, however, they appear to undermine its very raison d'etre. +After all, this is an organization committed to the destruction of Israel -- its charter calls for a holy war against all Jews -- and the establishment of an Islamic state in all of historical Palestine. +Indeed, Article 22 of that charter reveals that Hamas views the Jews (together with the Freemasons and other nefarious organizations like Rotary International and the Lions Club), as responsible for the French and Bolshevik Revolutions, World War I, and World War II. +So it is no great surprise that Hamas rejected the Quartet's conditions. +At the same time, Palestinian President Mahmoud Abbas (Abu Mazen), who represents Fatah, which lost the January elections, has tried in vain to find common ground with Hamas through an ambiguous text known as "The Prisoners' Document." +This document was intended to serve as an implicit acceptance of Israel's right to exist. +But nothing of the sort appears in the truncated text approved by Hamas. +On the contrary, the text legitimizes continuing attacks against Israeli civilians in the West Bank, making it unacceptable to Israel -- and to the international community. +But the current crisis cannot be solved by words alone. +One of the paradoxical results of America's almost messianic belief in elections as a panacea for all the ills of the Middle East is that Hamas -- the winner of democratic elections -- has gained a degree of legitimacy that it never had before. +On the other hand, Hamas's history and current behavior clearly indicate that it regards elections as merely a political tool, and that it is devoid of any commitment to the norms and values underlying democracy. +Fascist and communist regimes of the past, which followed a similar instrumentalist approach to democracy, come to mind here. +Yet, at the same time, the US supports Abu Mazen, trying to undermine the Hamas government, thus casting a shadow on the credibility of its own commitment to democracy. +The current violence may escalate further, and could bring down the Hamas government. +On the other hand, diplomatic means may bring about the release of the Israeli soldier and put a stop to the firing of Qassam rockets from Gaza into Israel -- a daily occurrence that has challenged the credibility of the new Israeli government under Prime Minister Ehud Olmert. +But the fundamental problem is that, until now, at every historical juncture, the Palestinians refused to accept a compromise and consequently failed in nation-building. +In 1947, they refused the UN partition plan, which called for the establishments of two states in British Palestine. +In 1993, after the Oslo agreements, the Palestinian Authority established under Yasir Arafat became another militarized authoritarian regime, very much like Syria and Egypt, and did nothing to alleviate the suffering of the Palestinian refugees. +It was this failure that brought Hamas to power. +The current crisis is obviously the first serious test for Olmert and his plans for further withdrawal from Israeli-occupied territories. +But it is an even greater test for the Palestinians: will they once again be led by a radical and fanatical leadership into another national catastrophe? +Or will they finally realize that a future of independence, sovereignty, and dignity is open to them -- but only if they grant the Israelis what they rightly claim for themselves? +The international community can urge the Palestinians toward a decision. +But that decision, and its moral costs, remains in the hands of the Palestinians alone. +Putting Lebanon Together +When Israel withdrew its forces from southern Lebanon in 2000, the international understanding was that the Lebanese government would re-assert its authority in the evacuated area. +Hezbollah, which led the armed struggle against Israeli occupation, was to disarm and re-invent itself as a political force, representing the Shiite community that was historically marginalized by Lebanon's ruling Maronite, Sunni, and Druze elites. +None of this happened. +Instead of deploying its forces in southern Lebanon, the weak government in Beirut acquiesced in Hezbollah's determination to turn the area into a staging ground for attacks against Israel. +Over the last six years, Hezbollah established a virtual state-within-a-state: its militia became the only military force in southern Lebanon, setting up outposts along the frontier with Israel, sometimes only a few meters away from the border. +Occasionally, Hezbollah shelled Israel, and its leader, Hassan Nassrallah, continued his blood-curdling invective, not only against Israel and Zionism, but against all Jews. +UN Security Council resolution 1559, which explicitly called for the disarming of all militias and the reassertion of Lebanese government authority in the south, went unheeded. +After the much-heralded "Cedar Revolution" of 2005, Hezbollah even joined the Lebanese government, while at the same time maintaining its armed militia and control of the south. +Israel, for its part, still reeling from the trauma of its ill-begotten war in Lebanon in 1982, chose not to respond to Hezbollah's attacks and hoped that the attacks would not escalate. +Yet such absurd situations tend to explode, as occurred with Hezbollah's abduction of two Israeli soldiers within Israeli territory. +The continued existence of Hezbollah's illegitimate state-within-a-state can no longer be tolerated. +Like the UN presence in Srebrenica during the Bosnian war, UNIFIL has given the UN a bad name: it never stopped terrorists from attacking Israel, nor did it stop the Israeli invasion of Lebanon in 1982. +What is needed is a military delegation that has a clear mandate to use force. +The mission of such a force should be to help deploy -- by force, if necessary -- the Lebanese Army in southern Lebanon, to participate in disarming Hezbollah, and to patrol the Israeli-Lebanese border, ensuring that no incursions take place from either side. +Last but not least: it is not widely known that one anomaly of Lebanon's status until this very day is that Syria has not fully recognized its existence as a sovereign nation (in Syrian school textbooks, Lebanon figures as part of Greater Syria). +Consequently, there are no normal diplomatic relations between the two countries -- no Syrian embassy in Beirut and no Lebanese embassy in Damascus. +Will Olmert Survive? +The commission, headed by retired Supreme Court judge Eliyahu Winograd, has just published its interim report. +Its criticism of Olmert, Defense Minister Amir Peretz, and Chief-of-Staff Dan Halutz -- set forth in a detailed and meticulous 117-page assessment -- is harsh, but not surprising. +The Winograd Commission articulated what most Israelis already think: Olmert and Peretz lacked the military, security, and policy experience to confront a terrorist organization that raided Israeli territory, killed a number of soldiers and kidnapped two, and then launched thousands of rockets on civilian targets for over a month. +Indeed, the inexperience of the prime minister and the defense minister are unprecedented in Israel's history. +Olmert, who stepped into Ariel Sharon's shoes as leader of the new Kadima Party, was considered a competent but lackluster parliamentarian -- and later mayor of Jerusalem -- who was known more for his polemical style than for his political stature or gravitas. +For most Israelis, even those who voted for him as the bearer of Sharon's legacy after the Gaza disengagement, Olmert thus remained the accidental prime minister. +Likewise, Peretz, a rabble-rousing but effective trade unionist, surprised all when he won the Labor Party's leadership primary and then chose the defense portfolio over the treasury. +To many, the duo of Olmert and Peretz seemed to invite trouble. +Precisely because Israelis are aware of the constant security threat facing their country, they have always believed that their leaders should be able to lead Israel in war -- but also to ask the military tough questions when diplomacy may fail. +When such a moment arrived, totally out of the blue (or so it seemed) with Hezbollah's raid on July 12, 2006, Israel's two top politicians were completely out of their depth, stumbling into a war for which neither they nor the Israeli Army were prepared. +The military was led -- for the first time in its history -- by an Air Force general, Dan Halutz, who believed that everything could be solved by air power, creating a combustible combination of civilian ignorance and military arrogance. +In measured but devastating prose, the Winograd Commission gives failing marks to all three leaders. +Olmert decided to go into battle recklessly and unaware of the consequences. +Peretz was unable to gauge the strategic implications of his decisions. +And Halutz failed to present the civilian leadership with the full panoply of military options at the army's disposal. +Halutz already resigned a few months ago. +But both Olmert and Peretz have declared that, despite the Commission's conclusions, they would not quit: instead, they have vowed to implement the report's many far-reaching substantive recommendations about policy, strategy, and decision-making processes. +Will Olmert and Peretz be able to stay on? +Their coalition government enjoys a comfortable parliamentary majority; nor does the political arithmetic imply a viable parliamentary alternative. +But public opinion -- volatile and angry -- calls for both to resign: a public-opinion poll conducted after the Commission published its report indicated that only 14% of Israelis believe that Olmert should keep his job, while less than 11% support Peretz. +Later this week, demonstrations calling for the government's resignation are planned, and it will become obviously more difficult for the government to continue to function. +There are already rumors about a palace coup within Kadima, aimed at replacing Olmert with either the deputy prime minister, the veteran Shimon Peres, or the popular foreign minister, Tzipi Livni. +But it does not appear that Olmert will allow himself to be pushed out. +In fact, Olmert's weak and discredited government may yet survive. +If the government were to fall and new elections held, there are strong indications that the winner might be Binyamin Netanyahu, of the right-wing Likud, which was decimated in the 2006 elections, but is now patiently waiting in the wings. +Many who want Olmert to go would still not welcome a Netanyahu comeback, which may also explain what appears to be an indirect endorsement of Olmert by the United States. +Only a strong Israeli government can make the painful decisions necessary for negotiations with the Palestinians to succeed. +As a result, the prospects for meaningful continuation of Israeli-Palestinian talks look even dimmer than they did before. +Indeed, the real loser of the 2006 Lebanon war was neither Israel nor Hezbollah, but, at least for the time being, the peace process. +Impotent America? +There are immediate reasons why this is so: Israeli Prime Minister Ehud Olmert's government is weak and unpopular, mainly due to the botched 2006 war against Hezbollah in Lebanon. +The Palestinian Authority under Mahmoud Abbas is even weaker, having lost control of Gaza to Hamas after a violent putsch last year. +On the Palestinian side, this is part of a deeper phenomenon: a longstanding failure to create the institutional structures necessary for nation building. +For example, in 1936-1939, a Palestinian uprising against British rule deteriorated into a bloody civil war, in which more Palestinians were killed by their brethren than by the British army or the Jewish self-defense forces. +Looking back at 60 years of American involvement in the region, one can discern two scenarios in which the United States can bring the local players to an agreement. +Absent these conditions, the US is ultimately powerless. +The first scenario is when a real war threatens to spill over into a wider conflict, destabilizing the region and Great Power relations. +At such times, resolute American steps can stop the fighting and impose a cease-fire, if not peace. +In 1973, at the end of the Yom Kippur War, Israel was poised to encircle the entire Egyptian Third Army in Sinai. +A few tough messages from President Richard Nixon stopped the Israelis in their tracks and enabled the Americans to start a lengthy process of de-escalation that led to a number of interim agreements. +Likewise, in 1982, during the invasion of Lebanon, Israeli troops were about to enter Muslim West Beirut after Syrian agents assassinated the pro-Israeli Lebanese President-elect Bashir Gemayel. +During the first Gulf War in 1991, when Iraq fired 39 Scud missiles at Israeli civilian targets and US forces failed to stop the Iraqi attacks, Israel was set to strike Iraqi targets, which would have split the US-Arab anti-Iraq coalition. +The US warned Israel not to get involved, and Israel was forced to comply. +In all these cases, American involvement was swift and focused on a clear aim, and compliance was verifiable within days, if not hours. +In such dramatic situations, US power is at its greatest. +The other scenario is when the two sides have already engaged in bilateral peace talks, paid the domestic political price, and reached agreement on most issues, though some matters remain unresolved and threaten to derail the process. +In such cases, America can step in and, by using both carrot and stick, make both sides go the extra mile. +After Anwar Sadat's visit to Jerusalem in 1977, Israel and Egypt negotiated for a year and reached agreement on most issues: peace, diplomatic relations, and full Israeli withdrawal from all occupied Egyptian territory in Sinai. +At this point, President Jimmy Carter -- who initially opposed the process -- invited both sides to Camp David to hammer out a peace treaty. +In 1993, in secret bilateral negotiations in Norway (unknown to the Americans), Israel and the PLO reached an agreement about mutual recognition and the creation of a provisional Palestinian Autonomous Authority. +Yet some issues remained unresolved. +President Bill Clinton stepped in, and prevailed upon the two sides to work out their remaining disagreements. +When either of these two scenarios is lacking, American initiatives are stillborn. +Absent local political will, and when confronted with a peace-making project that may take years to complete, the US is virtually powerless. +It is extremely successful as a fire brigade or as a midwife , but not as an initiator . +Building Palestine From the Bottom Up +The first obstacle -- indeed, the issue that stands front and center today -- is the ongoing Palestinian civil war, with Hamas controlling the Gaza Strip in defiance of Abu Mazen's Fatah-led Palestinian Authority. +The Palestinians' basic failure at nation-building makes any meaningful peace talks with Israel -- let alone an agreement --  almost impossible at the moment. +With Palestinians unable to agree among themselves on a minimal national consensus, how can peace be established between them and Israel? +Second, with Likud's Benjamin Netanyahu as prime minister, Israel now has a government which is far less likely to be willing -- or able -- to make major concessions and evacuate hundreds of thousands of Israeli settlers from the West Bank. +Third, and most significantly, the 1993 Israel-PLO agreement has until now failed to achieve its aim. +Attempts to revive the Oslo peace process -- the "Road Map" and the Annapolis process --  have similarly failed to achieve more than vacuous declarations and hollow photo opportunities. +The causes of these 15 years of failure should be considered, so that Mitchell's mission does not become another stillborn effort. +Both the Palestinians and Israel can easily and rightly be blamed for the failure of the Oslo process. +But there is a more fundamental cause at stake, and it should not be overlooked. +The Oslo process tried to build a Palestinian state from the top down: create a Palestinian national authority, hand over territory to it, give it increasing power, arm it and finance it, hold elections, and a Palestinian state would emerge. +Instead, the consequence was a corrupt, militarized Palestinian Authority, with competing security services proved incapable of providing security. +Nor could it conduct credible negotiations with Israel or deliver necessary services to ordinary Palestinians. +Two reasons for this failure stand out: the institutional weakness of Palestinian civil society, which lacks the infrastructure necessary for nation-building; and the impossibility of simultaneous nation-building and peace-making. +There is no precedent anywhere in the world that suggests that such a two-tier process can succeed. +A fundamental change of paradigm is needed: the effort should shift to building a Palestinian state from the bottom up, for which there are encouraging signs, even in the midst of the failure of the top-down process. +In the last two years, former British Prime Minister Tony Blair and US General Keith Dayton have succeeded in effective institution-building in three West Bank districts -- Jenin, Bethlehem, and Hebron -- turning them into the most peaceful areas in the West Bank, with a minimal Israeli military presence. +Local authorities were supplied with adequate funding and advice; independent chambers of commerce became the backbone of a local commercial middle class, which is interested in keeping the region peaceful, even absent an overall agreement; local police were trained (in Jordan), and now function effectively as police forces, not armed militias; and business relations with adjacent Israeli regions have been renewed. +This empowerment of an effective local leadership was done with much persistence -- and little fanfare. But these nuts-and-bolts projects created -- for the first time -- the building blocks necessary for effective Palestinian nation-building. +Admittedly, this process will take time and patience. +But, until now, it has been the only approach proven to succeed, while everything else has failed. +As Blair recently put it, such a bottom-up process may even go hand-in-hand with Netanyahu's goal of an "economic peace," though it would eventually have to go beyond it. +That such an approach would have to include a total halt to Israeli settlement activities goes without saying. +If carefully crafted, it may even be implicitly accepted, albeit without much enthusiasm, by the Israeli government. +The Oslo process has failed; an attempt to revive it -- say, by way of the Beirut Arab peace initiative -- will merely bring into the open all of the existing disagreements between the two sides, and will not overcome the Palestinian failure at nation-building. +After all the breakdowns in efforts to create a Palestinian state from the top down, only the old-fashioned way -- from the bottom up -- remains viable. +Let The Serbs Try Milosevic +A lot has been happening in Yugoslavia recently, much of it surprising. +After some procrastination and an initial failed attempt, Milosevic has been arrested, without bloodshed, though not without danger. +The peaceful vote in Montenegro last weekend may presage conflict and difficult decisions about independence, but chances are strong that the parties will settle these matters by talking rather than fighting. +These are great steps forward, and they show that despite brainwashing and the complicity of many Serbs in the crimes of the Milosevic regime, democracy and open society have a chance of taking root in what remains of Yugoslavia. +One key decision facing Serbia, and its new authorities, is whether Milosevic should be extradited to The Hague. +There seems to be almost universal agreement that he should, and international pressure is being applied on President Kostunica to comply. +But the decision may have life-and-death ramifications for Serbia's future. +Many who agree that Milosevic is a war criminal now think that we should listen to the voices coming from Belgrade and their cry that Milosevic should face trial before his own people. +Ultimate moral responsibility for what was done by Milosevic rests with Serbia's people. +They brought him to power, albeit not in a way that conforms precisely with democratic norms; they supported him, even when he led them into genocidal crimes and to defeat after defeat. +Finally, they brought him down, and the new democratic leadership in Belgrade has, at no little risk to its own position and standing, arrested him. +That arrest could well have ended in a bloodbath that might have destabilized a still insecure democratic government. +Yugoslavia's new leadership should now be allowed to deal with Milosevic in a way that promotes democracy within Yugoslavia. +His crimes should be judged by his own people -- not by an international tribunal. +In this way the trial will gain more legitimacy and credibility, especially among the many Serbs who still need to be educated in order to realize the true extent of Milosevic's crimes. +Most importantly, by dealing with Milosevic, the Serbs, many of whom supported his regime, will be forced to confront their own behavior and deal with their own consciences. +Only through this process will Serbia be able to rejoin the ranks of free and healthy European nations. +If the trial is held before distant judges, sitting in a far�away capital, applying a not very transparent and somehow abstract code of law, many Serbs will see this not as a trial of Milosevic, but as victors' justice meted out to the Serbian nation. +They will be wrong. Nonetheless, political trials (and war crime trials are always political trials) must not only punish, but also teach. +The lessons from any trial of Milosevic should be taught to Serbia's citizens by Serbian judges, within a normative system that most Serbs accept as legitimate. +The international hue and cry for Milosevic to be brought to The Hague, regardless of political consequences, is understandable. +Yet this pressure is unwise, and somewhat hypocritical. +After all, the peacekeeping forces in Bosnia can, should they decide to act, arrest Radovan Karadzic and General Ratko Mladic, the leaders of the Bosnian Serbs who have been indicted by the Hague Tribunal. +They have not done so, and show no signs of doing so. +Why this inaction? +Clearly, political reasons are at the root of this: the British, US and French governments are reluctant to risk the lives of their own soldiers in order to bring these arch�criminals to justice. +Indeed, Karadzic and Mladic have evaded arrest for years; indeed, since the Dayton peace accords were signed. +Shouldn't equal consideration for the political constraints faced by President Kostunica and the sensitivities of the Serbian people be given? +Is it really worth the risk of destabilizing Yugoslavia's infant democracy to carry out trials that Yugoslavia's government shows every sign of being able to carry out? +That there will now be a Truth and Reconciliation Commission in Belgrade suggests that the current Yugoslav leadership understands that it needs to heal the wounds inflicted on its own people by the murderous Milosevic regime. +Let the international community show the same compassion and understanding to the Serbian people it applies when it has to decide whether to risk its own soldiers in an attempt to apprehend Karadzic and Mladic. +Are the Dollar's Days Numbered? +A year ago, the dollar bestrode the world like a colossus. +Now it is humbled and the euro looks triumphant. +Is the dollar on the way out as the world's unchallenged reserve and trade currency? +Or is "euro triumphalism" premature? +That question preoccupies not only speculators tracking the dollar's decline, but ordinary businessmen who wonder what currency to use when invoicing imports or exports. +Indeed, the part that currencies play in world trade through their role in invoicing receives too little attention. +Currently, the US dollar remains dominant. +Most US exports and imports are denominated in dollars, and the dollar is extensively used in trade that does not involve America. +Since 1980, however, the dollar has lost ground. +Estimates from the European Commission indicate that the dollar's share in world trade fell from 56% in 1980 to 52% in 1995 (the latest year for which statistics are available). +The Deutsche Mark's share remained relatively unchanged between 1980 and 1995. +The yen lags behind, but had the highest relative growth, with its share of world trade more than doubling from 2% in 1980 to almost 5% in 1995. +Among the reasons for the dollar's longtime dominance as the premier international currency are lower transactions costs in foreign exchange markets, the historical role of the dollar in world trade since 1945, and the sheer size of America's economy. +But the role of size is more complex than it seems. +The second biggest economy in the world is Japan's, but the fraction of its trade denominated in yen remains low, even when compared to the smallest European countries. +One factor that explains this is the large share of US firms in markets where Americans sell their goods. +To understand the reasons behind all this, consider what factors are in play when a firm chooses the currency it uses to invoice for goods. +Here an exporter faces two types of risk: price risk and competitiveness risk. +Consider a Japanese firm seeking to make the highest yen profits on goods sold in Switzerland. +If the Japanese firm sets the price in Swiss francs, it is exposed to price risk as the yen price will fluctuate with the yen-Swiss franc exchange rate. +This tends to make Japanese exporters prefer to price in yen. +But firms also care about what their competitors do. +If the Japanese firm sells its goods to a particular Swiss market dominated by Swiss firms (which invoice in Swiss francs), it would prefer to price in Swiss francs too. +If it priced in yen, it would risk losing its market share if the yen appreciated. +If Japanese firms are dominant in a particular Swiss market, they prefer to price in yen: a Japanese firm then would not have to worry about losing market share when the yen appreciated, because its competitors would face the same pressures. +These arguments explain the big role played by the dollar in trade. +The fact that the US is large makes it more likely that US firms are dominant in a particular market, either as an exporter or as import-competitors when foreign goods are sold in America. +This implies that US firms price in dollars, whether they sell at home or abroad, and foreign firms for competitive reasons will also price in dollars when they export to the US. +Because Japan has the second largest economy in the world, the yen should be a more important currency. +Competitiveness is a key reason for why it is not. +First, the US is Japan's largest trading partner: more than half of Japanese trade with industrialized countries is with the US. +Over 80% of Japanese exports to the US are priced in dollars, in markets where US firms tend to dominate. +Second, even when selling to countries other than the US, Japanese exporters often face stiff American competition. +Take Japanese exports to South East Asia, which are almost 50% denominated in dollars due to competition from US exporters. +These factors are unlikely to change soon and lead us to predict that the yen will keep a low profile in world trade. +They also explain why, over time, the euro should gain weight in international trade. +Euro-zone countries can be considered a single country when dealing with the currency denomination of trade. +This `country' has more market power than the individual countries that form the European Monetary Union. +So the euro should play a larger role in international trade in the future than the sum of the currencies it replaced. +Yet these changes will only occur gradually. +So the "euro triumphalism" that has greeted the dollar's decline is, indeed, premature. +Despite its current distress, the dollar should retain its predominance for some time to come. +European Discrimination on Trial +Although recent reports published in 2006 by the European Union's Monitoring Center on Racism and Xenophobia and the Council of Europe's Human Rights Commissioner note some improvements, they indicate Roma living conditions have stagnated, if not deteriorated. +Roma are still victims of discrimination in access to housing, employment, healthcare, and education, despite significant local efforts at the Council of Europe's instigation and with its support. +Discrimination in educational access is particularly important, given its profound effect on its victims' life prospects. +In the most extreme cases, the education system itself is segregated: isolated schools in remote camps; special classes for Roma children in mainstream schools; and an over-representation of Roma children in classes for children with learning difficulties. +The question was whether the children were victims of discrimination owing to their national minority status. +The Czech government admitted that some of the special schools' student bodies comprised 80% to 90% Roma children. +However, if there was discrimination, it was not direct, because under Czech law, such a move could be decided only by a school headmaster based on the results of an intelligence test at an educational psychology counseling centre, and subject to the approval of the child's parents or legal guardian. +A difference in treatment is not discriminatory in itself. +According to the case law of national supreme courts and the ECHR, discrimination exists only when people in a similar situation are treated differently. +Yet national and international case law recognizes that a non-discriminatory measure in theory can be discriminatory in practice. +So, in the current case, the alleged discrimination does not stem from the law itself, but from its effects, with the plaintiffs relying mainly on statistics showing the over-representation of Roma in special schools. +Many other reports on the situation of Roma in the Czech Republic, including by the Council of Europe, are available. +But, as the Court rightly noted, it should rule only on the cases to which it is referred, and should not make known its opinion on the Czech education system's legitimacy, as choices concerning educational opportunities fall under the jurisdiction of states and therefore can vary accordingly. +According to the Court, the law's legitimate purpose is to adapt teaching to the difficulties of a specific category of pupils, and psychological tests seem to be objective enough not to be suspected of racial bias. +As well-founded as the Court's reasoning may be, a feeling of unease persists. +The statistics showing the enormous proportion of Roma children in those schools are hard to ignore, and the suspicion of discrimination is difficult to avoid. +While laws have changed, mentalities do not always follow at the same pace, and we intuitively know that it is easy to get psychology to mean a lot of things. +Indeed, before announcing its decision, the Court felt it necessary to state that while it did not conclude that the Convention had been violated, statistics still revealed "worrying figures, and the situation in general in the Czech Republic regarding Roma children's education needs to be improved." +The Court's president, Jean-Paul Costa, expressed a similar view, without questioning the legitimacy of the decision, although Judge Cabral Barreto wrote a dissenting opinion. +Moreover, it is significant that the Court agreed, at the request of the parties, to refer the case on appeal to its Grand Chamber. +According to Costa, rejecting the ruling in February 2006 would contradict previous case law. +Will the Court, then, decide on the workings of the Czech education system itself? +Or will it follow Judge Barreto, who calls for recognition of an obligation to adopt affirmative action policies aimed at benefiting Romanies? +Whatever formula is adopted, it is certain that Roma children should be afforded the same opportunities as other children. +It is this imperative that underlies the importance of the coming decision, for it provides an occasion for the Court to reassert the fundamental principle of non-discrimination that defines our democratic societies. +African Muslims In The Islamic World +The Nigerian protests against the cartoons (so far the most violent in Africa) raise the question: what is the role and position of African Muslims (or more accurately, sub-Saharan African Muslims) in the "Islamic World"? +Muslims in sub-Saharan Africa do not share many characteristics with Muslims in other parts of the world, especially those of the Arab world. +Sub-Saharan African Muslims are less assertive, and they face considerably more difficulties in their attempts to articulate their rights and establish their presence in their respective states and regions. +Part of the difficulty arises from the perpetual African dilemma of identity. +Africa has been described as a continent having a triple heritage, and the African Muslim, too, has a split personality. +He must decide whether he is a Muslim first, then a member of his tribe, say, Hausa, and then of his nation, say, Nigeria. +Even though Muslim practice is strong in Africa, there is widespread incorporation of traditional African rituals in ceremonies like weddings and funerals. +For example, among the Luhya in Western Kenya, it is not uncommon for Muslims to slaughter animals during funerals, even though, strictly speaking, there is no such provision in Islam. +Muslims in many sub-Saharan African states are also minorities. +They do not form a formidable presence, as in Nigeria, where some Muslim-majority states in the north have even implemented Sharia Law, making them more or less Islamic states. +Nevertheless, the Federal Republic of Nigeria is a secular state, as are almost all sub-Saharan African states. +The colonial legacy also helps account for the relatively docile nature of Muslims in sub-Saharan Africa. +The colonial powers' arbitrary demarcation of borders lumped together in one state diverse ethnic groups which may have been historical antagonists. +Colonial political economy also concentrated "development" in resource-rich areas, while neglecting resource-poor regions and their populations, which in many cases were Muslim. +Moreover, Muslims in these mostly patron-client states have been forced to identify more with atomistic/parochial ethnic nationalism in order to enjoy the "fruits of independence" and thus acquire whatever political representation they have. +This has led to a related problem in countries bordering the Indian Ocean: disunity between coastal, more Arabized Muslims and the non-Arabized Muslims of the interior. +It is no exaggeration to argue that the more Arabized African Muslims along the Kenyan and Tanzanian coasts (including the island of Zanzibar) consider themselves "more Muslim" than the less Arabized Muslims inland. +The IMF as Global Financial Anchor +The IMF can play an important role in this regard, owing to its truly global perspective -- one that encompasses both advanced economies and emerging and developing economies, which are increasingly integrating into the global financial system. +Moreover, the IMF does not focus on financial markets per se , but has unique expertise on the linkages between the real and financial economy. +Finally, the IMF's perspective is universal, looking across sectors and markets. +So far, the Fund has not fully exploited its unique position, because it has often been passive in reaching out, giving clear messages, and making recommendations to its members. +But the current financial market turmoil has shown that there are regulatory and supervisory gaps and poorly understood international linkages that call for a global response. +We believe that the IMF needs to move decisively on financial stability issues and be more proactive to help prevent and mitigate future crises. +The IMF should work closely with the Financial Stability Forum, the Bank for International Settlements and other relevant international bodies. +To strengthen the Fund's financial stability role, we propose action in three related areas. +First, the IMF should promote financial stability through multilateral surveillance. +It should be positioned at the center of international financial markets and provide an analytical platform, not only for central banks and finance ministries, but also for regulators, standard setters, and market participants. +In particular, the Fund should enhance its understanding of the links between supervisory frameworks and macroeconomic conditions, including balance-of-payments and exchange-rate developments, by leveraging the wealth of cross-country information and expertise that it acquires through missions to its 185 members. +This would enable it to identify macroeconomic threats to stability and encourage best practices for supervisors and regulators. +Building on its research, the IMF could contribute more to the debate on the macroeconomic and financial implications of private equity, hedge funds, and sovereign wealth funds, and develop practical recommendations to enhance their contribution to international financial stability. +Second, the IMF should promote financial stability through bilateral surveillance. +It needs to rethink how to address financial stability in its day-to-day work with members. Financial sector analysis should become fully integrated into the IMF's surveillance activities. +The IMF should also be more proactive and speak with greater candor in systemically important countries, where shortcomings in financial supervision and crisis management have appeared. +It should assist emerging economies in shaping sound domestic financial markets. +These steps would require the IMF mission teams to become more diverse, bringing financial sector expertise in addition to the traditional macro and fiscal skills. +The Fund needs to hire more financial sector experts, relying less on academic professionals. +Third, the Fund should assist members who have well-defined programs for liberalizing and integrating their economy into the global financial system. +It should consider developing appropriate liquidity instruments to give confidence to emerging market economies that may be affected by a crisis beyond their control, rather than forcing them to build up ever-larger reserves or resort to regional arrangements for self-insurance. +Action in these three areas would help to create a multilateral institution with the authority and expertise to advise countries on supervisory and regulatory issues of systemic importance. +The current turmoil highlights the international financial system's need for such an institution. +The members that we represent -- advanced and emerging countries in Asia and Europe -- want to play a role in re-establishing a strengthened IMF at the heart of the international monetary system.  +For too long, all financial innovations were thought to promote economic development and help spread risk. +long it was hoped that market forces would solve all problems. +We need early-warning mechanisms with concrete follow-up. +This does not necessarily imply that the right answer is more regulation; the important thing is that measures are consistent. +Improved supervision is important, but countries should be prepared to coordinate their economic and exchange rate policies. +Owing to massive dollar purchases, emerging economies have for too long supported the credit culture in the United States that ultimately led to this crisis. +A stronger role for the IMF is especially important because all these issues are interlinked. +Indeed, the IMF, with its global membership and its accumulated international expertise, is best positioned to take the leading role in a multilateral approach to financial stability. +This role should go beyond the Fund's traditional tasks of adviser and lender of last resort. +Its advisory role renders the IMF vulnerable to criticism by developing countries that the industrial world does not heed its advice. +As IMF teams now work across the globe to assist governments in devising programs that can restore confidence, it is clear that the role of lender of last resort is not obsolete. +But this has a bitter undertone: the IMF must now clean up the mess in emerging countries caused by a financial crisis whose origin lay elsewhere. +On a global level, the IMF can assist in designing an overarching regulatory system for financial markets by providing a platform for key players. +The Fund can lend analytical support, identify regulatory gaps, and indicate where regulation needs to be enhanced. +It should monitor progress, but refrain from acting as a regulator itself. +That mandate remains with current supervisors and international groupings, such as the Financial Stability Forum. +But the IMF would become the "supervisors' supervisor". +On a national level, the IMF can assess regulatory systems and give recommendations. +Many IMF members have sought this on a voluntary basis. +Until now, however, the US has refrained from allowing the IMF to get involved. +Reviews under the IMF's Financial Sector Assessment Program should become mandatory, and their follow-up should be integrated into the Fund's regular surveillance activities. +Better policy coordination can profit from improved analytical work on the linkages between financial developments and the real economy. +Based on its independent analysis, the IMF should be authorized to bring policymakers of key member states to the table. +Multilateral consultations can help prevent countries from taking economic measures that negatively affect the financial and economic stability of other countries. +Global imbalances must be addressed more forcefully. +Finally, the IMF should be better equipped to deal with financial-sector problems. +Traditional IMF programs that focus on budgetary or monetary policy do not suffice in this financial crisis. +The Fund should establish credit lines for countries that conduct sound macro-economic policies. +In those cases, traditional IMF conditionality is not needed. +The New IMF +The IMF is well-positioned to help its members overcome the financing gaps resulting from the crisis. +In the run-up to the G20 summit access to the Fund's credit facilities was increased and policy conditions were streamlined. +In a watershed with former practice, a new non-conditional credit line was introduced for well-performing countries. +Mexico and Poland will be its first users and more countries will line up. +These more flexible lending policies reflect a new image of the IMF. +The negative stigma attached to IMF financing is a thing of the past. +Its financing role in this crisis secured, the IMF now needs to strengthen its position as guardian of an open international financial system. +The IMF was created to prevent crises like the current one and in this it has failed. +Admittedly, there were warnings, but policy makers, particularly in advanced countries, did not follow suit. +The ‘new' IMF should be an institution that communicates better with its members, balances the interests of its advanced, emerging and developing members in an evenhanded manner, and aligns its policies better to the needs of the moment. +Now that the IMF has been given a second lifetime, it needs to regain its central position in the international financial system. +For this, it needs to focus on three issues: improved surveillance of financial stability, strengthened international coordination, and an updated decision-making process. +The new IMF needs to become more vocal on global financial stability issues. +The IMF should see to it that there are no gaps in the surveillance of financial institutions. +It can help shape a more robust global supervisory system which needs to be built in order to preserve the benefits of global financial markets. +And it should help develop a vision on what the future financial landscape should look like. +To this end IMF surveillance should include regular updates on supervisory regimes in systemically important countries. +Early warnings, commissioned by the G20, should be specific and the IMF should monitor whether policymakers give follow-up to the Fund's advice. +The new IMF needs to take a fresh look at international policy coordination. +The demand for a different monetary order, as advocated by China, sets the stage for a renewed effort to avoid the international imbalances which were at the root of this crisis. +First, the US saving deficit will need to be addressed in a sustainable manner. +Second, China will have to make its currency convertible. +Third, the position of the euro will strengthen over time as more countries will join the euro zone. +With more key currencies in place, the perspective of a truly multipolar currency system comes in sight, with an increased role for the SDR. +This will lessen the need felt by emerging economies for self-insurance against financial instability, by building up large reserves. +Finally, the new IMF needs governance structures that better reflect today's new global realities. +The perception that advanced countries are running business in the Fund, but do not adhere to Fund advice, has undermined the IMF's authority. +The G20 summit marked the return of the United States to multilateralism. +This acceptance of collective responsibility should come with abandoning US veto power in the IMF by lowering required voting majorities, as well as abandoning Europe's prerogative of appointing the Managing Director. +One of the strengths of the IMF's present governance structure, the constituency system, should be duplicated at the G20 as well, so as to ensure inclusiveness. +The rapid growth of China, India, and other emerging countries should come with increased influence, to be implemented through the planned quota increase in 2011. +Advanced countries, including European countries, will see a relative decrease in voting power. +An increased say for emerging economies will imply taking more international responsibility as well, also in financial terms. +Now European countries finance 42% of IMF lending and 62% of concessional World Bank lending. +This task will have to be shared by emerging countries with large reserves. +These reserves are put to better use by assisting the IMF in maintaining an open and stable financial system and prevent crises like these from recurring +Why Wait for the Euro? +Although the EU's eastward enlargement has not yet happened, the debate is already shifting to ask what will follow: when should the new, predominantly postcommunist, members adopt the euro? +Assuming that they comply with the Maastricht Treaty's provisions concerning the EMU - and are not unfairly held to more stringent criteria - the core issue is whether new members would benefit more by waiting or whether they should seek early entry. +At the outset, it must be stressed that, in seeking earlier entry into the EMU a country assumes a more ambitious fiscal and structural program than would be needed if EMU membership is delayed. +Early entry, otherwise, would be an empty gesture. +I believe that early adoption of the euro is not only possible, but preferable to delay. +By early adoption I mean the shortest permissible period of time - two years - following a new member subordinating its monetary policy to the fiscal and monetary constraints of the exchange rate mechanism (ERM II). +Assuming entry into both the EU and ERM II in 2004, new members should aim to enter the eurozone around 2006. +Is this realistic? +Well, most candidate countries have already achieved a high degree of structural convergence with the EU. +Exports to the Union have soared since 1991, when the collapse of the Soviet-era COMECON trading system forced a radical reorientation of trade - helped by massive foreign investment from the EU - towards Western markets. +Most accession candidates now send more exports to the EU than Greece, Portugal, and Spain did when they entered the EU and EMU. +Progress on disinflation is similarly impressive. +Annual inflation in most candidate countries has fallen to 4-5% - not much higher than in many EU countries, and lower than in The Netherlands last year. +As with structural convergence, EU candidates already outperform Spain, Portugal, and Greece at a comparable time before their EMU debut. +Nor is there much risk of large, future corrective price swings because all but a few prices are completely liberalized. +Theoretical studies suggest that inflation in the accession countries will remain stubbornly higher than the Maastricht Treaty allows. +The culprit in this pessimistic view is the so-called "Balassa-Samuelson" effect: rapid productivity growth in the accession candidates' tradable sectors - export manufacturing, for example - is pushing up real wages throughout their economies, including in non-tradable sectors like services. +This overall rise in real wages in the face of lower productivity growth for the service sector boosts relative prices and keeps inflation above the eurozone average. +The Balassa-Samuelson effect is still evident in Greece, Spain and Portugal. +But as empirical research prepared by the CEC5 National Banks estimates, its contribution to total price growth in the candidate countries is 1-2%. +With the Balassa-Samuelson effect so subdued and limited scope for future corrective inflation, the EMU criterion regarding price stability - of annual inflation within 1.5% of the average rate for the three best-performing economies in the EU - is within reach. +But is early admission to EMU preferable to postponing membership? +From the standpoint of current member states, would admitting Hungary, Latvia, Poland, or Slovakia, sooner rather than later, drag down the euro as many fear? +Fears that extending EMU to new states "too soon" would undermine the euro's external exchange rate are irrational. +If all candidate countries join the EU at around the same time, they will together account for a mere 6% of its total GDP. +So any negative impact on the euro from rapid accession to EMU would at worst amount to little more than a rounding error. +Delaying entry into EMU could make sense if a longer wait produced more information. +But a wait of greater length might produce nothing but added noise. +Equally, the transition period is already turbulent, with convergence-driven capital flows driving up exchange rates and complicating monetary policy in several candidate countries, including Poland, the Czech Republic, and Hungary. +Indeed, capital-flow volatility could make short work of the flexible exchange rate on offer under ERM II - a 15% fluctuation band either side of a central parity. +Some argue that ERM II membership should be viewed as a longer-term proposition - possibly lasting until 2010 - for the benefit of candidates themselves. +The benefit is simple: ERM II permits some exchange rate flexibility, as opposed to the fixed rates implied by adopting the euro. +This would help keep the candidates' economic output high and thus sustain real convergence with average EU income levels. +This is an exceptionally weak argument, and a politically suspect one, too. +As European Central Bank data shows, average per capita GDP in the accession candidates is 44% of the eurozone level. +The size of the income gap combines with the small growth differentials to imply that the process of real convergence will extend far beyond even the most cautious dates for EU and EMU entry, probably lasting several decades. +More important, long-lasting economic growth does not depend on the type of exchange rate - whether flexible or fixed (EMU) - while early accession will speed up crucial reforms. +A few years of limited exchange rate flexibility is a poor substitute for rapid completion of structural reforms. +In almost all candidates, further disinflation and long-term economic growth require fiscal consolidation, more flexible labor markets, and completion of privatization. +Delaying EMU entry risks weakening the incentive to complete these politically costly but necessary reforms. +Any delay in completing reforms will ultimately slow the process of real convergence that EU officials rightly hold dear. +Early adoption, by contrast, would be more conducive to these reforms, and thus to real convergence. +Success here would allow candidate countries to start reaping the benefits of greater price transparency, reduced transaction costs, and a solid macroeconomic framework. +This strategy, not one of deferred entry, promises the most for both the EU's current and its future members. +Liberty's Revolutionary Muse +For decades, Friedman remained stranded in the intellectual wilderness, spurning the postwar Keynesian consensus that governments should use fiscal policy to manage aggregate demand -- a view that sustained statist economic policies through the 1970's. +Indeed, in the context of his age, Friedman was a true intellectual revolutionary, combining rigorous academic research and gracefully written popular books and journalism to argue for free-market policies -- and to affirm the link, defended by writers from Adam Smith to Friedrich von Hayek, between economic freedom and political liberty. +In economics, Friedman revived and developed the monetarist theory that the quantity of money in circulation is the main determinant of how economies perform. +In his masterpiece A Monetary History of the United States, 1867-1960 (written with Anna Schwartz), he famously attributed recessions, including the Great Depression of the 1930's, to a decline in the money supply. +Likewise, he argued that it was an oversupply of money that caused inflation. +In the 1960's, Friedman showed that Keynesian demand management through government spending constantly increased the money supply, accelerating wage and price growth. +Together with Edmund Phelps -- this year's Nobel Prize laureate -- he proved that there is no stable tradeoff between unemployment and inflation. +Any attempt to use expansionary government policies to drive unemployment below a certain level, they demonstrated, would fuel inflationary expectations and undermine both economic growth and employment. +That analysis both anticipated and explained the combination of rising inflation and rising unemployment of the 1970's that came to be known as "stagflation." +Friedman was the catalyst for a profound shift in how governments conduct economic policy. +Rather than fiscal stimulation and control, the main tool of economic management nowadays is monetary policies conducted by independent central banks. +Keynesian demand management was thus displaced by a new understanding -- which we owe largely to Friedman -- that pursuing fiscal discipline and price stability is the best guarantee of macroeconomic sustainability. +Equally important were Friedman's contributions to influencing public opinion through works that addressed the role of the state in society. +Alongside Hayek, his colleague at the University of Chicago, Friedman launched a more general intellectual assault on Keynesianism, arguing that any government permitted to regulate the economy in the name of equality posed a threat to individual liberty. +In his Newsweek columns published between 1966 and 1983, and in his books Capitalism and Freedom , Free to Choose , and The Tyranny of the Status Quo (written with his wife, Rose), Friedman offered a vision of liberty that was both appealing and achievable. +Indeed, Free to Choose -- later the basis of a popular television series that he hosted -- was published illegally in Poland in the 1980's, helping to inspire me, and many others, to dream of a future of freedom during the darkest years of communist rule. +With remarkable clarity, his popular writings advanced a compelling political philosophy, together with concrete policy proposals. +For example, he pioneered the idea of school vouchers, arguing that private competition would ensure better educational performance than government systems. +Friedman's views made him a guiding light for economic conservatives worldwide. +His influence on Margaret Thatcher's government helped transform Britain from a post-industrial basket case dominated by class struggle into Europe's dominant economic power. +When Vietnam launched free-market reforms in the 1980's, senior government officials pored over his writings. +He also initiated the now common practice of measuring and comparing political and economic freedom across countries, helping to shape opinion in countries that are viewed as limiting freedom. +But Friedman's consistent anti-statism also led him to embrace positions that ran afoul of many conservatives' political sensibilities, underscoring the intellectual honesty that was the hallmark of his career. +For example, his opposition to governments' authority to prohibit or regulate human behavior extended to licensing requirements for doctors and car drivers, as well as to anti-drug laws, which he believed operated as a subsidy to organized crime. +Likewise, he expended considerable effort agitating against America's military draft. +Although he did not win all his intellectual battles, rarely can it be said with as much certainty that a man was great, and that the work that he has left behind will retain enduring influence. +I live in a Poland that is now free, and I consider Milton Friedman to be one of the main intellectual architects of our liberty. +How Can the New Members Catch Up? +Of the ten new EU member states, eight have undergone a transformation whose speed and scope has been unprecedented. +Wherever one looks in the postcommunist accession countries ­­- at money, markets, ownership structures, banking sectors, foreign trade, health care, environmental protection, and education - one sees institutions that have been reconstructed from the ground up. +In many of the transition countries, inflation was brought down from majestic heights - 251% in Poland in 1989 - and all now have fully convertible currencies. +Private enterprise dominates production and employment, whereas it accounted for only 23.1% of GDP in Poland in 1989 and just 4% in the Czech Republic and Slovakia. +Similarly, after the collapse of the Council for Mutual Economic Assistance (COMECON) in 1991, the transition countries quickly redirected their foreign trade to the West. +Educational opportunities have multiplied, air and water pollution have plummeted, and life expectancy has increased almost to West European levels across the region. +Since the early 1990's, the prospect of eventual admission to the EU has helped spur these institutional changes. +Membership itself will certainly help. +Increased policy credibility will boost inflows of foreign direct investment (FDI), while EU structural funds will support further institution building, infrastructure investment, and environmental protection. +There is little empirical doubt about the positive impact of FDI inflows. +FDI promotes technology transfer and contributes relatively more to economic growth than domestic investment, because it increases total investment in the economy more than one for one, owing to complementarities with domestic firms. +EU structural assistance has increased annual GDP growth, on average, by 0.4-0.9% in Greece, Portugal and Ireland, and by 0.3 to 0.5% in Spain, thereby helping poorer countries catch up with richer member states. +The benefits of the single market are evident, not least by creating a much more attractive location for foreign investors. +Surveys indicate that the internal market has helped more than 60% of companies that export to more than five EU countries boost their cross-border sales, and that 80% of consumers believe that the range of goods has increased, while 67% say that their quality has improved. +Cross-border trade in goods has grown by around a third since the creation of the Internal Market in 1992 due to two principles: mutual recognition, which allows companies to apply their own national rules, and EU directives that harmonize national rules. +Pre-tax prices of new cars can differ up to 70% between member states due in large part to regulations that suppress competition. +Services are even more susceptible than goods to internal market barriers. +For example, a new directive requires non-household customers to be able to choose their electricity supplier by July 2004 and their gas supplier by July 2007. +But the directive ignores household customers, who in 2001 were able to choose their electricity supplier in only five EU States and their gas supplier in only three. +As for labor mobility, practice has yet to catch up with theory. +Integration of EU financial markets - launched in 1999 with the adoption of the Financial Services Action Plan (FSAP) - also needs to accelerate. +According to the European Commission, creating a single European capital market would reduce the cost of equity capital for EU businesses by 0.5% and lower the cost of corporate debt financing by 0.4%. +It would also boost GDP in the EU-15 over ten years by about 1.1% and raise employment by 0.5%. +But, by 2002, only 31 of the FSAP's 42 provisions had been implemented. +Target early EMU entry. Entry into the euro as soon as possible is the best strategy for the accession countries, because it will mobilize them to complete structural reforms in order to meet the Maastricht criteria for inflation, interest rates, fiscal deficits, and public debt. +This would have obvious benefits for long-term economic growth, as would elimination of exchange-rate risks, hedging costs, and transaction costs in foreign trade. +The accession countries are already highly integrated with the EU economy, with pronounced cyclical convergence between the accession countries and the EMU countries. +Continuing EU integration is likely to align the business cycles of these countries in a manner similar to the synchronization of supply and demand shocks in the EU in the 1990's. +Thus, costs associated with giving up an independent monetary policy and a flexible exchange rate would not be significant. +In each of these areas, the Union's new members still face a difficult path to full integration. +In many of them, so does the EU. +Lessons from the Kaczyński's Poland +Many governments waste good economic times by postponing the reforms needed to build a prosperous future. +The PiS-led government, elected in 2005, inherited a fast-growing economy, but did nothing to strengthen that legacy. +Instead, privatization was blocked, while fiscal reforms and deregulation remained paper proposals. +Indeed, the Kaczyński government embarked on a program of anti-reform. +The separation of powers (an independent judiciary and central bank) was undermined in favor of a "strong" state. +The PiS captured the public media, the general prosecutor's office was politicized, and, with the use of the media, was turned into a tool of party propaganda aimed at showing that Poland was ruled by malicious hidden forces, known as the układ , which cheated Poles and kept them poor. +Anyone who disagreed with this diagnosis or criticized the PiS's methods, particularly those used by its leader, Jarosław Kaczyński, was promptly classified as belonging to the układ . No one was spared. +Indeed, Lech Wałęsa and Władysław Bartoszewski, the Polish Mandela, were ruthlessly attacked. +Contrary to popular cliché, PiS's victory in 2005 did not result from "reform fatigue," since there were not many reforms implemented in 2000-2005 (except for an ambitious but partially blocked attempt at fiscal consolidation). +This explanation seems dubious elsewhere, too. +In Slovakia, the reformist leader Mikuláš Dzurinda won the 1998 elections after having implemented a tough stabilization program, and he could have continued to govern after the 2006 elections if not for disagreements in his coalition. +In the Czech Republic, a reformist government was elected in 2006, and in Hungary, political divisions rather than reform fatigue dominates electoral campaigns. +Of course, it is not easy for reformers to win elections. +On the contrary, reforms usually are undertaken only when the signs of an impending crisis are so strong that it is increasingly difficult to ignore them, or after the crisis has already "educated" voters. +(However, if the crisis follows reforms, populist politicians may win by blaming the reforms, instead of their incomplete nature, as in Argentina.) +Reformers can win elections if they are better at public communication than the populists. +Bad policies are, more often than not, easier to sell than good ones. +In Poland in 2005, the issue was mainly corruption. +The PiS jumped on the anticorruption bandwagon and strengthened its appeal by linking the fight against corruption to the vision of hidden forces supposedly perverting Polish society and democracy. +If not for that, the results of the 2005 elections would most likely have been quite different. +To criticize anticorruption campaigns is risky, because words can be twisted to imply indifference. +Therefore, let me first present my anticorruption credentials: as Deputy Prime Minister in 1999 I was the first Polish politician to ask the World Bank to prepare a report on corruption in Poland and ways to eradicate it. +In my public life, I emphasized eliminating discretionary regulations -- the main source of both inefficiency and corruption. +But we should not be blind to what can happen when political demagogues hijack the anticorruption card. +Interestingly, all the available measures of actual corruption were already declining before the Kaczyński twins were elected. +For example, the index of the frequency of paying bribes, calculated by the World Bank and EBRD, was 2.7 in 1999 and 2.03 in 2005 (the value of 1 is the minimum). +The corruption tax (the percentage of sales paid in bribes) declined from 1.22% in 2002 to 0.7% in 2005. +Poland now has a huge gap between the levels of perceived and actual corruption. +On perception, it fares much worse than Slovakia, the Czech Republic, Hungary, and Greece, while it fares better -- or at least not worse -- on indicators of actual corruption. +For example, the percentage of respondents admitting to paying bribes in 2006 was 5% in Poland and 17% in the Czech Republic and Greece. +The index of the frequency of paying bribes in 2005 was 2.03 in Poland, 2.22 in Slovakia, 2.09 in the Czech Republic, and 2.37 in Greece. +The corruption tax in 2005 was 0.7% in Poland, 0.93% in Slovakia, and 0.63% in Hungary. +Of course, Poles should not settle for today's levels of corruption. +Instead, the battle with corruption should aim at removing its root causes: the scope of the discretionary public sector and the suppression of market forces. +This is the only path that promises both less corruption and more economic growth. +Combating corruption through increased punitive action, while leaving intact a bloated and discretionary public sector, will only paralyze public officials, delay important decisions, and play into the hands of cynical demagogues and political fanatics. +That nuclear fusion is a source of energy has been known since the invention of the hydrogen bomb. +But its control is still a fundamental challenge for research institutes, not some minor technical difficulty that can be easily overcome. +Confining a little sun inside a box is an extremely difficult task for three main reasons. +First, the nuclear fuel is not seawater, but a mixture of the two heavy isotopes of hydrogen, deuterium and tritium, a radioactive element that has been produced in small quantities for hydrogen bombs. +Any development of fusion reactors would require producing tritium with industrial methods that have yet to be invented. +Second, the deuterium-tritium fusion reaction starts at around 100 million degrees. +To achieve this requires using a magnet to accelerate a plasma that is a big flame of deuterium and tritium nuclei. +This must be done in a ultra-high vacuum in a large chamber. +ITER is not designed to produce electricity, but to study the stability of the flame in the magnet. +Since the fusion reactions produce alpha particles, which pollute the plasma, one has to insert a "divertor" inside the flame at 100 million degrees in order to clean it. +Third, fusion also emits neutrons that will produce helium gas bubbles inside the wall material, which tends to explode. +The supporters of ITER explain that if the walls are porous, the bubbles can escape. +But nothing can be both leak-proof and porous, and ITER is not designed to study this contradiction. +In the future, a "blanket" should be inserted between the plasma and the walls, with two objectives: to protect the outer walls and to produce tritium from nuclear reactions within a circulating fluid containing lithium. +This might work, but the first wall of the blanket will need to be not only leak-proof and porous, but also sufficiently permeable to neutrons, which have to hit the lithium atoms beyond it. +The problem of materials is an entire research field in itself. +In order to study it, it has been decided to build the International Fusion Materials Irradiation Facility (IFMIF) in Japan. +Some scientists have argued that the neutron irradiation in IFMIF won't be the same as in fusion reactors, but it should be noted that its cost, at one billion euros, will be one-tenth that of ITER. +So why can't we wait for IFMIF's results before building ITER? +It all depends on one's budget. +If ITER could really solve the planet's energy problem, €10 billion would be a negligible investment -- less than the net profit of the oil company TOTAL (€13 billion in 2006) and equivalent to ten days of waging the war in Iraq. +But if fusion is ever to work in industrial power stations, it will take many decades. +Even if ITER is successful, and if one solves the tritium and material problems, everything would need to be tested in real size, and only then could a first prototype of an industrial reactor be built. +A drastic reduction of CO2 emissions is an urgent priority, but fusion is unlikely to produce sufficient energy to achieve that goal before the twenty-second century. +In fact, ITER is a big instrument for fundamental research, so its €500 million Euros annual cost needs to be compared with similar scientific initiatives, such as the European Organization for Nuclear Research (CERN), which costs one billion Swiss francs per year. +In my opinion, searching for the fundamental structure of particles is far more important than studying the stability of a plasma. +In France, the contribution to ITER is more than all the available funding for research projects in all our physics laboratories. +So the danger is that ITER will squeeze out funding for other vital research. +We already have the bad example of the International Space Station, a waste of $100 billion that has produced no scientific results. +ITER will not solve our energy problem. +Although it has some scientific interest in plasma physics, the participating countries should clearly state that funding it won't affect the rest of their research efforts. +At the same time, the international community should support research on energy saving and storage, and accelerate the development of fourth-generation nuclear reactors, which will use fission and be both clean and durable. +Europe's Unity in European Values +Alongside the debate about the European Union constitution, a debate about European values has also developed. +This debate is important not only for implanting meaning in the constitution, but will also determine the vitality and energy of the EU itself. +The EU, being the product of several great religious and philosophical traditions, is a community of values. +The ideas of the Greeks and Romans, Christianity, Judaism, humanism, and the Enlightenment have made us who we are. +Dialogue with Islamic and Arabic cultures also helped form our identity. +The pattern of our values has been woven over hundreds of years. +Europe is the continent of Michelangelo and Montesquieu, but also of the guillotine and the gas chamber. +Indeed, the bitter experience WWII taught Europeans how fundamental is the importance of shared values. +In an impoverished, war-ravaged Europe, people yearned for peace, freedom, stability, and a new chance to prosper. +The architects of European integration - Monnet, Schuman, Adenauer, De Gasperi, and others - understood that these ideals could be achieved only by combining and interweaving the practical interests of Europe's countries. +They built their fragile house of peace on a foundation of coal and steel. +The founders passed the torch on to the generation of Jacques Delors, Helmut Kohl, François Mitterrand, Václav Havel, Valéry Giscard d'Estaing, and others. They broadened and deepened European cooperation. +Their leadership made it possible for Europe to make great strides towards its post-war ideals - peace, stability, and prosperity. +We now stand at the threshold of a new phase of European cooperation. +In late October, the EU's Constitutional Treaty will be signed. +A new generation of politicians is ready to carry the torch onwards. +But is the torch still burning bright? +In the early 1950s, Jean Monnet wrote: "We are not forming a coalition of states. We are uniting people." +Apparently not. +As the Union races ahead, it seems that it has lost Europe's citizens along the way. +Many are turning their backs on the whole project. +They have trouble seeing what is common to Europe. +They do not feel part of the great whole. +Even in the new member states, enthusiasm for the European family of democracies is cooling. +We have achieved a united Europe without uniting Europeans. +Today's post-war generations, lacking direct memory of WWII, view Europe's great achievements - liberty, peace, and prosperity - as a given. +The idea of Europe as a heritage and a mission does not mean much. +But, without ideals, Europe's foundations will erode. +The emphasis on pure self-interest increases this threat. +My generation grew up with the image of Europe as an economic form of cooperation. +Political motives behind European integration were overshadowed by the economic project. The result is an impression of Europe as a marketplace. +A Europe of markets and money, not of man and morals, dominated the project. +But without a moral foundation, there can be no free-market economy. +Today, we are paying the price for not attending to Europe's shared values and common mission. Until Europeans know precisely what Europe stands for, what inspires and motivates us, the Union will not be able to take joint action in the world. +The EU Constitution will make Europe more democratic and more transparent. +It provides further guarantees that decisions will be taken by those closest to citizens, and it acknowledges the significance the values on which the Union rests: respect for human rights and dignity, liberty, democracy, equality, and the rule of law. +These shared values are the glue that binds governments together in the recognition that clinging to pure self-interest is no longer reasonable when common concerns call for a common strategy. +For what is the point of doing away with Europe's physical borders if borders between its citizens remain? +How can Europeans be happy that the Iron Curtain is gone if individuals and groups across the Union barricade themselves behind private iron curtains? +Indeed, fear, insecurity, and nationalism are again raising their heads. +It is important for Europeans to reflect on that as they prepare for further rounds of enlargement and consider starting accession negotiations with Turkey. +The preamble of the Constitution states that Europe is "united in its diversity." +This may be the most concise statement of what makes Europe Europe. +But the words "united in diversity" raise the question of where this unity lies. +The answer lies in the values on which the Union is based. +They are contained in three concepts: freedom, solidarity, and mutual respect. These three together make it possible for Europe to open its doors to a great diversity of peoples and at the same time to speak as a community of peoples prepared to take responsibility for one another. +Making such a community a reality will not come about by believing that Europe's culture is better than others. +We will make it a reality through dialogue and deep reflection about Europe's common values. +Values must be the road that leads to what cannot be reached by markets and institutions alone - the accession of Europe's citizens to the European Union. +Only by embracing their shared values can Europeans prevent their Union from becoming a spiritless machine. +Together, Europeans must find what connects them, and derive new enthusiasm, new spirit from what they find - a spirit sorely needed to tackle the great issues of today. No country can address these issues along. +After more than fifty years, Europe as a community of values remains as necessary as ever. +Europe's New Dawn +Today in Rome, the heads of state and government of the EU's 25 member states will sign the Treaty establishing a Constitution for Europe. +We have come a long way since the six founding members formed the European Economic Community back in March 1957 - also in Rome. +After the Treaty is signed, it will go before the national parliaments for approval. +So it is crucially important to understand why the Treaty deserves to be ratified. +Simply put, it places the interests of Europe's citizens more than ever at the heart of the European Union's activities. +It does so in four ways. +First, the Constitutional Treaty guarantees that the Union's institutions will respect the fundamental rights of everyone within the EU. +The "catalogue of fundamental rights" included in the Constitution is extensive, centering on respect for human dignity, freedom, and equality, and also on the principles of democracy and the rule of law. +By enshrining them in the Constitution, these fundamental rights and principles become legally binding, and citizens will have greater scope for bringing appeals to the Court of Justice. +In this respect, the EU leads the world in the protection of fundamental rights. +Second, the Treaty makes the EU more democratic and brings government closer to Europe's citizens. +The Union has no business interfering in matters that can be dealt with successfully at the local, regional, or national level. +The EU's objectives are precisely those that countries are unable to achieve on their own, for example, a stronger economy and greater security. +The Constitutional Treaty includes guarantees to ensure that the EU adheres to this principle strictly. +National parliaments will be able to call a time-out if Brussels makes proposals that seem to interfere unnecessarily. +Should one-third of national parliaments so wish, the European Commission will be required to reconsider a proposal. +In addition, the Constitutional Treaty gives citizens the right to ask the European Commission to take action on a specific point. +A citizens' initiative of this kind will require one million signatures, obtained in different countries. +At the same time, the European Parliament will have far greater powers. +It will have joint decision-making authority in many more areas, including the budget. +As a result, European citizens' elected representatives will be better able to scrutinize the work of the Commission. +Third, the Treaty makes the EU more open and more transparent. +Citizens want powers to be clearly defined and decisions to be taken openly in a way that they can understand. +Many people despair of finding their way through the maze of current EU treaties and their numerous amendments. +Outside Brussels, few people can explain the "pillar" structure and the distinction between the Union and the Community. +The Constitution consigns these complexities to history. +It also gives people far greater access to official information, extending their right of access to documents from all institutions, organs, and bodies. +Finally, the Treaty will make Europe more effective. +This is essential if the issues that affect people's lives are to be tackled successfully. +Two themes that people consider crucial are a stronger European economy (more jobs and more growth) and greater security (reducing cross-border crime). +European countries are heavily reliant on each other in addressing these issues. +People are counting on Europe to take action. +But, because EU decisions often have to be taken unanimously, this can be difficult. +Moreover, the means to work together effectively are often lacking. +The Treaty introduces major improvements here, enabling us to work together more effectively to achieve our aims. +In sum, the Constitutional Treaty firmly enshrines fundamental rights in law, and also makes the EU more democratic, more transparent, and more effective. +This makes it a good deal for everyone - for people who expect more cooperation and more concrete results from the Union, but also for those concerned about excessive interference by Europe in questions that can be better dealt with by the member states themselves. +Next year, we will celebrate 60 years of peace across a large part of Europe. +Never before in our history have we enjoyed such a long period of concord, a period that has seen an enormous growth in prosperity. +Democracy has taken root in almost every corner of Europe, and Europeans now have far greater freedom to live, work, and study where and how they wish. +These achievements are largely due to European cooperation. +The Constitutional Treaty is a reflection of our wish to continue in the same vein, to carry on working together. +We want to reaffirm our commitment to a life without war and injustice, and to the freedom that we hold so dear. +The Constitutional Treaty provides solid foundations for our shared future. +Peace, security, and prosperity are as vulnerable as they are valuable. +This Treaty makes them stronger. +And that makes us stronger. +The signing ceremony is therefore a message of hope. +It is a new beginning. +Using and Abusing the Hague Tribunal +The International Tribunal in The Hague was intended as a Sword of Damocles for human rights violators in the Balkans. +Within the Balkans, however, it has become a political tool that both nationalists and their opponents exploit in a never-ending game of divide and (hope to) rule. +Croatia provides a textbook case of this. +Snags and fissures now bedevil Croatia's infant democratic reforms. +The reasons are connected to Premier Ivica Racan's unwillingness to tackle the centers of power left behind by the regime of the late President Franjo Tudjman, whose nationalist-minded party, the Croatian Democratic Union (HDZ), was voted out of office in January 2001 following Tudjman's death in December 1999. +Tudjman forged an authoritarian regime that blurred the distinctions between HDZ and state agencies, in particular the army and police. +This muddied legacy remains at the heart of Croatia's current problems and its relations with the Hague Tribunal. +In January 2001 the then new Premier Ivica Racan faced a sharp choice: swiftly purge state bureaucracies of Tudjman's partisans or yield to the obstructive ploys of HDZ loyalists. +True to Racan's instinctive indecisiveness, the Prime Minister dallied. +He preferred to concentrate on constitutional reforms that were largely interpreted as a bid to strip the new president, Stjepan Mesic (himself a longtime opponent of Tudjman) of the robust executive powers Tudjman wrote into the constitution for himself. +Meanwhile, the new government failed to investigate numerous war crimes, miscarriages of justice, and the corruption of the Tudjman era. +This failure emboldened HDZ loyalists to test the Racan government's resolve. +One favorite trick was to create enormous obstacles to even minimal attempts at cracking down on war criminals. +In September 2000, following the assassination of a Hague Tribunal witness and the arrest of a Croatian commander accused of massacring Serbs in 1991, twelve army generals published a letter calling for the defense of Croat veterans and a halt to ``the negative and historically unfounded representation'' of Croatia's record in the Balkan wars. +In a rare show of state determination, President Mesic suspended and forced into retirement all twelve officers. +Several went on to join and lead a new party - Croatian Integrity and Prosperity (HIP), organized by Tudjman's eldest son Miroslav, the former chief of the Croatian intelligence service. +Parrying with Tudjman loyalists continued into the spring of this year, with the arrest of Mirko Norac, one of the twelve generals, who was accused of massacring Serb civilians in 1991. +Various veterans' organizations staged mass rallies against the ``treacherous'' government of Mesic and Racan. +These pressures would not have been as damaging had they not met with approval in parts of Racan's ruling coalition, especially from Drazen Budisa's Croatian Social Liberal Party (HSLS), and also among influential Catholic bishops. +Weakened, the government became psychologically prepared for still greater concessions. +In July, the Hague Tribunal for the Former Yugoslavia charged two Croatian generals - Rahim Ademi and Ante Gotovina - with war crimes. +Instead of turning them over to the tribunal, Racan used the opportunity for a power play, requesting a parliamentary vote of confidence for what was intended to be a soft-pedaling of the Hague Tribunal's warrants. +This provoked the resignation of Budisa from the presidency of the Social Liberal Party, inciting a virtual split in this key coalition partner, the only party in the government coalition that wanted to resist the Hague Tribunal. +Despite this, Racan won his vote of confidence and secured a modicum of stability within his cabinet. +Still, the various factions that comprise the Tudjmanite opposition gained a chance to pull Budisa toward them, creating a new center of political gravity for the next crisis. +The Hague Tribunal is often blamed for burdening fragile reform governments in Croatia and Serbia with unreasonable requests that play into the hands of nationalist politicians. +This is true to the extent that the Tribunal is insensitive to the intricate balancing expected of officials in the countries of the former Yugoslavia. +For example, the pre-trial release of Biljana Plavsic, one of the most culpable of Bosnian Serb leaders, in exchange for her evidently ample testimony would make more sense had the Tribunal been equally accommodating on less culpable non-Serb defendants. +A reluctance to prosecute war criminals is an asset that Balkan governments use in order to pacify their nationalist audience and, indeed, to avoid the thorny problems of a thoroughgoing reform. +Racan would not have had to deal with the Hague Tribunal had he the courage to begin his own housekeeping and investigations of Tudjman's cronies and the war criminals the deceased president protected. +Now, Premier Racan is cashing in on his procrastination over Tudjman acolytes, hoping that they will be as generous with him should they return to government. +For in Croatia, every new regime issues a plenary absolution for its predecessors. +A tiny elite is thus insulated from serious challenges and, ultimately, of responsibility for anything, even the most heinous of crimes. +The Three Mis-Represents +It is two years since the Chinese Communist Party (CCP) unveiled its new ideological credo, called the "Three Represents." +What good fortune it is that China's most sacred, encompassing, and powerful doctrine built around the triumvirate of "the interests of the majority of the people" "advanced culture," and "advanced productive forces" found one political party to be its representative! +Good fortune, that is, for the CCP, not for China and its people. +The "Three Represents" has several official versions, each including the words "always," "China," and "represent." +Their meaning is clear. +On the other hand, "majority of the people," "advanced culture," and "advanced productive forces," as well as some other phrases that dominate the doctrine, are vague, perhaps deliberately so. +Common sense suggests that the "majority of the people," whom the CCP is supposed to "represent," should include workers. +But the CCP long ago abandoned the workers. +How many lost their jobs last month? +How many were forced to take early retirement? +How many mining accidents were there? +How many workers' protests? +Who jailed their organizers? +The "Representative of the Three Represents" refuse to say. +Workers who protest and strike are "rioting." +Whoever reports such events is "anti-revolutionary." +The same is true of the Party's relationship with the peasants, who provided Mao Zedong with the soldiers and supplies he needed in battles that lasted decades. +Peasants followed Mao because the CCP promised them land. +But Mao decided to take back the land from the peasants even before it was given to them. +"The serious problem is the education of the peasants," he said. +So he taught them that all land belongs to the state. +The "representatives" of the peasants are the new landlords. +In a China without democracy, student sentiment is a key political barometer. +Unlike workers or peasants, students include people from all levels of society, so whatever mobilizes them represents society's focus at that time. +From April 15th to June 4th, 1989, students demonstrating in Tiananmen Square, and their supporters, conducted the saddest opinion poll in Chinese history, expressing a common will to end totalitarianism, build democracy, and eliminate corruption. +Those who defend the Party's bloody crackdown of those students have no right to call themselves the representatives of the majority of the people. +Their claim to be "always representing the progressive direction of advanced culture" is yet another grand and empty declaration. +Chinese culture stretches three thousand years into the past and perhaps thousands of years into the future. +Is it to be "always represented" by a lone political party? +I do not know what "the progressive direction of advanced culture" is, but advanced culture played no part in the CCP-inspired "Wipe Out Poisonous Weeds Campaign," the "Anti-Rightist Movement," or the "Eliminate Demons and Evil Heresy Campaign." +Such obscurantism only creates a culture of stultifying uniformity. +Like a blade of grass beneath a stone, culture knows how and in which direction to seek light. +It does not need to be "represented." +Of the three "represents," the clearest meaning is to be found in the CCP's vow to "always represent the demands of advanced productive forces." +This means representing the interests of the da-kuan, those who suddenly became rich, usually through government connections. +The phrase has no deeper meaning. +The union of power and money in today's China originates from the steady inflation of bureaucracy. +Before the Great Leap Forward, townships could barely afford a few full-time cadres. +Today, each township has hundreds. +Their basic salary is paid by the central government, but bonuses and extra benefits depend on contributions from the "advanced productive forces" at the county and township level. +Whatever the rich ask of the CCP - land leases, low interest loans, violation of labor laws, environmental standards, contracts, and intellectual property - can be considered "the demands of advanced productive forces." +Even under less corrupt conditions, representing "the most advanced productive forces" is a flawed idea. +Imagine that the Olympic Committee represented only the interests of gold medal winners, or that the Education Ministry represented only post-doctoral programs but ignored elementary schools. +While the high-tech sector at the top of the economic pyramid is important, the traditional sectors at the bottom still form the foundation. +What will become of several hundred million rural peasants and jobless workers in sunset industries? +Who will address inequality and divergent social interests? +An increasingly pluralistic society is being forced into a procrustean structure that allows only one voice, one need, and one kind of interest: the voice, needs, and interests of the party. +But the theory of the Three Represents is nevertheless necessary, because a new situation has emerged. +When the CCP came to power in 1948, it could claim to embody socialism, Marxism, and the proletariat's historical mission. +Fifty years later, socialism's advantages, Marxism's truth, and the proletarian character of the Party have all been unanswerably challenged. +So the Three Represents is an effort to salvage one-party rule. +You may doubt socialism, but you cannot doubt "advanced productive forces." +You may not believe in Marxism, but you must believe in "advanced culture." +The CCP no longer represents workers and peasants, but it can represent the "majority of the people," including "red" capitalists. +Indeed, whether CCP members who have become "revolutionarily" wealthy remain "red" is determined solely by their acceptance of one-party rule. +Welcoming "red capitalists" therefore does not imply democratization. +Such people are more likely to seek to strengthen their privileges than promote pluralism and the rule of law. +Totalitarianism, not political reform, is their livelihood. +It is this, above all else, that the theory of the Three Represents comprehends. +Remembering Zhao Ziyang +The conditions under which Zhao Ziyang lived at the time of his death, in utter isolation from Chinese society due to an illegally imposed 16-year house arrest, shames both Chinese justice and the Chinese Communist Party (CCP). +Zhao's persecution was the persecution of a leader who dedicated himself for over a decade to groundbreaking efforts that became the foundations of China's economic reform. +In the late 1970's, Chinese peasants had long since lost their rights to own their land, owing to collectivization and the establishment of the People's Commune. +It is a right they have never regained. +Zhao, however, was the first to advocate giving autonomy back to the peasants and so initiated the first pilot tests to abolish the People's Commune. +Chinese industry had been transformed into subsidiaries of government through nationalization and central planning. +Zhao was the first to propose "expanded autonomy for Chinese enterprises" and "restoration of a healthy relationship between government and industry." +Expanded autonomy for enterprises and the peasantry were critical first steps whose success led eventually to full-blown economic reform. +These were among the many incremental victories Zhao won to help China's people break out of the suffocating stagnation of Maoist socialism. +As China's Premier, Zhao implemented ten years of economic reforms that brought steady progress in which the people, especially the peasantry, enjoyed tangible improvements. +But Zhao was also the only CCP leader to propose a political reform package to tackle China's system of one-party rule. +The Party's unchallenged monopoly on political power systematically ensured that every mistake it made -- such as the dreadful decade of the Cultural Revolution -- turned into a prolonged nationwide crisis. +For genuine and long-term stability, Zhao proposed reforms that ultimately aimed at the legalization and systemization of democracy. +He wished to establish the kind of democratic politics that could support and nurture a healthy market economy. +Although the short-term practical objectives of Zhao's political reforms were limited by the circumstances in which they were proposed, the measures all aimed at containing Communist Party power and represented a concrete step toward returning, peacefully, power to China's people. +Zhao's package -- a sharp break with Mao's totalitarianism -- was approved by the 13th Party Congress, officially the highest authority within the CCP. +During his twenty months as CCP General Secretary, Zhao created a culture in which the Politburo refrained from interfering in the courts, and he stopped its attempts to control literature and the arts. +Zhao abolished the policy of enterprises being run by Party organizations and the system by which fa ren ("legal representatives") were the core of enterprises. +Unfortunately, Zhao's political reforms were terminated upon his fall from power. +The dreadful result was the indiscriminate denial of civil rights and the principles of democracy, and the rise of what today's leaders call "socialism with Chinese characteristics" -- a bitter euphemism for unchecked Party and government power entwined with commercial interests. +Zhao's fate is also a chilling reminder of other injustices that are on the consciences of those now in power. +The only reason for Zhao's continued ill treatment was his opposition to the violent repression of the Tiananmen Square protest in 1989. It should have been his decision to make as General Secretary, but things were not as they should have been. +It should be remembered that former General Secretary Hu Yaobang, who had been forced to step down two years earlier by Deng Xiaoping because of his liberal stance, died in April 1989, triggering spontaneous and peaceful student demonstrations in Beijing, which spread across the country. +Half a million college students in Beijing alone were involved in this movement. +It lasted 50 days and was heartily supported by Beijing residents and people all around the country, from all walks of life. +Zhao pointed out to the Politburo that the sentiments expressed by the students and residents in their commemoration of Hu, in their protests against corruption, and their desire for democracy were really the same sentiments that they themselves held. +He believed that it should be possible to resolve the student protests and respect the principles of democracy and the rule of law. +Under Zhao's direction, the Politburo and its Standing Committee called for dialogue with the students. +This hopeful direction changed completely, however, when Deng Xiaoping revealed his desire for a violent crackdown. +In the end, it came down to a fight among five members of the Politburo Standing Committee: Li Peng and Yao Yiling sought to deploy the military. +Zhao opposed this. +Qiao Shi and Hu Qili initially sided with Zhao, but then withdrew their support and, instead, asked Deng Xiaoping to make the final decision. +With deep divisions evident, Deng chose to bypass all existing institutions, the Party's Politburo, the Central Committee, and the National People's Congress and its Standing Committee. +Without further discussion, Deng mobilized 500,000 troops to enter Beijing to crack down on the unarmed students and civilians. +The Tiananmen Square Massacre of 1989 was a tragedy for China, and another tragedy for the twentieth century. +Sixteen years have passed, but the pain remains, buried in the hearts and minds of the people. +In the years that have passed, China's leaders were responsible not only for Zhao's unlawful house arrest but also for a systematic effort to erase his name from history. +But their attempts to conceal the truth about the past only reveal their weakness and their shamelessness. +For one thing they cannot change: Zhao Ziyang remains with us, in the Chinese people's ongoing struggle for rights and democracy. +A New Start for Non-Proliferation +Obama has pledged to revitalize the 1970 Nuclear Non-Proliferation Treaty (NPT), which aims to prevent the spread of nuclear weapons. The non-proliferation regime, of which the NPT is the cornerstone, is in disarray. +The main problems are easily identified. +First, the five main nuclear-weapon states have not taken seriously their NPT obligation to work for nuclear disarmament. +Instead, they have insisted that nuclear weapons are essential for their security and continued to modernize their nuclear arsenals. This naturally robs them of the moral authority to persuade others not to acquire nuclear weapons, which continue to be perceived as a source of power and influence, and an insurance policy against attack. +Second, as we have seen in the case of North Korea, there is nothing to stop countries that sign the Treaty from simply walking out after declaring that "extraordinary events" have jeopardized their supreme interests. +Third, the International Atomic Energy Agency, which is supposed to police the non-proliferation system, is shamefully underfunded. +When it comes to determining whether or not a country is conducting a covert nuclear weapons program, IAEA inspectors often have their hands tied, either because they lack the legal authority to gain access to all the locations they consider necessary, or because the IAEA's analytical laboratories are outdated, or because the Agency does not have adequate access to satellite imagery. +Fourth, export controls have failed to prevent the spread of sensitive nuclear technology, not least due to the sophisticated efforts of clandestine networks like the one run by Pakistani nuclear scientist A.Q. Khan. +Nine countries already have nuclear weapons, and it would be naive to presume that others, particularly in regions of conflict, will not try to get hold of them. +In addition, a number of countries with nuclear energy programs have the capability, if they choose, to manufacture nuclear weapons within a matter of months if their security perceptions change, because they have mastered the critical technology -- uranium enrichment and plutonium reprocessing. +If more countries take this path, it could prove to be the Achilles' heel of non-proliferation. +Fifth, the international community, spearheaded by the United Nations Security Council, has more often than not been paralyzed in the face of challenges to international security and ineffectual in responding to suspected cases of nuclear proliferation. +These issues will not be resolved overnight. But there is much that can be done relatively quickly. +The United States and Russia have started negotiations on deep cuts in their nuclear arsenals, which together account for 95% of the world's 27,000 warheads. +Other key steps include bringing into force the Comprehensive Nuclear Test Ban Treaty; negotiating a verifiable treaty to end production of fissile material for use in weapons; radically improving the physical security of nuclear and radioactive materials, which is vital to prevent them from falling into the hands of terrorists; and strengthening the IAEA. +Last month, I proposed a key measure to strengthen non-proliferation to the IAEA's Board of Governors -- establishing an IAEA bank of low-enriched uranium (LEU) to guarantee supplies to countries that need nuclear fuel for their power reactors. +LEU cannot be used to make weapons. +Some such mechanism will be essential in the coming decades as more and more countries introduce nuclear energy. +My proposal is to create a physical stockpile of LEU at the disposal of the IAEA as a last-resort reserve for countries with nuclear power programs that face a supply disruption for non-commercial reasons. +This would give countries confidence that they can count on reliable supplies of fuel to run their nuclear power plants, and therefore do not need to develop their own uranium-enrichment or plutonium-reprocessing capability. +This could help to avoid a repeat of Iran's experiences after its 1979 revolution, when contracts for fuel and technology for its planned nuclear power program were not honored. +Thirty years later, some of the consequences are still being felt. +The LEU would be available to countries in need on the basis of non-political and non-discriminatory criteria. It would be accessible at market prices to all states in compliance with their nuclear safeguards obligations. +No state would be required to give up the right to develop its own fuel cycle. +The money needed to launch an LEU bank is in place, thanks primarily to a non-governmental organization -- the Nuclear Threat Initiative -- and initial funding from Warren Buffett. But this can only be a first step. +It should be followed by an agreement that all new enrichment and reprocessing activities will be placed exclusively under multinational control, and that all existing such facilities will be converted from national to multinational control. +This is a bold idea, but bold ideas are needed now more than ever. +The opportunity to put the nuclear fuel cycle under multinational control was missed 60 years ago because of the Cold War. +The spread of nuclear technology and the growing risk of nuclear terrorism make it imperative that we get it right this time. +Europe's Corner of Despair +-- Three floors of Moldova's parliament building are a charred ruin. +So is democracy in Moldova, a former Soviet republic that is now Europe's poorest country. +Of Moldova's 3.5 million people at the time of independence, 15% have already left the country to seek better lives elsewhere. More than 63% of Moldova's young people say they want out. +In early April, a disputed election victory by Moldova's ruling Communists triggered protests. +Political opponents and disaffected people, many of them young and with few prospects of finding jobs, took to the streets. +A violent few broke into the offices of the country's president and its parliament building, which was set on fire. +In response, the Communists blamed the violence on the opposition political parties, which it called "fascists," and on Romania and Romanian irredentists in Moldova. +The police cracked down on young people and took hundreds into custody. +Several died, apparently from beatings. +President Vladimir Voronin later granted the detainees amnesty. +Nevertheless, many remain in detention and Voronin continues to hurl accusations at the opposition and Romania of organizing a coup d'état. +Legal proceedings have been opened against opposition parties. +Restoring stability and a fair democratic system to Moldova is important, first and foremost, because Moldovans deserve a government that is accountable. +Stability is also important because the country borders on Romania, a European Union member state. +The two countries share a language and culture, and, until Stalin separated them, were even part of the same state. +A vocal minority of Moldova's people believe that merging their country with Romania would put the country into the express lane to EU membership, with its generous financial perks and, perhaps most enticing of all, passports that would enable them to escape a no-hope economy to build lives elsewhere. +Many Moldovans, indeed, already have Romanian passports so that they can travel and work in the EU. +Some Romanian officials, including President Traian Basescu, have bandied about the idea of distributing Romanian passports to as many as a million Moldovan citizens, a quarter of the entire population. +Of course, the Moldovan government balks at any attempt to lure away its citizens. +The United States should do more to help bring stability to Moldova. +Together with the EU, the US can help ensure a credible investigation of the post-election violence and complaints against the police. +Amerca should be more energetic in demanding that the Moldovan authorities respect the rule of law, issue a roster of all detained persons, provide them access to lawyers and family members, and guarantee that they are not harassed. +Opposition leaders and democracy watchdogs say Moldova's election process was fundamentally flawed. +The country's broadcast media, especially its television stations, gave a disproportionate amount of air time to the ruling Communists during the election campaign. +The Communists are alleged to have rigged the balloting by adding names to the voter rolls and reviving the dead for the day. +In the long run, the US and EU should support civil society organizations in pressing Moldova's government to guarantee more equitable distribution of television time, to stop police harassment of opposition political leaders and workers as well as journalists, to reform the police and end the ruling party's abuse of state institutions, and to allow all political parties more opportunity to inspect election rolls and monitor polling stations. +They should insist that opposition parties are included in a dialogue. +The US can put weight behind its demands by placing conditions on its financial assistance to Moldova. +The EU has even more leverage. Moldova is more dependent on the EU than any other former Soviet republic. +More than half of the country's trade is with the Union, and Moldova receives significant EU financial assistance. +Most Moldovan emigrants work in the EU, and almost 75% of Moldova's population support EU membership. +Romania, too, should play its part and offer to sign a basic treaty and a border agreement with Moldova. +The last thing impoverished Moldovans need is an autocratic, unaccountable government that lacks sufficient imagination to find a way to revive the country. +And just about the last thing the EU needs is an influx of hundreds of thousands of migrants fleeing poverty, political repression, and despair in Moldova and other countries of the former Soviet Union. +Poor Little Rich Country +Feeling sympathy for Norway is hard. Thanks to its massive North Sea oil reserves, the country has achieved a level of wealth unimaginable only a generation ago - and which has allowed it to cold-shoulder the European Union since 1994. +But Norway's problems, while hardly on a par with Sub-Saharan Africa or Afghanistan, are nonetheless serious enough to elicit concern, if not pity. +When a country's newly discovered natural resource abundance leads to windfall wealth, investment in the rest of its economy shifts away from the tradeables sector (mainly manufactured exports) and into the nontradeables sector (mainly consumer goods and services). +The diagnosis is a familiar one known as "the Dutch disease." +If and when the natural resource generating the windfall wealth (in this case, oil and gas) disappears, the economy is left with too few competitive industries and too many empty bookstore-cafes. +Painful restructuring is sure to follow. +So far, Norway has avoided the worst pitfalls of the Dutch disease by using its massive oil revenues to establish a national savings scheme, the Petroleum Fund, which is permitted to invest only in foreign assets. +This rule serves to curb inflationary demand pressure while preventing elected officials from squandering the country's riches on politically rewarding but economically wasteful projects. +On both counts, however, Norway has recently lowered its guard and is heading for trouble. +Wages throughout the economy have soared, with the average increase likely to hit a whopping 6% this year. +To compensate, firms have been raising prices, fueling inflation. +But with the central bank committed to holding annual inflation to an average of 2.5%, Norway's interest rates are currently among the highest in Europe. +This has helped cause the exchange rate to strengthen by nearly 10% over the last year against the currencies of Norway's main trading partners, making the tradeables sector even less competitive. +Domestic industries that face foreign competition are beginning to close down or relocate abroad. +As a result, in one of the world's richest countries, unemployment is rising. +But the real problem is the public sector. +Government spending is now increasing by 4% annually because of a new "action rule," enacted in 2001, that allows revenue from the Petroleum Fund to be phased into the domestic economy. +But the additional budget revenue has merely offset lower taxes, while high wages and interest rates are jacking up public expenses. +So more government spending is needed to maintain public services at the same level - and to keep unemployment down. +The cycle thus takes another vicious turn: higher interest rates, continuing currency appreciation, further decimation of the tradeables sector, and the risk of more unemployment. +If Norway is to avoid succumbing to the Dutch disease, there can be only one solution. With the importance of the tradeables sector dwindling away, the nontradeables sector must increase its productivity and output. +There is only one main way that the necessary productivity and outcome gains can be achieved: excess demand in the public sector must be shifted elsewhere. +After all, the demand will not disappear on its own. +Waiting lists for medical and nursing services in Norway already seem endless, and school buildings are deteriorating - some have even been closed down by the public health authorities. +A range of public services will therefore have to be privatized. +As always, this will be a politically contentious and challenging process. But it will also provide a golden opportunity to realize the country's potential through a strategy of sensible investment - the original purpose of the Petroleum Fund. +This strategy should include significant investments in human capital: education, training, and basic scientific research. +But brilliant ideas cannot be made to order. +Any government effort to sustain dying industries or to allocate investment by picking all sorts of "innovative" projects will be a recipe for economic disaster. +As so often in the rest of the world, windfall wealth such as came to Norway because of its oil and gas, can be a curse as much as it is a blessing. +With just 10-15 years of estimated oil reserves remaining, the United Arab Emirates last year dropped visa requirements for most Westerners in an effort to accelerate the development of a viable tourist trade. +With the recent discovery of its huge Caspian Sea reserves, Kazakhstan stands at the start of this process. +These countries, like Norway, were winners in the natural resource lottery. But that is no guarantee that they will remain rich after the payments stop. +A Way out of Tibet's Morass +A year ago, Chinese and Western intellectuals competed in dismissing popular interest in Tibet as a childlike confusion with the imaginary Shangri-la of the 1937 film Lost Horizon . +But after more than 150 protests in Tibet against Chinese rule over the past 12 months, concerns about the area seem anything but fanciful. +Indeed, Tibet could soon replace Taiwan as a factor in regional stability and an important issue in international relations. +The areas populated by Tibetans cover a quarter of China; to have such a large part of the country's territory under military control and cut off from the outside world weakens the Communist Party's claims to legitimacy and world power status. +Last year's protests were the largest and most widespread in Tibet for decades. +Participants included nomads, farmers, and students, who in theory should have been the most grateful to China for modernizing Tibet's economy. +Many carried the forbidden Tibetan national flag, suggesting that they think of Tibet as a separate country in the past, and in about 20 incidents government offices were burned down. +In one case, there were even attacks on Chinese migrants, leading to 18 deaths. +It is hard not to see these events as a challenge to China's rule. +The government's reaction was to blame the problem on outside instigation. +It sent in more troops, hid details of protestors' deaths, gave a life sentence to an AIDS educator who had copied illegal CDs from India, and for months banned foreigners and journalists from the Tibetan plateau. +In November, Chinese officials, live on national TV, ridiculed Tibetan exiles' proposals for negotiation. +They canceled a European summit because of a meeting between French President Nicolas Sarkozy and the Dalai Lama, and regularly imply that Tibetans are terrorists. +On March 28, Tibetans in Lhasa had to celebrate "Serf Emancipation Day" to endorse China's explanation for its take-over 50 years ago. +But such class-struggle terminology reminds people of the Cultural Revolution and, since such language would be unimaginable in inland China today, only makes Tibet seem more separate. +Although both sides claim to be ready for dialogue, they are talking at cross-purposes: the exiles say that talks must be based on their autonomy proposals, while China says that it will discuss only the Dalai Lama's "personal status" -- where he would live in Beijing should he return to China. +Visceral sparring matches are continuing, with the Dalai Lama recently describing Tibetans' lives under China as a "hell on earth." +He was almost certainly referring to life during the Maoist years rather than the present, but his remarks enabled China to issue more media attacks and raise the political temperature further. +Western governments have been accused of interference, but it is unlikely that any want to derail their relations with China, especially during an economic crisis. +Last October, British Foreign Minister David Miliband was so anxious to maintain Chinese good will that he came close to denouncing his predecessors' recognition of Tibet's autonomy 100 years ago. +But foreign concerns about the status of China's mandate in Tibet are understandable: Tibet is the strategic high ground between the two most important nuclear powers in Asia. +Good governance on the plateau is good for everyone. +China could help to lessen growing tensions by recognizing these concerns as reasonable. +The Dalai Lama could cut down on foreign meetings and acknowledge that, despite China's general emasculation of intellectual and religious life in Tibet, some aspects of Tibetan culture (like modern art, film and literature) are relatively healthy. +Western observers could accept the exiles' assurances that their proposals on autonomy are negotiable and not bottom-line demands, rather than damning them before talks start. +All sides would gain by paying attention to two Tibetan officials in China who dared to speak out last month. +A retired prefectural governor from Kardze told the Singapore paper Zaobao that "the government should have more trust in its people, particularly the Tibetan monks," and the current Tibet governor admitted that some protesters last year "weren't satisfied with our policies," rather than calling them enemies of the state, the first official concession from within China that some of its policies might be connected to the recent protests. +The Party has so far been following a more conventional strategy: last week it sent a delegation of officials to the US (the first ever sent, it said, to have been composed solely of Tibetans -- a fact that one might expect them to have been embarrassed to admit) and had its leader, Shingtsa Tenzin Choedak, tell journalists that Tibetans enjoy freedom of religion. +As anyone who has worked in Tibet recently knows well, this was an inexactitude: since at least 1996, all Tibetans who work for the government and all Tibetan students in Tibet have been forbidden any Buddhist practice, even though it is illegal under Chinese law to stop people from practicing an official religion. +China's government could improve the situation overnight by sacking the officials responsible for such illegal policies, and by apologizing to Tibetans for having overlooked such abuses for 15 years. +And it could start reassessing its Tibetan policies instead of increasing controls and allegations. +Until then, China's quest for international respect is set to remain elusive and Tibet is likely to stay on the world's agenda. +Europe and the Global Food Crisis +But there is more to finding a solution than simply identifying those nations that are capable of feeding the rest of the world. +It is increasingly urgent that every nation gain the means of feeding itself. +This means that agriculture should become an international priority, with the poorest countries helped to safeguard the security and independence of their food supplies. +Countries and organizations are already mobilizing. +The United Nations' Food and Agriculture Organization argues that rising food prices could lead to increasing global conflicts. +The Davos World Economic Forum ranks food insecurity as a major risk to humanity. +The World Bank has forcefully emphasized the importance of agriculture to jump-starting economic expansion and breaking the cycle of poverty. +UN Secretary Ban Ki-moon has created a working group to define a common plan of action, and France's President Nicolas Sarkozy has proposed a global partnership for food. +Sarkozy's proposed partnership has three pillars. +First, an international group should draft a worldwide strategy for food security. +Second, an international scientific platform should be charged with evaluating the world's agricultural situation, sending out warnings of upcoming crises, and possibly facilitating governments' adoption of political and other strategic tools to deal with food crises. +Finally, the international finance community, despite its current problems, must be mobilized. +The reliability and size of the European Union's farm output means that it can and should play the role of regulator in global markets. +If Europe cut back on its agricultural production, the increase in its own food imports would contribute significantly to a worldwide increase in food prices. +This makes it imperative that EU food production levels be held steady -- for the sake of Europeans and of people in the world's poorest countries. +But Europe cannot build up its own agriculture to the detriment of the less fortunate. So the EU must harmonize its policies with poorer countries. +At present, export subsidies and support payments represent less than 1% of the European agricultural budget, and the EU has undertaken to eliminate them once it receives reciprocal undertakings from major food-exporting countries. +Since 2001, with the "Everything but Arms" initiative, all products from poor countries -- with the exception of weapons and munitions -- can enter the EU single market on a duty-free basis. This has led to the EU becoming the primary market for the poorest countries' products. +The EU is also developing ways to respond to new global challenges through changes to its Common Agricultural Policy. This was reflected in the decision to suspend the "set aside" rule that requires a proportion of agricultural land to lie fallow. +Now the EU is preparing to increase dairy quotas progressively, and evaluating the impact on world markets of its decisions regarding bio-fuels. +But Europe's focus must be on encouraging the development of local agriculture. Doing so is the only way to achieve greater global food security and reduce poverty. +It will also make it possible to ensure that today's high prices for agricultural products are transformed into opportunity for poor farmers. +This is vital because, according to the World Bank, growth in farming eliminates poverty twice as much as growth in any other economic sector. +Indeed, agriculture remains the primary productive sector in the world's poorest countries, employing 65% of the working population and, on average, contributing more than 25% to GDP. +But over the past 20 years, support for agricultural development has been declining. +Only 4% of public development assistance is now earmarked for agriculture. +The European Commission and EU member states are therefore planning to increase their assistance, both through the European Development Fund and by developing new sources of financial support. +Further liberalization of farm trade will not ensure food security. +Faced with the erratic nature of agricultural markets, regulation is needed to soften the impact on poorer countries of volatile food prices. +This does not mean that protectionism is the way forward, only that taking account of specific issues that affect international farm trade -- weather, price volatility, or health risks -- may be necessary from time to time. +But, in a world where productivity differentials can be as great as one to 1,000, it would be unwise to rely on markets alone to enable the poorest countries to expand their economies. +Nor is it likely that much economic expansion will result from competition between multinational food distributors and producers in countries where famine still stalks the land. +Instead, bringing together outside expertise and local knowledge of the geography and environmental and economic constraints in order to spread risks and share the management of resources and projects is far more likely to help poor countries achieve food independence. +It was such an approach that, in less than 20 years, helped postwar Europe achieve food sovereignty. +Countries that have protected their agricultural development from the threats posed by international markets -- such as India or Vietnam -- have achieved substantial reductions in agricultural poverty. +The time has also come to prioritize agriculture in order to ensure growth with a more human face. +At the heart of the EU, France wants to play its part in a collective effort that is fast becoming a major issue for us all. +capitalism characterizes economies where large firms -- often so-called "national champions" -- dominate production and employment. +Smaller enterprises exist, but are typically retail or service establishments with one or only a few employees. +Firms get to be large by exploiting economies of scale, refining and mass-producing the radical innovations developed by entrepreneurs (discussed next). +Western European economies and Japan are leading exemplars of managerial capitalism, which, like state guidance, also has delivered strong economic performance. +But managerial capitalism, too, has its Achilles heel. +Bureaucratic enterprises are typically allergic to taking big risks -- that is, developing and commercializing the radical innovations that push out the production-possibility frontier and generate large sustained jumps in productivity and thus in economic growth. +Large firms are relatively risk-averse not only because they are bureaucracies, with layers of management required to sign off on any innovation, but also because they are reluctant to back innovations that threaten to render obsolete the products or services that currently account for their profits. +In our view, the limits of managerial capitalism explain why, after approaching US levels of per capita income in the late 1980's, both Western Europe and Japan failed to match America's information-technology-driven productivity resurgence that began in the 1990s. +This leads to the fourth type: entrepreneurial capitalism . +Economies in which dynamism comes from new firms historically have commercialized the radical innovations that keep pushing out the production-possibility frontier. +Examples from the last two centuries include such transformative products and innovations as railroads, automobiles, and airplanes; telegraph, telephones, radio, and television; air conditioning; and, as just noted, the various technologies responsible for the IT revolution, including both mainframe and personal computers, routers and other hardware devices, and much of the software that operates them. +To be sure, no economy can realize its full potential only by having entrepreneurial firms. +The optimal mix of firms contains a healthy dose of large enterprises, which have the financial and human resources to refine and mass-produce radical innovations, along with newer firms. +The Paracetamol Dilemma +Substitution of paracetamol for aspirin, researchers proposed, may have led to an enhanced allergic immune response, thereby increasing susceptibility to asthma and other allergic disorders. +Since then, a number of epidemiological studies have reported an association between asthma and exposure to paracetamol in the womb, in childhood, and in adulthood. +These studies led to the suggestion that the use of paracetamol may represent an important risk factor in the development of asthma. +The latest evidence to support this hypothesis comes from a large international epidemiological study of childhood asthma that was recently published in the medical journal The Lancet . +This analysis, from the International Study of Asthma and Allergies in Childhood (ISAAC), involved more than 200,000 six- and seven-year-old children from 73 centers in 31 countries. +The children's parents or guardians completed written questionnaires about current symptoms of asthma, rhinitis (hayfever), and eczema, and about several risk factors, including use of paracetamol for fever in the child's first year of life and frequency of paracetamol use in the past 12 months. +The study identified that the reported use of paracetamol for fever in the first year of life was associated with symptoms of asthma in the six- and seven-year-old children. +The association was present in all major regions of the world, with an estimated 46% increased risk following adjustment for other risk factors. +A dose-dependent association between asthma symptoms at 6-7 years and paracetamol use in the previous 12 months was also observed. +Similar associations were observed between the use of paracetamol and the risk of severe asthma symptoms. +The proportion of asthma cases that could be attributed to exposure to paracetamol was calculated to be between 22% and 38%. +Paracetamol use both in the first year of life and in children aged 6-7 was also associated with an increased risk of symptoms of rhinitis and eczema. +This suggests that the potential effect of paracetamol is not restricted to the airways and may affect a number of organ systems. +Identifying the potential mechanisms that might underlie the association between paracetamol and asthma (and other allergic disorders) was not a part of this study. +But other researchers have proposed a number of plausible mechanisms, primarily related to paracetamol's negative effect on the body's ability to withstand oxidant stress and its potential enhancement of the allergic immune response. +The authors emphasised that causality could not be established from a retrospective study of this design due to the numerous potential biases that may confound the association.  For example, it is known that viral respiratory tract infections in infancy such as respiratory syncytial virus (RSV) are associated with an increased risk of asthma in later childhood and that paracetamol use for such episodes could have caused confounding in the study. +The study has contributed to the debate as to whether it is beneficial to treat fever in children, an issue comprehensively reviewed by Fiona Russell and colleagues in the Bulletin of the World Health Organization. +They propose that the available scientific evidence suggests that fever is a universal, ancient, and usually beneficial response to infection, and that its suppression under most circumstances has few if any demonstrable benefits.  +On the contrary, they suggest that suppressing fever may occasionally produce harmful effects, and conclude that widespread use of drugs to reduce fever should not be encouraged. +They recommend that in children their use should be restricted to situations of high fever, obvious discomfort, or conditions known to be painful.  +What is agreed is the need for randomized controlled trials of the long-term effects of repeated use of paracetamol in children. +Only then will it be possible to develop evidence-based guidelines for its recommended use. +Pending the results of such research, paracetamol remains the preferred drug to relieve pain and fever in childhood, to be used in accordance with WHO guidelines, which recommend that it should be reserved for children with a high fever (38.5Co or above). +The use of aspirin in young children is contraindicated, owing to the risk of Reye's syndrome, a rare but serious complication. +Paracetamol also remains the preferred drug to relieve pain or fever in children or adults with asthma, because aspirin or other non-steroidal anti-inflammatory drugs may provoke attacks of asthma in susceptible people with this condition. +The False Promise of Global Governance Standards +The notion of a single set of criteria to evaluate the governance of publicly traded firms worldwide is undoubtedly appealing. +Both investors and publicly traded firms are operating in increasingly integrated global capital markets. But the quest for a single set of global governance standards is misguided. +Yes, over the last decade, there has been growing use of global governance standards, largely developed in the United States, to assess how countries and companies around the world protect minority investors. +But these efforts have overlooked fundamental differences between controlled companies, which have a controlling shareholder, and widely held firms that lack such a controller. +While widely held firms dominate the capital markets of the US and the UK, controlled companies dominate in most other countries. +Widely held and controlled companies differ considerably in the governance problems their investors face. +In widely held firms, the concern is about opportunism by managers, who exercise de facto control; in controlled firms, the concern is about opportunism by the controlling shareholder at the expense of minority shareholders. +Because the basic governance problems in the two types of firms are considerably different, arrangements that benefit investors in widely held firms might be irrelevant or even counterproductive in controlled firms, and vice versa. +As a result, applying a single standard for assessing investor protection worldwide is bound to miss the mark with respect to widely held firms, controlled firms, or both. +Consider, for example, the Corporate Governance Quotient system, developed by the US firm RiskMetrics, the world's dominant shareholder advisory firm. +RiskMetrics' system, which is used by institutional investors around the world, attaches considerable weight to the arrangements governing contests for control. +These arrangements are, indeed, important for investors in widely held firms. +When a company has a controlling shareholder, however, control contests are not possible, and the arrangements governing such contests are thus irrelevant. +Investors and public officials in countries where controlled companies dominate should stop using global governance standards based on the designers' experience with widely held firms in the US. +Rather, they should strive to develop standards appropriate for controlled firms. +Most obviously, assessments of controlled companies should not give significant weight to arrangements governing contests for corporate control. +Similarly, arrangements that make the firm's board of directors more responsive to the wishes of a majority of shareholders, such as making it easier for shareholders to replace directors, can serve the interests of investors in widely held firms, but are counterproductive for investors in controlled firms. +In controlled firms, where the concern is diversion from minority shareholders, making directors even more responsive to the controller will likely make minority investors still more vulnerable. +Moreover, in countries that have many controlled firms, close attention should be paid to related-party transactions and to the taking of corporate opportunities -- the main ways in which value may be diverted from minority investors in such firms. +To address such problems, arrangements that enable a minority of shareholders to veto related party transactions -- arrangements which are not warranted in widely held firms -- could well be valuable. +Finally, when assessing controlled companies, the independence of directors should not be judged largely by looking at the extent to which they are independent of the company on whose board they serve. Rather, considerable attention should be given to their independence from the controlling shareholder. +To improve corporate governance and investor protection, public officials and investors in countries whose capital markets are dominated by controlled companies should be wary of global governance standards developed for US companies. +They should focus on the special problems of controlled companies and on the rules that would work best for protecting smaller investors in such companies. +Toxic Tests +Many people have inferred from this sequence of events that US banks -- which are critical to both the American and world economies -- are now out of trouble. +But that inference is seriously mistaken. +In fact, the US stress tests didn't attempt to estimate the losses that banks have suffered on many of the "toxic assets" that have been at the heart of the financial crisis. +Nevertheless, the US model is catching on. +In a meeting this month, finance ministers of G-8 countries agreed to follow the US and perform stress tests on their banks. +But, if the results of such tests are to be reliable, they should avoid the US tests' fundamental flaw. +Until recently, much of the US government's focus has been on the toxic assets clogging banks' balance sheets. +Although accounting rules often permit banks to price these assets at face value, it is generally believed that the fundamental value of many toxic assets has fallen significantly below face value. +The Obama administration came out with a plan to spend up to $1 trillion dollars to buy banks' toxic assets, but the plan has been put on hold. +It might have been hoped that the bank supervisors who stress-tested the banks would try to estimate the size of the banks' losses on toxic assets. +Instead, supervisors estimated only losses that banks can be expected to incur on loans (and other assets) that will come to maturity by the end of 2010. They chose to ignore any losses that banks will suffer on loans that will mature after 2010. +Thus, the tests did not take into account a big part of the economic damage that the crisis imposed on banks. +Although we don't yet have an estimate of the economic losses the stress tests have chosen to ignore, they may be substantial. +According to a recent report by Deutsche Bank, for example, borrowers will have difficulty refinancing hundreds of billions of dollars of commercial real estate loans that will mature after 2010. +Rather than estimate the economic value of banks' assets -- what the assets would fetch in a well-functioning market -- and the extent to which they exceed liabilities, the stress tests merely sought to verify that the banks' accounting losses over the next two years will not exhaust their capital as recorded in their books. +As long as banks are permitted to operate this way, the banks' supervisors are betting on the banks' ability to earn their way out of their current problems -- even if the value of their assets doesn't now significantly exceed their liabilities. +But doesn't the banks' ability to raise new equity capital indicate that, regardless of whether the stress tests are reliable, investors believe that their assets' value does significantly exceed their liabilities? +Not at all. +Consider a bank with liabilities of $1 billion. +Suppose that the bank has assets with long maturity and a face value of $1.2 billion but whose current economic value is only $1 billion. +Although the value of the bank's assets doesn't exceed its liabilities, depositors won't flee as long as the government backs the bank by guaranteeing its deposits. +If in two years the bank's assets have a 50-50 chance of appreciating to $1.2 billion or declining to $0.8 billion, the bank will be able to raise new equity capital: new investors will be willing to pay for the prospect of sharing in the excess of the value of assets over obligations if things turn out well. +To get a good picture of banks' financial health, estimating the value of their toxic assets is unavoidable. +Regulators could encourage each bank to sell part of its toxic portfolio and extrapolate the portfolio's value from the price obtained in such a sale, or they could attempt to estimate the portfolio's value as well as they can on their own. +Either way, the true value of banks' toxic assets must be estimated before concluding that banks are armed with sufficient capital to carry out their critical roles. +The kind of stress tests that the US conducted, and that other countries are being urged to emulate -- and the ability of banks to raise additional equity capital -- cannot provide a basis for such a conclusion. +Let the Good Times Roll Again? +Not without reform. +Indeed, one key lesson of the financial crisis is that an overhaul of executive compensation must be high on the policy agenda. +Indeed, pay arrangements were a major contributing factor to the excessive risk-taking by financial institutions that helped bring about the financial crisis. +By rewarding executives for risky behavior, and by insulating them from some of the adverse consequences of that behavior, pay arrangements for financial-sector bosses produced perverse incentives, encouraging them to gamble. +One major factor that induced excessive risk-taking is that firms' standard pay arrangements reward executives for short-term gains, even when those gains are subsequently reversed. +Although the financial sector lost more than half of its stock-market value during the last five years, executives were still able to cash out, prior to the stock market implosion, large amounts of equity compensation and bonus compensation. +Such pay structures gave executives excessive incentives to seek short-term gains -- say, by making lending and investment decisions that would improve short-term earnings -- even when doing so would increase the risks of an implosion later on. +Following the crisis, this problem has become widely recognized, including by business leaders such as Goldman Sachs' CEO Lloyd Blankfein. +But it still needs to be effectively addressed: Goldman's recent decision to provide record bonuses as a reward for performance in the last two quarters, for example, is a step in the wrong direction. +To avoid rewards for short-term performance and focus on long-term results, pay structures need to be re-designed. +As far as equity-based compensation is concerned, executives should not be allowed to cash out options and shares given to them for a period of, say, five years after the time of "vesting" -- that is, the point at which the options and shares have been "earned" and may not be taken away from the executive. +An executive's inability to cash out shares and options for a substantial period would tie his or her payoff to long-term shareholder value. +The length of this period should be fixed, and should not depend on actions or conditions that are at least partly under executives' control. +By contrast, prohibiting executives from cashing out shares and options until they leave the firm would provide executives who have accumulated shares and options with a large monetary value with counter-productive incentives to depart. +Similarly, bonus compensation should be redesigned to reward long-term performance. +For starters, the use of bonuses based on one-year results should be discouraged. +Furthermore, bonuses should not be paid immediately, but rather placed in a company account for several years and adjusted downward if the company subsequently learns that the reason for awarding a bonus no longer holds up. +In addition to the excessive focus on short-term results, a second important source of incentives to take excessive risks has thus far received little attention. +The payoffs of financial-sector executives were tied to highly leveraged bets on the value of their firms' capital. +Why Financial Pay Shouldn't be Left to the Market +Perhaps not surprisingly, many financial bosses are up in arms over such moves. +They claim that they need the freedom to set compensation packages in order to keep their most talented people -- the ones who will revive the world's financial system. +So, should governments step back and let financial firms reform themselves? +The answer is clearly no. +In the post-crisis financial order, governments must take on the role of monitoring and regulating pay in financial firms; otherwise, the perverse incentives that contributed to the current crisis could easily recur. +It is important to distinguish between two sources of concern about pay in financial firms. +One set of concerns arises from the perspective of shareholders. +Figures recently released by New York's attorney general, Andrew Cuomo, indicate that nine large financial firms paid their employees aggregate compensation exceeding $600 billion in 2003-2008 -- a period in which their aggregate market capitalization substantially declined. +Such patterns may raise concerns among shareholders that pay structures are not well designed to serve their interests. +Even if financial firms have governance problems that produce pay decisions deviating from shareholder interests, however, such problems do not necessarily warrant government regulation of those decisions. +Such problems are best addressed by rules that focus on improving internal governance processes and strengthening investors' rights, leaving the choices that determine compensation structures to corporate boards and the shareholders who elect them. +But pay in financial firms also raises a second important source of concern: even if compensation structures are designed in the interests of shareholders, they may produce incentives for excessive risk-taking that are socially undesirable. +As a result, even if corporate governance problems in financial firms are fully addressed, a government role in regulating their compensation structures may still be warranted. +Suppose that most financial firms could be relied upon by regulators to be run in the interest of their shareholders. +Would this justify exempting these firms from existing regulations that constrain their decisions with respect to lending, investment, or capital reserves? +Clearly not, because shareholders do not bear the full costs of a firm's collapse, and, as the recent crisis demonstrates, the bill for such a downfall must be picked up, at least in part, by taxpayers and the economy. +So shareholders' interests might sometimes be served by business decisions that are too "risky," and regulating such decisions is justified -- indeed, necessary. +Regulation of pay in financial firms is called for by the same reasons that justify the traditional regulations of the firms' business decisions. +The incentives generated by compensation structures determine how firms' managers behave within the boundaries permitted by such traditional, direct regulations. +And as traditional regulation of business decisions is bound to be imperfect, regulating compensation structures can be a useful additional tool to control the risks posed by financial firms' behavior. +If choices of compensation structures can be expected to affect financial firms' stability, regulating these choices can also be useful for protecting this stability. +Financial firms opposed to pay regulation will likely warn against "micro-managing" compensation, and argue that compensation choices must take into account information about each individual manager that regulators are almost certain to lack. +But pay regulation can improve matters without micro-management by setting general standards from which firms may not deviate but that still leave them with significant freedom to account for the individual circumstances of managers. +For example, regulatory standards could require equity-based plans to preclude managers from cashing out awarded shares and options during a certain minimum period after vesting. +In such a case, firms could still remain free to choose the number of shares and options awarded to any given manager, as well as to adjust somewhat the length of the post-vesting period during which cashing out would be precluded.  +Finally, those opposing pay regulation are certain to warn us about "unintended consequences." +But this warning should not carry the day. +We have experienced over the last several years the real and costly consequences of a compensation regime that left financial firms free to set their own pay structures. +Are we to believe that those consequences are preferable to the unintended consequences of pay regulation? +The effort to avoid the harm of flawed compensation decisions in the future should not be deterred by speculative arguments about unintended consequences. +Financial firms should not retain the freedom to create perverse incentives that put all of us at risk. +Should Bondholders be Bailed Out? +It is now widely expected that, when a financial institution is deemed "too big to fail," governments will intervene if it gets into trouble. +But how far should such interventions go? +For example, bondholders were fully covered in the bailouts of AIG, Bank of America, Citigroup, and Fannie Mae, while these firms' shareholders had to bear large losses. +The same was true in government bailouts in the United Kingdom, Continental Europe, and elsewhere. +Bondholders were saved because governments generally chose to infuse cash in exchange for common or preferred shares -- which are subordinate to bondholders' claims -- or to improve balance sheets by buying or guaranteeing the value of assets. +A government may wish to bail out a financial institution and provide protection to its creditors for two reasons. +First, with respect to depositors or other creditors that are free to withdraw their capital on short notice, a protective government umbrella might be necessary to prevent inefficient "runs" on the institution's assets that could trigger similar runs at other institutions. +To enable small creditors to use the financial system, it might be efficient for the government to guarantee (explicitly or implicitly) their claims. +On Censorship in Hong Kong +No jackboots are to be seen marching through Hong Kong's sleek shopping malls, but a distinct whiff of totalitarianism is in the air. +The tell-tale phrases are on everyone's lips: talk of the need for anti-subversion laws, press controls, strong leadership, of adjusting to Hong Kong's new reality. +Everyone looks to the great Northern neighbor for direction and mutters about expediency. +Most of the world lost interest in Hong Kong after 1997 when the "Anschluss" with China did not instantly deliver vast changes. +Over the last year or two, however, the pace of integration into the People's Republic of China has quickened decisively. +Life at the South China Morning Post , Hong Kong's leading English language newspaper, and so a visible political gauge, offers a window into what is going on all across Hong Kong's institutions. +The atmosphere at the paper began to darken noticeably as one after another of its leading editorial lights was pushed out. +It would be an exaggeration to compare the situation to the way the Nazis took over institutions in Germany in the 1930s, and to how people back then fell in line, because no one is disappearing into concentration camps. +Hong Kong remains a rich and prosperous place. +Yet the dictatorship in Beijing has made its presence felt, if only through proxies and collaborators. +Before I chose to protest to the editor who sacked me a week ago, I was guilty of complicity too. +I stayed silent when the paper's popular cartoonist (Larry Feign) was unjustly dismissed, and remained silent even after its best satirical writer (Nury Vittachi) was sacked. +I only became uneasy when the British editor (Jonathan Fenby) was fired and replaced. +"I am still OK," I reasoned. "They still let me write what I want..." +My job as bureau chief in Beijing isolated me from the struggles in the head office in distant Hong Kong. +Besides, working in Beijing is itself a constant struggle of conscience and compromise. +Foreign reporters are under constant surveillance and risk compromising their contacts. +That means one begins to avoid tough subjects, like the repression of Falun Gong and its followers. +Gradually, you also noticed a change in the behavior of your HK colleagues. +As the government proposed to introduce an anti-subversion law and strengthened its control over the civil service, they became guarded in what they said and tightlipped about mentioning the pressures from above. +Whispered rumors of daily interference from management were only confirmed in private. +Some people responded opportunistically, seeing the way to promotion open as talented colleagues disappeared. +So the internationally recognized editor, Willy Lam, was replaced by a mainlander, Wang Xiangwei. +Those who organized this coup hoped that it would lead to greater things for themselves; those who signed a petition of protest were fired not long after. +Management then began to quietly spread word that the paper needed people able to "negotiate" with the sensibilities of the Communist Party. +Curiously, some officials in Beijing complained about the crude tactics of those sent to run Hong Kong. +It seemed the urge to collaborate actually ran ahead of the party's demands. +The paper's tone began to change, becoming increasingly deferential toward China's rulers. +Reporting became blander and blander. +Management talked of the virtues of writing to allow readers to read between the lines. +These changes speeded up over recent months. +Even the office photographer began to notice different photographic choices. +The Hong Kong and Macao Affairs Office took charge of the paper's correspondents based on the mainland, demanding that they be replaced by ethnic Chinese. +Then they began to offer guidance on reporting in exchange for favors like access to officials. +Despite the obviousness as to where all this was leading, individuals responded differently. +Some continued to deny what was happening, and became indignant if the issue was raised. Others reasoned that if they kept their head down and compromised, the crisis would pass. +A sort of listlessness now grips Hong Kong, particularly the civil service. +The business sector remains unaffected and continues to talk optimistically of the prospects opened up by closer integration with the mainland. +But Hong Kong is surrendering the uniqueness and exceptional position it once held over the Chinese world. +As other Chinese cities become more free and more confident, Hong Kong is submissively abandoning the freedoms it once held with pride. +In 1997, China promised to preserve these freedoms for 50 years under the one county, two systems mantra. +Now Hong Kong itself is undoing the system. +Many of its tycoons (one of whom, Robert Kuok, controls the South Morning China Post ) are jettisoning their autonomy for the sake of business - even when such action is not requested. +They seem blind to the value of what they are sacrificing. +The intangibles of freedom will determine the vitality and future of Hong Kong. +Tragically, such losses never appear on the profit sheets measured by accountants. +Damming China's Rivers +Yunnan is home to three great Asian rivers: the Mekong, the Salween (or Nu), and the Jinsha. +All start on the great Tibetan Plateau and flow in parallel through the northwest corner of the province into Southeast Asia. +They are China's last pristine rivers, but are now slated for sacrifice to satisfy the country's insatiable thirst for power. +Plans call for dozens of dams to be placed along their serpentine courses through the mountains of Yunnan. +I had the chance to see one of these rivers -- and the proposed site of one of the country's most controversial dams -- on a recent trek through the stunning Tiger Leaping Gorge, north of the town of Lijiang in northern Yunnan. +On its descent from the roof of the world, the Jinsha River, tributary of the mighty Yangtze, cascades through this ten-mile gorge on its way to Shanghai and the East China Sea. +If, or rather when, the river is dammed, it will help power the cities and factories of coastal China. +The sun was high above white-crowned Jade Dragon Snow Mountain when my guide pointed down the gorge at the brown waters churning thousands of feet below. +"That's where they will build the dam," Xiao Chun, a 17-year-old Naxi, one of Yunnan's 22 ethnic minorities, said. +"It will be very bad for us. +There will be a lot of pollution. +I hope it doesn't happen." +The dam will have its uses. +Dianchi Lake near the provincial capital, Kunming, is so shrunken and polluted that the city faces a serious water shortage. +Water from the Tiger Leaping Gorge will be diverted to flush out Dianchi Lake, without which Kunming will not prosper. +As China seeks to keep its economic engine running, dams and hyrdopower do represent a cleaner alternative to coal. +China plans to double its hydropower capacity to over 120 GW by 2010 and to build more hydropower-projects for at least another 20 years. +Experts reckon that only a quarter of China's hydropower has yet been tapped. +Yet the costs may outweigh the benefits. +Northwestern Yunnan is one of the world's most biologically diverse areas, home to half of China's animal species and a quarter of its plant species. +Whatever portions of this ecosystem that the dams don't submerge are certain to be disrupted in potentially disastrous ways. +A more immediate concern is the immense number of people who will need to be resettled when reservoirs inundate the region's densely populated valleys. +Since 1949, 16 million people have been displaced by reservoirs. +Some 10 million of them still live in poverty. +At Tiger Leaping Gorge, where a mere 100,000 residents will have to be relocated, residents fear that they will be ordered to move up the steep mountainsides to open marginal land at 6,000 to 9,000 feet. +Dam opponents, including vocal indigenous environmental groups, have waged a seemingly successful battle to protect Tiger Leaping Gorge and the Salween (the Nu River). +In early 2005, three years after a new law on environmental impact assessments (EIA's) was passed, the State Environmental Protection Bureau (SEPA), ordered the halt of 30 large projects, including 26 hydropower plants that had failed to submit proper EIA's. +Among the suspended projects was the first dam across the Nu/Salween. +These efforts appear to have catalyzed greater environmental sensitivity among the country's leaders. +The government recently called for more balanced development, even proposing a "green index" to measure growth. +Indeed, Prime Minister Wen Jiabao has declared that he wants to see more "scientific development" in China's approach to its problems, and even called for a temporary halt of the Salween (Nu) River dam. +Environmentalists were even permitted to take part in a public hearing on the Tiger Leaping Gorge project, a first for China. +Unfortunately, the Communist Party's tolerance of such civic activity blows hot and cold. +The Party, alarmed by the "color revolutions" that toppled post-Soviet leaders in Georgia, Ukraine, and Kyrgyzstan, is cracking down on domestic non-government organizations for fear that they, too, might become catalysts for popular uprisings. +Support for "green development" inside central government organizations like SEPA offers little assurance of an effective countervailing force. +"We must sharpen our teeth," Pan Yue, SEPA's deputy director, said when the agency halted the dam projects. +But China has seen a steady decentralization of power in recent years, making it harder for SEPA to affect policies at the regional and local levels. +Indeed, local governments appear less afraid of Beijing's bite than before. +When boundaries were negotiated for Three Parallel Rivers Park -- designated a UNESCO World Heritage site in 2003 -- local authorities won a fight to exclude Tiger Leaping Gorge, knowing that a dam there would triple tax revenues. +China urgently needs to maintain an annual growth rate of over 9% as a bulwark against social disorder. +As a result, however, China is slowly consuming itself, and no major part of China may remain pristine. +The Poverty of Thinking About Poverty +The World Summit on Sustainable Development in Johannesburg is, as expected, contemplating numerous bold promises, but the meeting itself is doomed to be an exercise in futility. +For if we mean by `development' human development in its widest sense, the only development that is sustainable is one that enables people to live together in peace and with respect for basic human rights. +There is very little scope for international action to eliminate the violation of these rights in many - if not most - countries of the world today, particularly those that are trying to turn the `Earth Summit' into a sounding board for criticism of the failure of advanced countries to do more to eradicate world poverty or to protect the environment. +At least we should welcome the fact that these two topics - poverty and the environment - are the two main themes of the Earth Summit. +This is a retreat from the usual fixations of the earlier sustainable development pressure groups, such the supposed exhaustion of raw materials for growth, or the sheer technical inability of the world to feed its expanding population, or biodiversity. +The wild exaggerations of environmental activists are at last being seen through by most informed commentators. +The laws of economics state that when the demand for a commodity begins to outstrip supply the price will rise. Leaving aside short-term speculative markets, demand will then decrease and supply (including the supply of substitutes) will increase. +These laws have ensured that none of the doomsday scenarios of the 1960s and 1970s - remember the forecasts of the "Club of Rome"? - have come to pass. +Indeed, in the long run, prices of almost all minerals have followed a downward trend. +The world can never run out of any mineral resources. +Similarly alarmist predictions about imminent worldwide famine have also been falsified. +Famines do occur, of course, but rarely, if ever, in genuinely democratic countries. +From the days of Soviet collectivization in the 1930s down to President Mugabe's racist policies in Zimbabwe today, famines result from civil wars or ideological lunacies. +Local climate change can, of course, exacerbate the situation, but given the scope for world trade and the existence of surpluses in many food producing areas, democratic governments can deal with the consequences. +As for biodiversity, the most important species threatened with extinction today is the human race. +True, international action can help to deal with the twin problems of poverty and environmental degradation. +For example, rich countries should reduce agricultural subsidies and open up their markets more to Third World food exports. +International action can also help deal with global environmental problems. +There are many examples of such action, such as the Montreal Protocol to help reduce the threat to the ozone layer. +So it is unfortunate that America abandoned the Kyoto process for combating global warming, instead of trying to move that process toward sensible market-based solutions and away from the regulatory mechanism beloved of bureaucrats everywhere. +But a reduction in poverty and environmental degradation - such as lack of access to clean drinking water - that affect the lives of billions of people in the Third World will always depend chiefly on local policies. +These include, above all, increased respect for the rule of law, for property rights, for freedom for people to take advantage of their entrepreneurial spirit and to express their discontent with their lot, not to mention other basic freedoms set out in numerous international conventions to which almost all the countries participating in the Earth Summit are signatories and which many flagrantly ignore. +Greater respect for human rights is not, of course, merely a desirable means towards the ends of poverty reduction and environmental protection. It also happens to be an important - often the most important - item of human welfare and development. +The events of the last twelve months have surely driven home to most people that the most dangerous conflict facing humanity in the future is not the conflict between Man and the environment, but between Man and Man. +Unfortunately, given the respect accorded to national sovereignty, the scope for international action to improve respect for basic human rights in the many countries where they are violated is limited. +For this reason, whatever fine, ringing pronouncement, do emerge from the Earth Summit, they are doomed to failure. +New Europe Catches Old Europe's Cold +Two countries -- Hungary and Ukraine -- have already asked for large packages of support. +Several more could do so over the next month if frozen credit markets do not thaw. +If the situation continues until the end of the year, which cannot be ruled out, many more countries could experience serious banking crises. +Over the last two decades, Eastern Europe has undertaken wide-ranging reforms and embraced global financial integration. +Foreign, mostly European, banks have entered these markets with unprecedented speed and force. These banks have increasingly reached out to more risky small- and medium-sized enterprises and helped people buy their own houses and start new businesses. +But successful financial development is now coming back to haunt these countries. +Until now, the countries of emerging Europe withstood the global financial squeeze remarkably well, coping with the slowdown in important export markets and increased borrowing costs. +But no open economy can resist a complete shutdown of the lending markets. +Perhaps they became too dependent on cheap credit, but they were not alone in this respect. +Some foreign banks are now withdrawing liquid funds from subsidiaries in emerging Europe. +According to the National Bank of Russia, foreign banks withdrew more than $10 billion in that country in September alone. Other central banks make similar claims. +To be fair, Raiffeisen International has announced that it was supporting its Ukrainian subsidiary, Bank Aval, with an additional €180 million. +Whether other parent banks active in the region stand by their subsidiaries depends on how severe the crisis in Western Europe becomes. +But the Western European bailout packages could make the situation in emerging Europe worse. +While most parent banks in the region are likely to benefit from these measures, this does not necessarily translate into support for their foreign subsidiaries. +In fact, there is a serious risk that these bailouts will come at the expense of Eastern Europe. +Several governments have declared that taxpayer money cannot go into operations abroad. +Governments in emerging Europe should, of course, play their part in stabilizing their financial systems. +But at this point there are severe limits to what they can do. +Most do not have the financial clout to counter the extraordinary pressures from financial markets. +An offer by Hungary's government to extend a general guarantee of deposits or to ensure liquidity in interbank markets has limited credibility. +To survive this crisis, emerging Europe needs support from outside. +First and foremost, West European leaders must ensure that the crisis is resolved at the core, and many observers doubt that they have done enough. +Second, they must prevent the crisis measures already taken from discriminating against subsidiaries in Central and Eastern Europe, independently of whether they are within or outside the European Union. +Third, they must combine forces, as in Hungary, with international financial institutions in supporting these economies. +Georgia's experiences following its recent war with Russia offer a possible model. +The International Monetary Fund provided an emergency credit line to support the currency, the World Bank coordinated the relief effort (much of it financed by the United States and the EU), and the European Bank for Reconstruction and Development used its knowledge and resources to lead the effort to save the financial system. +The Georgia package is not a done deal, and circumstances elsewhere are different, but it shows that standard instruments can go a long way. +Yet more resources and new instruments will be needed. +The case of Hungary shows that the EU can tweak an existing instrument -- balance-of-payment support -- and use it creatively. +For non-EU countries, like Turkey and Ukraine, innovative ideas are also urgently needed. +There should be no doubt about what is at stake. +It is has been little noticed, but in the last few years, Eastern Europe, including Russia, surpassed the US and the United Kingdom as the euro zone's most important export markets. +Many of these markets now face slowdown or even negative growth. +Moreover, Western European companies have invested on a previously unimaginable scale. diff --git a/mosesdecoder/scripts/ems/example/data/nc-5k.fr b/mosesdecoder/scripts/ems/example/data/nc-5k.fr new file mode 100644 index 0000000000000000000000000000000000000000..e8ac93b5dc9acc24ef86078741ca7b531b64a40a --- /dev/null +++ b/mosesdecoder/scripts/ems/example/data/nc-5k.fr @@ -0,0 +1,5000 @@ +Le dernier numéro de Moucharraf ? +Le Général Moucharraf est apparu sur la scène nationale le 12 octobre 1999, lorsqu'il a forcé le gouvernement élu à démissionner et annoncé son projet ambitieux de « construction d'une nation ». +Bon nombre de Pakistanais -- qui avaient perdu toute illusion sur la classe politique du pays -- sont restés silencieux, pensant qu'il tiendrait ses promesses. +Le 11 septembre 2001, les attaques terroristes sur l'Amérique ont placé Moucharraf sur le devant de la scène internationale, alors qu'il décidait de soutenir les Etats-Unis dans la guerre contre la terreur, plutôt que les Talibans. +Moucharraf a pris des mesures contre des militants religieux au Pakistan et contre ceux qui luttent contre les forces indiennes au Cachemire. +Le Pakistan a donc été récompensé par l'assistance et les armes des États-Unis. +Pour mieux redistribuer ses cartes, Moucharraf a envoyé l'armée pakistanaise dans les zones ethniques qui longent l'Afghanistan, pour la première fois depuis l'indépendance du Pakistan. +Les opérations contre les forces des Talibans et d'Al‑Qaeda ont obtenu des résultats mitigés. +Si les Etats-Unis voient Moucharraf comme un agent de changement, ce dernier n'est jamais parvenu à avoir une légitimité dans son propre pays, où ses politiques ont toujours été considérées comme un tissu de contradictions. +Par exemple, il a conclu des alliances avec des forces politiques islamistes (qui en 2004 ont voté pour des changements constitutionnels légitimant sa position et ses actions) ; parallèlement, il remplaçait les dirigeants des partis politiques traditionnels modérés, tout en affirmant défendre la « modération éclairée ». +Une série d'opérations militaires mal planifiées dans les zones ethniques ont davantage compliqué la situation dans une région frontalière instable. +En mars dernier, Moucharraf a fait l'avancée la plus éhontée en destituant Iftikhar Chaudhry, président de la Cour suprême. +A la surprise générale, la communauté judiciaire du pays a organisé un mouvement à l'échelle nationale pour que le président réintègre son poste. +Des centaines de milliers de gens ordinaires ont exigé l'État de droit et la suprématie de la constitution, enhardissant le corps judiciaire et changeant la dynamique politique du pays. +Dans un arrêt historique que Moucharraf n'a pas eu d'autre choix que d'accepter, la Cour suprême a elle‑même réintégré son président en juillet. +Ragaillardis, les magistrats ont donc continué à donner tort aux décisions du gouvernement et à embarrasser celui-ci -- en particulier ses services des renseignements. +Les fonctionnaires ont été tenus pour responsables d'actions hors‑la-loi, allant du passage à tabac de journalistes, à des détentions illégales pour des raisons de « sécurité nationale ». +Moucharraf -- et ses alliés politiques -- a tenté de s'adapter à cette nouvelle réalité, mais a perdu patience lorsque la Cour suprême a protesté contre sa décision de briguer la présidence. +Selon la constitution (promulguée à l'origine en 1973 par un parlement élu), un militaire en activité ne peut être mandataire élu. +Moucharraf n'était pas disposé à abandonner ses fonctions militaires, mais voulait aussi être président civil. +Tandis qu'il annonçait la démission de son poste militaire « s'il » était élu président, son passé lourd de promesses non tenues a échaudé le corps judiciaire. +Ces dernières semaines, les procédures de la Cour ont rendu Moucharraf nerveux : les onze magistrats du siège auraient pu facilement se prononcer contre lui. +Se trouvant dans une impasse juridique, il a décidé d'abandonner la constitutionnalité, démis les hauts magistrats de leurs fonctions à la Cour suprême et aux juridictions supérieures régionales et imposé des restrictions aux médias. +Des avocats, des défenseurs des droits de l'homme et des dirigeants politiques ont depuis lors été arrêtés. +Ces mesures font l'objet d'un ressentiment généralisé parmi la population. +Plutôt que d'assumer la responsabilité d'avoir dégradé la situation en matière de sécurité (comme en témoignent les attentats suicides répétés) et la « talibanisation » croissante des zones ethniques, Moucharraf a accusé le corps judiciaire et les médias. +Dans certains cas, le militantisme judiciaire était certes évident (bien que dans le cadre du droit constitutionnel) et les medias ont aussi fait des erreurs. Pourtant, même en faisant travailler notre imagination, on ne peut assimiler ces faits à de l'extrémisme religieux ou à un soutien à la lutte armée. +Il est peu probable que la dernière tactique de Moucharraf porte ses fruits, étant donné que le soutien public est au plus bas. +Les forces armées du Pakistan -- cibles répétées d'attentats suicide -- sont démoralisées. +Il est difficile de les imaginer se tenir aux côtés de Moucharraf en cas de conflit civil. +On ne peut pas non plus s'attendre à ce qu'un Moucharraf affaibli, assailli et désorienté combatte efficacement les partisans islamiques de la lutte armée, ni instaure la stabilité politique au Pakistan. +Les partis politiques de l'opposition se rapprochent les uns des autres, et l'ancien Premier Ministre Benazir Bhutto, malgré l'avancement des négociations pour partager le pouvoir avec Moucharraf, a vivement condamné ses actions. +On s'attend à ce que les entités des droits de l'homme, les associations de médias et d'avocats ne tiennent pas compte de l'urgence, ce qui les opposera aux forces de sécurité. +Les terroristes tireront probablement profit de la situation en attaquant l'armée préoccupée et les forces politiques de Moucharraf. +Si les protestations et les menaces de violences perdurent, il n'est pas impossible que les hauts responsables militaires décident de renvoyer Moucharraf chez lui -- décision qui ne serait pas sans précédent dans l'histoire pakistanaise d'une turbulence chronique. +Récit d'un meurtre au Pakistan +La politicienne a payé de sa vie pour avoir bravé les extrémistes de toutes tendances -- d'Al‑Qaida et des Talibans aux partis religieux et aux militaires purs et durs. +Héritière de Zulfikar Ali Bhutto, légendaire leader démocratique pendu par le gouvernement du général Muhammad Zia-ul-Haq en 1979, Benazir est devenue à un jeune âge symbole de résistance -- languissant en prison et s'exilant dans les années 1980. +Son père a contribué à autonomiser les défavorisés et à renforcer les droits des citoyens dans un contexte politique féodal et de gouvernement militaire. +Plutôt que de s'incliner devant la junte militaire, il a choisi la potence. +Quelques heures avant sa pendaison, Benazir a été autorisée à le voir pour la dernière fois. Dans son autobiographie, elle écrit : « dans sa cellule de condamné à mort, je lui ai promis de poursuivre son œuvre ». +A n'en pas douter, elle a tenu sa promesse. +Son premier mandat de premier ministre (1988-90) fut bref et désorganisé. +Le Lieutenant Général Hamid Gul, ancien chef de la Direction des renseignements inter-services (Inter‑Services Intelligence), a confirmé avoir soutenu une alliance de partis politiques de droite pour l'empêcher d'obtenir la majorité parlementaire. +Les informations sur le programme nucléaire du Pakistan et les opérations de l'ISI en Afghanistan étaient hors de sa portée. +Son deuxième mandat (1993-96) dura plus longtemps et fut meilleur. Pourtant, une fois de plus, son gouvernement succomba prématurément à la suite d'accusations de mauvaise gestion et de corruption. +En réalité, les machinations des services des renseignements y sont pour quelque chose. +L'armée a développé une méfiance vivace à son égard, au vu de sa prise de position pour la paix en Inde et de son rôle de chef de file pro-occidental bénéficiant du soutien populaire. +Après l'exile que Benazir Bhutto s'était imposé durant près d'une décennie, son retour au Pakistan en octobre a marqué un nouveau départ politique. +Le Pakistan a changé : la dictature militaire et l'extrémisme religieux au nord chamboulent le tissu social. +Une tentative d'entente avec Musharraf, soutenue par l'Occident -- notamment le Royaume-Uni et les États-Unis -- , a facilité un retour salué par des centaines de milliers de personnes malgré l'accueil des terroristes et leur série d'attentats suicide. +Si ses contacts avec le gouvernement militaire ont attiré les critiques, Benazir Bhutto est restée catégorique sur le fait que la démocratie n'était possible que si Musharraf abandonnait son poste militaire, devenait un chef d'État civil et organisait des élections libres et justes. +A la consternation de forces démocratiques, Benazir Bhutto a tenu bon même après que Musharraf a imposé la loi martiale le 3 novembre et démis les grands juges de leurs fonctions pour assurer sa réélection. +Benazir Bhutto a même convaincu d'autres dirigeants de participer aux élections prévues le 8 janvier, qu'elle voyait comme une occasion de s'opposer aux extrémistes religieux sur la place publique. +En dépit de menaces de mort, elle a saisi sa chance et s'est rendue dans l'ensemble du pays pour défendre la cause d'un Pakistan démocratique et pluraliste. +On peut comprendre que des extrémistes religieux comme Al-Qaida et les Talibans la prenne pour cible, et que le gouvernement juge impossible de la défendre contre une attaque suicide. +Cependant, Benazir Bhutto aurait été assassinée par un tireur isolé avant que le terroriste ne se suicide. +Pour le peuple pakistanais, en particulier les partisans de la politicienne, ce sont les services des renseignements, seuls ou en collaboration avec les extrémistes, qui auraient finalement décidé de l'éliminer. +Que le gouvernement soit ou non impliqué, le fait est que le Pakistan a perdu un leader dont il a cruellement besoin. +L'avenir du Pakistan étant en jeu, l'aide et le soutien de l'Occident joueront un rôle crucial. Mais il faudra alors admettre que Musharraf n'est pas le seul dirigeant capable de résoudre les nombreux problèmes du pays ni de remporter la guerre contre la terreur. +Bien au contraire, en entretenant le climat actuel d'instabilité et d'incertitude, Musharraf est l'un des plus grands problèmes du Pakistan. +Exorciser le fantôme de Musharraf +Contrairement à l'Irak et à L'Afghanistan, le Pakistan, qui fête ses soixante ans d'existence, n'est pas une démocratie récente. Mais les clivages ethniques, des institutions faibles et l'extrémisme dans le nord du pays entretiennent l'instabilité. +Et alors que le nouveau gouvernement prend ses marques et définit ses priorités, l'Occident, et les Etats-Unis en particulier, doivent réévaluer l'impact de leurs liens avec le Pakistan. +Le nouveau Premier ministre pakistanais, Yousaf Gilani, est un politicien chevronné et, peut-être plus important, est issu d'une famille d'origine soufie, ce qui, compte tenu de la tradition de tolérance soufie, ne peut être qu'un bon présage. +Gilani a déclaré sans équivoque lors de son discours d'investiture que la lutte contre le terrorisme était une priorité absolue, et sa première décision a été d'ordonner la libération des juges assignés à résidence par Musharraf. +Le répit observé dans l'horrible vague d'attentats suicide depuis la formation du nouveau gouvernement est également encourageant. +Mais la lune de miel tire à sa fin. +À Multan, la ville natale de Gilani, des émeutiers s'en sont déjà pris à des bureaux du gouvernement et à des banques pour protester contre les coupures d'électricité. +Deux politiciens connus de l'opposition, un ministre et un membre du cabinet fédéral de l'ancien gouvernement Musharraf, ont été molestés en public, mettant en question le contrôle gouvernemental sur la loi et l'ordre dans le pays. +Musharraf semble jusqu'à présent avoir accepté tranquillement son changement de statut -- même s'il n'a guère le choix. +La nouvelle direction politique, que ce soit au Parlement ou ailleurs, a tout fait pour éviter une collision frontale avec l'ancien président. +Il est intéressant de noter qu'en pleine période de transition politique, Musharraf a effectué une visite d'une semaine en Chine pour défendre le projet de construction d'un pipe-line de pétrole et de gaz entre la Chine et le Golfe persique qui traverserait le Pakistan. +La question qui sous-tend cette visite est de savoir si Musharraf cherchait à faire comprendre aux Etats-Unis que les priorités du Pakistan étaient en train de changer. +Il est très probable que le renouveau de la démocratie au Pakistan aura une incidence sur les relations avec les Etats-Unis. +D'un autre côté, les liens de l'armée pakistanaise avec l'administration américaine semblent être stables et l'alliance stratégique avec les Etats-Unis devrait être reconduite, avec peut-être quelques nuances sur la manière de mener la « guerre contre le terrorisme ». +Mais les politiciens pakistanais seront sans doute influencés par leur opinion publique, qui est généralement très critique des choix politiques américains. +Il n'en reste pas moins que les intérêts à long terme des Etats-Unis dans la région seront mieux servis par la consolidation des forces démocratiques au Pakistan. +La proposition d'augmenter l'aide au développement et à l'éducation au Pakistan, récemment présentée au Sénat américain, pourrait permettre aux Etats-Unis de regagner leur capital de sympathie. +Dans le même temps, le président George W. Bush a déclaré que « si un autre attentat, similaire à celui de 11 septembre, était en cours de préparation, il l'était probablement au Pakistan et pas en Afghanistan ». +Il reste à savoir si cette évaluation des services des renseignements américains est basée sur des informations crédibles ou pas. +Il est également possible que cette affirmation soit motivée par des raisons électorales. +Mais il est significatif que Bush ait choisi de faire cette remarque au moment de la période de transition politique au Pakistan. +Le Pakistan doit toutefois prendre cette remarque au sérieux, quelles que soient les motivations de Bush. +Le nouveau gouvernement doit rapidement définir une politique pour contrer le terrorisme. +Les derniers mois avaient été entachés par des dizaines d'attentats suicide et autres activités terroristes -- le prix à payer pour les erreurs passées du Pakistan, et de l'Occident. +L'Afghanistan est en est un parfait exemple, tout comme l'incapacité à résoudre l'épineuse question du Cachemire avec l'Inde. +Ces deux échecs ont renforcé les groupes terroristes pakistanais. +Le gouvernement pakistanais semble prêt à discuter avec certains des extrémistes dans les régions tribales, pour introduire des réformes politiques et redoubler les efforts de développement. +Mais l'idée de « discussions » met l'Occident mal à l'aise. +L'administration américaine a assimilé cette stratégie à des négociations avec des terroristes, et a fait remarquer qu'une précédente série de négociations n'avait en rien contribué à mettre fin aux violences. +Mais le nouveau gouvernement souhaite faire la différence, au Pakistan, entre les membres d'al-Qaïda d'une part et les conservateurs religieux et les jeunes Pashtouns désillusionnés de l'autre. La victoire de l'Awami National Party (ANP), un parti laïc, dans la province frontière du Nord-Est est après tout un signe clair que ses habitants rejettent les forces politiques religieuses et la violence. +Cette ouverture pourrait être élargie par le dialogue et la réconciliation avec ceux qui sont prêts à renoncer à l'extrémisme et au militantisme. +Le nouveau gouvernement pakistanais devra expliquer cette situation aux pays occidentaux pour préserver leur soutien. +Dans l'intervalle, les Etats-Unis doivent mettre fin aux frappes militaires directes dans la région, même si elles sont menées à la connaissance et avec la coopération des forces armées pakistanaises. +L'usage de la force n'a jamais donné de résultats avec les tribus pashtounes, et rien n'indique que cela ait changé. +Il y a par contre des signes manifestes que le nouveau gouvernement est considéré comme un partenaire crédible dans les zones tribales. +Il faut à présent lui donner le temps de trouver une sortie au cycle sans fin de la violence. +Les longs adieux de Pervez Musharraf +Les allégations sont graves : conspiration pour déstabiliser le gouvernement élu en février dernier, destitution illégale des juges de la Cour suprême en novembre 2007 et incapacité à protéger Benazir Bhutto avant son assassinat en décembre 2007. +L'alliance avec le gouvernement Bush a creusé son impopularité, notamment à la suite des attaques de missiles américains dans les zones tribales du Pakistan. +Malgré des différends sur la façon de traiter avec Musharraf, les grands partis politiques sont désormais unis contre lui. +Les querelles entre le Parti populaire du Pakistan, mené par Asif Ali Zardari, veuf de Benazir Bhutto, et la Ligue musulmane du Pakistan (N), menée par l'ex-premier ministre Nawaz Sharif, ont permis à Musharraf de reprendre son souffle après la défaite de ses alliés aux élections de février. +Les réticences des Etats-Unis à abandonner Musharraf -- et les coupures d'électricité prolongées, dont le nouveau gouvernement « incompétent » était tenu pour responsable --  lui avaient donné de faux espoirs. +Musharraf pourrait compter sur l'armée, son premier soutien, pour le sortir de cette crise. +Pourtant, même si cet appui demeure une possibilité, il est peu probable que les dirigeants militaires aillent si loin. +Bien qu'il soit un protégé du président, le Général Ashfaq Kayani, chef d'état-major, est un professionnel pour qui les intérêts institutionnels de l'armée sont plus importants que les intérêts politiques de son ancien patron. +A plusieurs reprises, Kayani a déclaré que l'armée n'interférerait pas dans les affaires politiques et que le parlement et la constitution primaient sur tout le reste. +L'armée est peut-être tentée d'intervenir au nom de Musharraf, cependant, elle s'est assagie avec les événements politiques de l'année passée. +L'ensemble du corps judiciaire s'est levé pour demander la restauration des juges et la consolidation de l'État de droit. +La demande générale d'élections libres et la création d'un gouvernement démocratique ont forcé les militaires à accepter la volonté citoyenne. +L'armée a aussi payé le prix fort pour la position de Musharraf dans la guerre contre la terreur : des bombardiers suicide ont frappé plusieurs fois les installations militaires et le personnel autour du quartier général de Rawalpindi. +De plus, la fréquence des attaques mortelles sur les convois militaires dans les zones tribales du Pakistan et de l'Afghanistan a éloigné l'armée du président. +Si l'armé a tiré des profits financiers inattendus de l'aide militaire américaine, et pris pour cible nombre de militants étrangers alliés à Al-Qaida dans la région, ses performances contre les partisans pakistanais ont été, au mieux, mitigées. +Le prestige des Talibans et d'autres groupes activistes de la région s'est donc consolidé. +Dans ce contexte, l'armée, qui cherche à éviter la seule responsabilité d'un retour en arrière, veut un gouvernement suffisamment populaire pour prendre en charge la politique -- or, ce gouvernement ne peut voir le jour si les partis élus perdent leurs sièges. +On note des signes de désaccord entre le gouvernement et l'armée sur des questions importantes. +Les militaires ont récemment contré une manœuvre gouvernementale visant à placer les renseignements pakistanais, tristement célèbres, sous le contrôle du ministère de l'intérieur plutôt que du premier ministre. +Musharraf a soutenu l'opposition militaire à cette réforme, et reçu la gratitude des commandants militaires. +Lors de la récente visite du premier ministre Youssef Raza Gilani aux Etats-Unis, le président Bush a répété que son gouvernement soutenait la démocratie au Pakistan, politique reprise depuis par la Secrétaire d'État Condoleezza Rice. +Cette position laisse entendre que les Etats-Unis n'épauleront Musharraf dans aucune confrontation entre lui et les forces démocratiques du Pakistan -- ce que souhaitent la plupart des Pakistanais. +Il importe que Musharraf s'interroge sur les conséquences de ses actes. +Plutôt que d'essayer de confondre les mises en accusation et de faire durer la crise, il devrait reconnaître que le Pakistan ne peut se permettre plus d'instabilité et qu'un abandon honorable de sa part inciterait le respect. +En effet, même si Musharraf nie les accusations et échappe à la destitution par un coup de chance, son avenir s'annonce sombre. +En mars 2009, la coalition actuellement au pouvoir obtiendra davantage de sièges au Sénat et le gouvernement tentera certainement de mettre le président en cause à nouveau. +Qui plus est, toute tentative de Musharraf de déloger le gouvernement en se servant de son autorité constitutionnelle entraînerait une autre élection -- et les résultats ne seraient pas différents de ceux de février. +Il est temps que ses alliés occidentaux insistent pour qu'il se rende utile une dernière fois pour son pays en évitant la confrontation avec les forces démocratiques et en démissionnant. +L'Asie du Sud en guerre +Les conflits régionaux - ils incluent tous les pays de la région et un nombre croissant d'acteurs non-étatiques - ont conduit à l'apparition d'un grand nombre de combattants entraînés, n'attendant qu'un appel pour la gloire. +Tant en Inde qu'au Pakistan, les disparités économiques et les injustices sociales sont un terreau fertile pour alimenter des conflits. +Le recours à la ferveur religieuse et à son abus - qu'il s'agisse de djihad musulman ou de fondamentalisme hindou - ébranle les  bases de l'harmonie sociale à travers l'Asie du Sud. +Beaucoup des problèmes actuels trouvent leur source en Afghanistan, un pays dont l'Histoire tragique n'est jamais restée confinée à l'intérieur des frontières du pays. +La dynamique de la région a changé quand les combattants afghans de la liberté des années 1980 se sont reconvertis en moudjahidin dans le cadre d'un projet criminel soutenu non sans enthousiasme tout à la fois par l'Occident et le monde musulman. +Le Pakistan, toujours méfiant à l'égard de l'Inde, devint le centre de cette mutation. +L'Occident croyait en avoir fini après la chute de l'empire soviétique, mais la région - et de plus en plus la communauté internationale - continuent à payer le prix fort pour ce sinistre projet. +Les maux de deux décennies en Asie du Sud peuvent être attribués aux années du djihad afghan : la montée des talibans, la domination des fanatiques religieux soutenus par le Pakistan dans le mouvement de libération du Cachemire et finalement l'extension des conflits sectaires à l'intérieur même du Pakistan. +En Afghanistan, l'armée et les services de renseignement pakistanais ont cherché une "profondeur stratégique" contre l'Inde. +Ils voulaient également lui faire payer le prix de son soutien aux révoltes des années 1960 et 1970 qui ont conduit à ce que le Bangladesh se détache du Pakistan pour devenir indépendant. +L'Inde n'est pas sans reproche dans cette affaire. +Elle poursuivait une double stratégie : d'une part elle prétendait qu'il n'y avait pas de problème au Cachemire (un mensonge flagrant), d'autre part elle encourageait la confrontation ethnique au Pakistan. +Une guerre brutale entre les services de renseignement pakistanais (l'ISI, Inter-Services Intelligence) et indiens (RAW, Research and Analysis Wing) a éclaté en Asie du Sud. +Le LET ( Lashkar-e-Taiba , l'Armée des purs), un mouvement activiste basé au Pakistan qui soutient l'insurrection dans la partie indienne du Cachemire, est le produit de ces années. +Selon les enquêteurs indiens, ce groupe est impliqué dans les événements de Bombay. +La répression du Pakistan contre cette organisation à travers tout le pays tend à confirmer cette accusation, même si le Pakistan demande publiquement davantage de preuves. +Le LET était le bras armé de l'organisation Ahle-Hadith, une version d'Asie du Sud du fondamentalisme de type saoudien, dont le but est de s'en prendre aux forces indiennes au Cachemire. +L'ancien président pakistanais Pervez Moucharraf a dissous ce groupe après le 11 septembre, mais certains de ses militants sont passés dans la clandestinité ou ont rejoint le JuD ( Jamaat-ud-Dawa , le parti du prosélytisme), une organisation qui gère des centres d'éducation religieuse et organise des actions caritatives. +Etant donné ses liens avec les services de renseignement pakistanais, ce groupe n'a jamais été réellement inquiété. +Après le tremblement de terre dévastateur de 2005, il a même participé aux secours du coté pakistanais du Cachemire. +Mais les stratèges militaires pakistanais n'ont pas réalisé que des mouvements comme le LET et le JuD avaient aussi un objectif au Pakistan même : faire de ce pays une théocratie. +Hafiz Saeed, le fondateur du LET et responsable actuel du JuD, a déclaré fièrement : "Nous croyons dans le choc des civilisations et nous allons continuer le djihad jusqu'à ce que l'islam devienne la religion dominante". +Le JuD avec de nombreux autres groupes dans la même mouvance a radicalisé des milliers de jeunes Pakistanais. +Avec ses publications et avec Internet il contestait régulièrement l'enseignement des mystiques soufis qui ont importé l'islam en Asie du Sud en favorisant le pluralisme et l'amour de l'humanité. +Tout en demandant au Pakistan de réagir vigoureusement contre le JuD, l'Inde doit reconnaître que le Pakistan est lui aussi victime de la terreur. +Toute confrontation militaire avec ce pays va renforcer les radicaux pakistanais. +L'Inde doit aussi se remettre en question, car la violence anti-musulmane au Gujarat et l'activité des fondamentalistes hindous ont virtuellement fourni des occasions de recrutement aux extrémistes musulmans indiens. +Une résolution à l'amiable du conflit du Cachemire améliorerait les perspectives de paix en Asie du Sud. +Le Pakistan doit engager un effort de grande envergure et de longue durée contre les groupes extrémistes opérant sur son territoire. +Les activistes de toutes obédiences doivent être mis hors d'état de nuire, ceci dans la transparence. +Le Pakistan doit étendre et améliorer le système d'éducatif et les services publics afin que les groupes radicaux ne puissent attirer les jeunes dans leurs écoles et leurs réseaux d'aide sociale. +Sinon, le statu-quo pourrait être une grave menace pour l'avenir du Pakistan et de toute l'Asie du Sud. +Le combat pour l'âme du Pakistan +Les talibans semblent pour l'instant en déroute; certains se sont même rasé la barbe ou se cachent sous une burqa pour éviter d'être reconnus et roués de coups. +La raison est simple: le peuple apporte un soutien croissant à son armée. +Ce soutien persiste malgré un coût humanitaire conséquent,  plus de 1,5 million de réfugiés intérieurs. +Ces combats font suite à une trêve négociée, alors que le gouvernement tentait d'étouffer les militants dans les zones tribales du Pakistan en tentant de parvenir à un accord avec le chef des talibans, Sufi Mohammad. +Cet accord, qui a mis en place une sorte de loi islamique (sharia) dans la région en échange de l'engagement des militants à déposer leurs armes, a reçu le soutien du Parti National Awami, comparativement plus libéral et qui gouverne la province de la Frontière-du-Nord-Ouest, où se trouve Swat. +Mais les soi-disant garanties du taliban à faire profil bas ont été entâchées par deux incidents qui ont permis de mettre en lumière son vrai visage. +Tout d'abord, des chaînes de télévisions privées ont diffusé à travers le pays une vidéo enregistrée sur un téléphone portable et montrant la flagellation d'une jeune fille du Swat de 17 ans. +Le public a pu se rendre compte de manière assez crue ce que représentait vraiment la justice pour les talibans. +Puis, Mohammad a expliqué sa vision politique dans le cadre d'une interview sur GEO TV. +Selon lui, la démocratie est non-islamique, de même que la Constitution et l'appareil judiciaire pakistanais, et l'Islam interdit aux femmes l'accès à l'éducation et le droit de sortir de chez elles, excepté pour effectuer le Hajj à la Mecque. +Les conservateurs religieux ont été très étonnés. +Les chefs des partis religieux ont rapidement exprimé leur désaccord avec les idées de Mohammad. +Les médias Pakistanais ont exploité sous une nouvelle forme un commentaire bien connu de Mohammad Iqbal, le poète philosophe qui évoquait l'idée d'un état musulman indépendant au Pakistan. +"La religion des Mollahs c'est l'anarchie au nom d'Allah" a-t-il déclaré. +Mais rien n'est encore joué. Et à court terme, beaucoup de choses reposent sur la capacité de l'Etat à garder le contrôle du Swat et à y rétablir des institutions civiles. +Et, même si l'état y parvient, préserver le contrôle sur le Swat ne sera que la première étape. +Les talibans sont répandus sur toute la NWFP et la région de la Fédération des Zones Tribales. +Des militants "Talibans du Punjab" qui ont combattus au Cachemire contre l'Inde continuent de circuler entre le Punjab et les Territoires-du-Nord-Ouest, ce qui représente un autre défi à l'autorité du gouvernement. +En fait, l'important à long terme est de savoir si les musulmans de l'Asie du sud-est seront véritablement capables de freiner la ‘talibanisation' croissante. +La réponse à cette question est à trouver non seulement au Pakistan, mais aussi au sein des différentes communautés musulmanes de la région, +Des élections doivent avoir lieu en Afghanistan avant la fin de l'année. +Des élections transparentes seraient une réelle occasion pour asseoir la crédibilité du gouvernement afghan. +Au Pakistan, après des années de pouvoir militaire, la transition démocratique n'est toujours pas terminée. +Il y a beaucoup d'espoir malgré tout dans le dynamisme des médias pakistanais et dans l'énergie déployée par la communauté juridique en mars dernier pour redonner son siège de Président de la Cour Suprême à Iftikhar Mohammad Chaudhry. +Puis il y a aussi l'armée pakistanaise, sorte de ‘super parti politique' du pays. +Les relations du Pakistan avec l'Inde, l'Afghanistan et les Etats Unis reposent en grande partie sur les militaires. +Le Commandant en Chef Ashfaq Kiyani n'a démontré aucun intérêt à prendre le pouvoir comme l'avait fait son prédécesseur, le Général Pervez Musharraf. +Mais l'armée doit se soumettre au leadership politique du Pakistan. +Il faut que l'armée admette que ses interventions répétées ne servent pas toujours le pays. +De façon plus significative, malgré la loi martiale et les assassinats politiques, les pakistanais n'ont toujours pas abandonné leur rêve de démocratie. +A l'image de Afzal Lala, homme politique Pashtun associé au Parti National Awami, et qui, malgré toutes les menaces du sanguinaire Tehrik-e-Taliban Pakistan, est resté dans le Swat pendant les récents combats. +La démocratie est essentielle car elle est génératrice d'investissements dans les domaines de l'éducation, de la santé et de l'économie, permettant au citoyen lambda d'améliorer son quotidien et constituant une forme de remerciement pour sa participation citoyenne. +La talibanisation gagne du terrain lorsque les gens perdent foi en la capacité d'un état moderne à améliorer leur quotidien. +Il faut bien sur s'atteler à faire respecter la loi, mais le contre-terrorisme n'est jamais uniquement une affaire militaire. +Les promesses d'une aide financière des Etats-Unis et du consortium ‘les amis du Pakistan' (l'Union Européenne, la Chine, et le Japon) sont importantes ; mais lorsqu'il s'agit d'investir avec sagesse dans des projets de développement, le Pakistan n'a pas de quoi être vraiment fier de son bilan. +Il faudra impérativement que les contributeurs et le secteur privé pakistanais supervisent ces investissements. +Une seule condition doit être imposée au Pakistan : les premiers fonds doivent impérativement servir à reconstruire les écoles de filles de la vallée du Swat - et si nécessaire, sous la surveillance permanente de l'armée. +Un berceau de contradictions +L'invasion de l'Irak menée par les Américains était censée initier un processus de transformation dans tout le Moyen-Orient. +Le poète et analyste politique syrien Ammar Abdulhamid évoque un dégel en Syrie, dégel qui ne constitue peut-être pas un changement radical, mais tout au moins son signe précurseur. +La vie en Syrie n'a jamais été simple. +Les réalités, méticuleusement masquées sous un vernis d'homogénéité, ont toujours été trop complexes, même pour le plus sagace des spécialistes. +La coexistence pacifique des innombrables groupes ethniques, religieux et tribaux du pays résulte d'un amalgame complexe de concessions, de compromis, d'accords tacites et d'autres arrangements pragmatiques perfectionnés au fil des siècles. +Au cours des derniers mois, la vie est devenue encore plus complexe, les partisans de l'élite dirigeante du pays et de la société civile semblant plus perplexes que jamais sur l'avenir du pays. +Chaque groupe vise à assurer ses propres privilèges tout en préservant l'intégrité territoriale et l'unité nationale d'un pays de plus en plus turbulent et fragile. +Ces développements découlent bien évidemment de l'invasion de l'Irak par les Américains, qui a transformé une menace vague et distante en un voisin imposant dont les intentions envers le régime baathiste de Syrie sont tout sauf amicales. +Par conséquent, la nécessité d'un changement radical au niveau de la structure et du style d'un régime précédemment affaibli par les réalités a finalement commencé à être assimilée. +Les divers centres de pouvoir politique de Syrie se sont ainsi lancés dans une quête désespérée pour une vision annonciatrice de changement, tout en laissant l'ordre existant subsister. +Etant donné que les dirigeants de la Syrie ne possèdent ni la capacité ni le savoir-faire requis pour créer cette vision, la société civile a bénéficié d'une certaine marge de manoeuvre pour passer à l'action. +Il est évident que cette expansion de l'arène opérationnelle de la société civile risque de se transformer en opposition ouverte à l'encontre des dirigeants de la Syrie. +Le but est de créer un débat dans l'espoir de produire la vision du changement, une vision plus que nécessaire. +Le monde extérieur aura ainsi l'impression que des changements sérieux se produisent et que le régime doit disposer de suffisamment de temps pour les mener à bonne fin. +Les répressions, les détentions et les procès illégaux coexistent côte à côte avec une tolérance grandissante envers des initiatives créatives. +Plus de vingt ONG ont été mises en place au cours de ces derniers mois. +Beaucoup sont des associations caritatives et incluent souvent dans leur commission consultative un ou deux membres ayant clairement des liens avec le gouvernement (la fille d'un ministre ou d'un général ou, dans certains exemples notables, la femme du président). +Même ainsi, ce développement reste conséquent selon les normes syriennes, les initiatives indépendantes étant traditionnellement désapprouvées. +Le service de presse All4Syria (www.all4syria.org), créé par l'ingénieur syrien Ayman Abdul Nour, a une réelle importance ici. +Ce service comprend un bulletin électronique qui renferme des rapports et des articles relatifs à la Syrie rassemblés auprès de diverses sources, et qui inclut souvent des commentaires des membres de l'opposition sur le territoire national et à l'étranger. +A sa manière, All4Syria a instauré un canal de dialogue indirect entre le gouvernement et l'opposition, qui n'aurait peut-être pas pu être mis en place autrement. +Bien que le site Internet de All4Syria ait été récemment bloqué pour des raisons non précisées, le bulletin continue d'être diffusé et Mr. Abdul Nour évolue dans ses cercles habituels sans être importuné. +J'ai participé au lancement d'une autre initiative, le projet Tharwa (www.tharwaproject.com), que j'ai longtemps considéré comme un moyen pour la région arabe de traiter ses problèmes avec les minorités religieuses et ethniques. +Bien qu'ayant une portée régionale et étant doté d'une commission consultative internationale originale, le projet Tharwa (Tharwa signifie richesse en arabe) est basé à Damascus et sera mis en oeuvre depuis cette ville. +Le lancement du projet Tharwa un mois auparavant a par inadvertance coïncidé avec les émeutes kurdes qui ont ébranlé le nord de la Syrie. +Ceci, associé à l'importance de la commission consultative (qui comprend le célèbre sociologue égyptien Saad Eddin Ibrahim, l'expert français de l'Islam politique Gilles Kepel, et Flynt Leverett, un membre de l'institution Brookings) et à la sensibilité des droits des minorités en général, se sont combinés pour donner au projet une portée nationale, régionale et internationale. +Jusqu'à présent, les autorités de la Syrie n'ont pas réagi au projet Tharwa. +Il est probablement trop tôt pour cela. +Mais le projet semble incarner le type d'activité susceptible de contribuer à produire des visions de changement. +Certains membres du gouvernement syrien en sont sans doute conscients. +Néanmoins, quatorze militants de la société civile qui ont tenté d'organiser une réunion spéciale pour traiter les réalités du problème kurde en Syrie ont récemment été condamnés à diverses reprises pour avoir tenté d'ébranler l'unité nationale. +Les autorités souhaitent manifestement contrôler l'ampleur du dégel de la culture politique de la Syrie. +Mais même si de telles répressions se poursuivent, un nombre croissant d'initiatives indépendantes privées bouillonnent à la surface. +Mes collègues et moi-même devons désormais travailler dur et sans discontinuer pour étendre la portée de la participation populaire dans le pays et dans la région. +Nous ne pouvons pas nous prononcer à ce stade sur la tournure que prennent les événements. +Tout et rien semblent possibles. +Il est quand même tentant de penser que la Syrie connaît un nouveau début, et la fin d'une ère dont nous supportons tous les péchés. +Le dialogue avec l'Iran et la Syrie est-il vain ? +Les partisans de la guerre en Irak ne comprennent pas les complexités d'une guerre efficace dont le but serait de libérer et de démocratiser. +En conséquence, leurs politiques n'ont pour résultat que d'éliminer les deux grands rivaux, les Talibans et le régime de Saddam Hussein, laissant à l'Iran une chance en or de dominer la région -- et il est peu probable que les dirigeants iraniens ne sautent pas sur l'occasion. +Ceux qui se prononcent en faveur du dialogue avec les Iraniens et leurs alliés syriens, comme l'ancien secrétaire d'État américain James Baker, s'imaginent parvenir à une entente qui permettrait aux Etats-Unis de sortir d'Irak avec élégance et de stabiliser un pays déchiré. +Cette idée illusoire repose sur deux suppositions erronées : d'une part, les Iraniens et les Syriens pourraient réussir là où les Américains ont échoué ; d'autre part, la communauté internationale aurait les moyens de garantir leur coopération. +Il est vrai que la Syrie et l'Iran soutiennent fortement les insurgés irakiens et que la Syrie continue à encourager le trafic d'armes et de guerriers du djihad à travers ses frontières avec l'Irak. +Il est pourtant naïf de croire que ces activités peuvent être interrompues à tout moment. +Tout d'abord, les intérêts des communautés chiites en Irak et en Iran ne sont pas les mêmes. +Les Chiites irakiens n'ont jamais accepté les ordres iraniens et la plupart ont pris part à la guerre de Saddam contre l'Iran dans les années 80. +Après tout, les Chiites irakiens sont Arabes et s'ils sont désormais disposés à coordonner leurs activités avec leurs équivalents perses, leur objectif principal sera toujours de s'assurer une voie indépendante le plus tôt possible, alors qu'ils poursuivent une lutte fratricide en Irak. +L'Iran n'est pas mieux placé que les Etats-Unis pour les convaincre de régler leurs différends. +Le président syrien, Bachar el-Assad, se trouve face à un dilemme similaire. +Même s'il a ouvert les frontières de la Syrie aux guerriers du djihad et a permis aux adeptes de Saddam d'opérer en toute liberté, ce choix n'est peut-être pas totalement le sien. +L'aide de la Syrie à Saddam pour détourner le programme « pétrole contre nourriture » des Nations Unies a profité financièrement aux frontaliers, qui ont toujours été plus proches -- en termes de coutumes, de dialecte et de vision des choses -- de leurs voisins irakiens que de leurs compatriotes syriens. +En l'absence d'investissements publics, les fidèles locaux se sont tournés vers le parti Baas irakien qui les a aidés à améliorer leur condition. +Effectivement, même les dispositifs de sécurité locaux ne se plient pas aux ordres d'Assad et de sa clique de fermer les frontières. +Dans ces conditions, ni la Syrie ni l'Iran ne semblent pouvoir faire autre chose que de semer la pagaille en Irak. +Mais alors, le dialogue proposé entre les Etats-Unis et ces États ne servira-t-il qu'à donner davantage de pouvoir aux régimes corrompus et ambitieux ? +L'histoire se complique avec l'enquête des Nations Unies sur l'assassinat de l'ancien Premier ministre libanais, Rafiq Hariri. +Assad ne souhaite qu'une chose : que cette affaire tombe aux oubliettes -- et les partisans du dialogue pensent pouvoir lui donner satisfaction, dans l'espoir de briser l'alliance entre la Syrie et l'Iran. +Mais il s'agit simplement d'une autre supposition erronée (pour ne pas dire amorale). +Cette alliance vieille de vingt ans a été ouvertement réaffirmée par les deux régimes dominants, pas plus tard qu'en janvier 2005. +Le récent refus d'Assad d'assister à un sommet à Téhéran avec ses homologues iraniens et irakiens n'était qu'une tactique pour lancer un appel aux partisans du dialogue. +En effet, l'Iran a investi des centaines de millions de dollars en Syrie et les transactions bilatérales dépassent le milliard de dollars chaque année. +L'Iran a influence grandissante sur le dispositif de sécurité syrien et finance la mise en place de milices syriennes chiites pour compenser le soutien défaillant de l'armée et de la communauté minoritaire alawite à Assad. +Le président syrien ne tournera pas le dos à tout cela. +Aucun accord ne sera assez satisfaisant, pas même avec la restitution du plateau du Golan. +Pour Assad et ses partisans, la survie est plus importante que la souveraineté. +Pourtant, les célèbres analystes et décideurs politiques qui préconisent d'engager le combat avec la Syrie et/ou l'Iran reflètent bien l'incohérence et les limites des puissances occidentales à l'égard des réalités de la région la plus turbulente du monde. +Et c'est, semble-t-il, le prix de leur arrogance. +Soutenir la « Campagne pour la liberté » de l'Amérique +Peu de temps après la conférence d'Annapolis, qui a rassemblé les représentants de tous les États arabes  -- dont la Syrie  -- et Israël, bon nombre d'observateurs ont considéré notre rencontre comme un signe de refus du gouvernement Bush de normaliser les relations bilatérales avec la Syrie ou de conclure tout accord ou marché avec son régime. +Ce point de vue ne semble pas très éloigné de la vérité. +En effet, lorsqu'il s'adressait à nous, Bush ne cachait pas son dédain pour les dirigeants syriens et rejetait la possibilité de négociations directes ou de toute amélioration des relations. +En tant que tel, le « langage corporel positif » qu'Emad Moustapha, ambassadeur de Syrie aux Etats-Unis, dit avoir détecté durant sa brève rencontre avec la Secrétaire d'État Condoleezza Rice à l'occasion de la conférence d'Annapolis a été écrasé par le langage verbal négatif de Bush lors de notre réunion. +Et nous savons tous qui hérite des responsabilités. +Pour notre part, nous avons mis l'accent sur la dégradation des droits de l'homme en Syrie. +Dès la fin de notre réunion, jour où l'on célébrait la Journée internationale des droits de l'homme dans le monde, le régime syrien lançait une campagne d'intimidation et d'arrestations massives à l'encontre de certains des plus importants dissidents. +Si bon nombre d'entre eux ont été libérés au bout de quelques heures, certains sont restés en prison. +Cet épisode montre la nécessité de poursuivre le combat pour les droits de l'homme et la démocratie. +Quelle que soit la cause de ces faiblesses, il importe que les responsables politiques américains et européens tirent la leçon suivante : même s'il est nécessaire de changer de tactique, l'objectif de faciliter la démocratisation et la modernisation demeure valable. +Enfances étouffées, choix cruciaux. +Ayman travaille très dur à l'école. +Il rêve d'un avenir, d'un métier. +Mais avec 47 élèves entassés dans sa classe, des classes qui fonctionnent en double roulement, apprendre dans ces conditions est très difficile et stressant. La maison n'est pas non plus un refuge: la récente incursion militaire à Jabalia s'est produite à 200 mètres de l'endroit où Ayman vit. +Les fusillades et les bombardements ont tellement terrorisé sa petite sœur de 5 ans qu'elle continue à se réveiller la nuit en hurlant. +L'expérience d'Ayman n'est malheureusement que trop fréquente dans les voisinages surpeuplés et étouffant de Gaza, où ce sont les moins responsables de cette situation qui souffrent le plus. Pourtant, parmi les 840,000 enfants de Gaza- 555,000 d'entre eux sont des réfugiés- Ayman semble avoir plus de chance que beaucoup d'autres. +Depuis le récent regain de violence le mois dernier, 33 filles et garçons palestiniens au moins ont été tués, et de nombreux autres ont été blessés ou mutilés - tous se sont retrouvés piégés par des tirs croisés, tués dans leur propre maison ou emportés par des explosions qui les ont surpris alors qu'ils jouaient dans leur propre jardin. Le 28 février, quatre enfants qui jouaient au football ont été touchés par un missile qui a déchiqueté leurs corps, leurs propres familles n'ont pu les identifier. +Ayman, ses frères et sœurs, comme tous les enfants de Gaza, voient leur espace de vie se réduire comme peau de chagrin au fil des jours, impuissants face à ce lent  étouffement de leur esprit et de leurs rêves. +Au lieu d'espérer s'épanouir,  ils sont piégés dans une prison virtuelle, et tout ce qui devrait aller de soi, tout ce qui devrait être normal pour un enfant, ne leur est pas accordé, comme si le droit de jouer, d'aller à l'école, d'avoir suffisamment à manger, d'avoir de la lumière pour faire ses devoirs à la nuit tombée, le droit de se sentir en sécurité à la maison, n'étaient pas fait pour eux. +Le poids de l'un des plus longs conflits mondiaux repose sur leurs frêles épaules, détruisant leur enfance et leur infligeant des cicatrices psychologiques que, souvent, ils porteront à vie. +Les Palestiniens ont longtemps été considérés comme étant parmi les plus éduqués au Moyen Orient. +Aujourd'hui après des années de violence, de bouclage, de pauvreté, l'éducation et l'excellence d'un système éducatif qui faisait leur fierté, a été anéanti. +Environ 2,000 enfants à Gaza ont abandonné les bancs de l'école au cours des cinq derniers mois. +Ceux qui restent doivent se partager des livres en lambeaux et doivent se débrouiller sans les ressources élémentaires. Les examens semestriels qui ont eu lieu au mois de janvier dans les écoles de l'UNRWA  (Office de secours et de travaux des Nations Unies pour les réfugiés de Palestine dans le Proche-Orient) ont révélé un taux d'échec de 60 pour cent des élèves en mathématiques et de 40 pour cent en arabe, langue maternelle des enfants. +Pourtant, malgré cela, Ayman persiste : « je veux être instruit. +Je veux être ingénieur et construire mon pays » +Rappelons au monde que la crise qui sévit à Gaza est un désastre engendré par l'homme. Rappelons au monde que la situation aujourd'hui est la pire depuis que l'occupation a commencé. +Soixante dix neuf pourcent des foyers de Gaza vivent dans la pauvreté ; huit sur dix dépendent de l'assistance alimentaire. Presque la moitié de la population en âge de travailler est sans emploi ; l'industrie locale s'est totalement effondrée. +Les systèmes de distribution de l'eau et le traitement des eaux usées sont défaillants ; les ordures s'entassent dans les rues. +L'UNICEF travaille d'arrache pied  pour  redonner à la jeunesse de Gaza un sentiment de normalité, notamment en développant des ateliers de rattrapage pour que les enfants continuent leur scolarité, en mettant en place des programmes de sports et de loisirs dans les écoles et en travaillant avec les communautés pour créer des terrains de jeux où les enfants peuvent être des enfants, tout simplement, en sécurité. +L'UNICEF travaille avec des partenaires pour approvisionner en eau, en hygiène et en fournitures médicales, les familles, ainsi que les centres de santé . +Et partout où le besoin se fait sentir, des équipes de soutien psychologique, formées par l'UNICEF, viennent en aide aux parents et aux  enfants palestiniens, pour leur permettre de faire face au fardeau du stress. +Mais si l'UNICEF fait son possible pour venir en aide à ceux qui sont au coeur de la tourmente de Gaza, les dirigeants politiques sont les seuls à pouvoir mettre un terme à cet abominable cauchemar. Le siège doit être levé. +L'assassinat de civils doit prendre fin des deux côtés. +Les enfants israéliens et palestiniens méritent de grandir en paix. Et les leaders des deux côtés, soutenus par la communauté internationale, doivent pouvoir trouver le langage d'un dialogue honnête, seul chemin vers la paix durable. +D'un ton très calme, le père d'Ayman a dit, « mes enfants sont mon espoir. » Les enfants de Gaza sont une lumière dans l'obscurité. Ils méritent d'avoir la chance de briller. +La seconde chance de l'Europe dans les Balkans +Si la décision concernant le Kosovo n'implique pas forcément la reprise d'un conflit à grande échelle, elle soulève toutefois de sérieuses questions sur les relations de l'Europe avec la Russie et les États‑Unis, ainsi que sur la stabilité dans la région des Balkans. +Les États‑Unis ont un enjeu majeur dans cette situation, mais les intérêts des pays européens sont manifestement plus importants. Qui sait, ces derniers seront-ils peut-être à la hauteur du rôle de leader ? +Durant les deux prochains mois ou plus, le Conseil de sécurité de l'ONU débattra d'une proposition pour l'avenir du Kosovo, élaborée non sans peine au cours d'une année de « négociations » entre Belgrade et Pristina, par l'envoyé de l'ONU et Martti Ahtisaari, ancien président finlandais. +Ce projet prévoit « l'indépendance surveillée » du Kosovo, une protection maximale pour les Serbes et d'autres minorités, et un rôle de supervision pour l'Union européenne. +La proposition d'Ahtisaari reconnaît qu'aucun accord entre les parties n'est possible et qu'il n'existe pas d'alternative constructive à l'indépendance du Kosovo. +Les Etats-Unis et l'ensemble de l'Union européenne se sont ralliés à la proposition d'Ahtisaari. +Pourtant, à titre individuel, plusieurs pays européens -- l'Espagne, la Grèce, l'Italie, Chypre, la Roumanie, la Slovaquie, et l'Autriche -- sont sceptiques ou pessimistes vis-à-vis de l'indépendance du Kosovo, ce qui soulève des questions de fond quant à la détermination de l'Union européenne. +Pendant ce temps, Vojislav Kostunica, Premier ministre serbe, a lancé une campagne diplomatique remarquablement efficace et infatigable dénonçant Ahtisaari et sa proposition. +Il a renforcé l'opinion de ceux en Europe et partout ailleurs qui doutent de la mise en cause de l'intégrité territoriale d'un pays où qui continuent à croire en un accord négocié. +Plus préoccupant encore, on peut se demander si l'Europe mal assurée tiendra tête à la Russie, de laquelle dépend la Serbie pour maintenir sa souveraineté sur le Kosovo. +Jusqu'à présent, le Kremlin a affirmé qu'il accepterait uniquement un accord voulu par les deux parties, appuyant dans le fond la position de la Serbie. +Tout en n'écartant pas la possibilité d'un veto, la stratégie actuelle de la Russie consiste à retarder autant que possible le vote du Conseil de sécurité en organisant rapidement une autre mission d'information au Kosovo, qui ravivera probablement la volonté de négocier un nouvel accord. +La Serbie est favorable à ce retard, dans l'espoir qu'il stimulera la violence de Kosovars frustrés, exacerbant ainsi l'opposition de l'Europe à l'indépendance et le soutien au dévouement de la Serbie pour maintenir le statu quo, ou, en dernier recourt, diviser le Kosovo. +Certains pays européens croient pouvoir maintenir un consensus européen derrière le plan d'Ahtisaari, or, ils permettent aux Russes de traîner les pieds pour la raison que ce retard n'est pas déraisonnable et que les nouvelles négociations pourraient apporter quelque chose de satisfaisant. +Mais en adoptant cette position, ils barrent la route à leur propre envoyé et risquent de stimuler une violence qu'ils prétendent abhorrer. +L'histoire ne console guère. +La façon dont l'Union européenne a géré par le passé les relations avec la Serbie n'a fait qu'affermir l'intransigeance. +Au lieu de soutenir que l'indépendance du Kosovo est une condition indispensable à l'adhésion à l'Union européenne -- si importante pour la modernisation de la Serbie et la stabilité des Balkans -- , les dirigeants européens comme Javier Solana prennent Kostunica pour un grand leader démocratique. +Ils ont implacablement, mais sans succès, fait pression sur les dirigeants du Monténégro pour qu'ils restent dans une union dysfonctionnelle avec la Serbie, toléré le référendum douteux de 2006 de Kostunica sur un projet de constitution faisant du Kosovo une partie de la Serbie, et affaibli les demandes pour que la Serbie coopère au Tribunal pénal international de La Haye. +La mise en oeuvre de la proposition d'Ahtisaari dépendra de la solidarité et de la persévérance européenne, et du soutien solide des Américains, pour surmonter les vicissitudes du débat de l'ONU, faire pression sur les membres non permanents du Conseil de sécurité qui demeurent sceptiques, comme l'Indonésie et l'Afrique du Sud, et persuader la Russie de ne pas exercer son droit de veto. +Nombreux sont ceux qui croient que la Russie ne mettra pas en danger ses relations avec l'Europe et les États-Unis, et reviendra au bout du compte sur sa position si les pays occidentaux restent fermes. +Pourtant, la Russie semble d'humeur gaulliste, alors que d'autres questions en souffrance causent des frictions avec les États-Unis et l'Europe. +La Russie de Poutine n'est pas celle d'Eltsine -- une époque où l'Occident pouvait simplement expédier les préoccupations russes. +L'Europe est vulnérable sur de nombreux fronts, notamment au vu de sa dépendance à l'énergie russe, tandis que le pouvoir présidentiel américain affaibli a réduit l'influence des États-Unis sur la Russie. +Si la Russie oppose son veto au plan d'Ahtisaari, la façade unie de l'Europe se fissurera probablement : bon nombre de pays refuseront soit de se ranger du côté des États-Unis pour reconnaître un Kosovo indépendant sans la bénédiction de l'ONU, soit d'envoyer une mission de surveillance sur place. +Cette situation marquerait le début d'une nouvelle période tumultueuse dans les Balkans, avec bien davantage que le Kosovo en jeu. +En fait, compte tenu de la confusion de l'ONU et de l'alliance occidentale, la région risquerait de subir davantage de troubles politiques russes. +Putin's Balkan Mischief +La Russie n'a jamais manqué une occasion d'entraver les efforts des pays occidentaux pour faciliter l'indépendance du Kosovo. Après une année de négociations entre la Serbie et le Kosovo, le Kremlin du président Vladimir Poutine a rejeté le rapport du médiateur de l'Onu qui recommandait une indépendance surveillée, empêché le conseil de sécurité d'accepter ce rapport, et a insisté pour que les négociations entre la Serbie et le Kosovo soient prolongées de trois mois -- même après que tout compromis était devenu impossible. +Il y a trois semaines, lors du conseil de sécurité de l'Onu, la Russie a insisté pour que tout accord obtienne l'approbation à la fois de la Serbie et du Kosovo, et sur la nécessité de nouvelles négociations. +Elle sait pourtant que de telles négociations seront stériles, mais croit qu'un nouvel appel, apparemment innocent, à parlementer ébranlera l'unité de l'UE, ce qui semble constituer pour Poutine un objectif vital. +Un nouveau retard est aussi susceptible de provoquer des violences au Kosovo et de saper le soutien international à la cause de l'indépendance. +La haine qu'éprouve Poutine à l'égard des relations de "soumission" de l'époque d'Eltsine alimente son opposition. +Mais c'est le retard de l'Occident à résoudre le problème du statut du Kosovo qui a permis à cette opposition de gagner du terrain. +En effet, l'Occident n'a pas cessé de mal interpréter les intentions de la Russie au sujet du Kosovo. +Beaucoup proclamaient que le Kremlin avait beau repousser l'inévitable, au final il n'empêcherait pas l'indépendance. +Aujourd'hui, à la onzième heure, la Russie s'accroche à sa position obstructionniste, et ses élections présidentielles de mars ne feront sans doute que consolider toute position anti-européenne. +Que fera donc Poutine lorsque les États-Unis et la majorité des membres de l'Union européenne reconnaîtront l'indépendance du Kosovo dans les prochains mois, sans la bénédiction de l'Onu, comme ils l'envisagent aujourd'hui ? +Il est fort peu probable que le Kremlin tentera une nouvelle intervention militaire au Kosovo (sa tentative en 1999 de faire atterrir des soldats à l'aéroport de Pristina s'est soldée par un échec), mais il dispose de toute une gamme de possibilité susceptibles de faire réfléchir l'Occident. +Le soutien du Kremlin a rendu efficace l'intransigeance nationaliste de la Serbie au sujet du Kosovo. +La Russie a certes déclaré qu'elle ne donnerait pas un blanc seing à la Serbie, mais elle soutiendra sans doute les tentatives gouvernementales serbes d'isoler et de déstabiliser un Kosovo indépendant. +Alors que la Serbie a résisté à la partition du Kosovo, la Russie soutiendrait également une proposition serbe d'une partition du nord du pays, peuplé de Serbes, tentative qui ouvrirait la boîte de Pandore d'une possible partition de la Serbie, de la Bosnie et de la Macédoine. +Cette proposition pourrait être soutenue par certains en Europe et ailleurs, comme étant un compromis apparemment approprié, même s'il déstabiliserait une fois de plus les Balkans. +La Russie va certainement poursuivre ses efforts diplomatiques pour convaincre le monde que les négociations constituent l'unique moyen de régler le problème, et qu'il ne peut être résolu en dehors de l'Onu. +De nombreux membres de l'Onu se rallieront à ce point de vue, notamment ceux qui comptent de conséquentes minorités ethniques mécontentes. +La Russie pourrait aussi réagir au-delà des Balkans, sûrement dans le Caucase, avec ses régions séparées, tout particulièrement en Géorgie. +Une déclaration d'indépendance du Kosovo provoquerait sûrement une déclaration du même type de la région sécessionniste géorgienne d'Abkhazie, que la Russie pourrait bien reconnaître. +Si la Géorgie prend des initiatives militaires pour l'en empêcher, l'armée russe pourrait réagir avec violence, créant une situation potentiellement incontrôlable. +Certes les États-Unis et l'UE ne veulent pas aggraver l'état de leurs relations avec la Russie, mais ils ne peuvent pas non plus céder à l'obstination russe ; la sécurité européenne est en jeu. +Ils doivent pourtant continuer d'essayer d'éviter une confrontation avec la Russie sur tous les fronts. +L'Occident doit montrer clairement à la Serbie qu'il réagira avec force à toute tentative d'encourager la violence ou de diviser le Kosovo. +Envoyer de nouvelles troupes de l'Otan, en plus de la mission de l'UE prévue, pour surveiller l'indépendance du Kosovo, s'avérerait utile. +La Russie de Poutine, qui fait peu de cas de l'état de droit, enrobe ses tentatives diplomatiques d'une apparence de respect du droit international, et en particulier de la résolution 1244 du conseil de sécurité de l'Onu, qui a mis fin à la guerre du Kosovo en 1999. +Une offensive diplomatique, nécessaire depuis longtemps, doit impérativement être lancée, afin de saper les arguments de la Russie et de rappeler au monde ce qui s'est passé au Kosovo. +La résolution 1244 ne dit pas que le Kosovo doit rester sous souveraineté serbe, contrairement à ce que persistent à dire la Russie et la Serbie, et elle n'empêche pas non plus l'indépendance. +En fait, toute lecture raisonnable de la résolution, surtout dans le contexte des conflits qui ravagent les Balkans depuis vingt ans, admet que l'indépendance répond à ses intentions et justifie les huit dernières années de supervision de la province par l'Onu. +Dans le cas de l'Abkhazie, l'Occident doit rappeler la nature sui generis du Kosovo et souligner les immenses efforts qu'il y a déployés depuis 1999. +Le monde doit faire clairement comprendre qu'un engagement militaire russe en Abkhazie est inacceptable, tout en empêchant aussi le gouvernement de Géorgie de réagir militairement à toute provocation. +La manière dont la Russie réagira au soutien apporté par l'Occident à la déclaration prochaine de l'indépendance du Kosovo montrera à quel point nous avons progressé depuis la Guerre froide. +En gérant avec soin le processus d'indépendance du Kosovo, et en restant attentifs à toutes les opportunités d'améliorer les relations avec la Russie, l'Occident pourra atténuer les pires conséquences de cette confrontation. +Une nouvelle Guerre froide pourrait bien s'avérer glaçante. +La Guerre des générations palestiniennes +Yasser Arafat peut être mort, ses stratégies machiavéliques restent. +Ayant toujours protégé sa position de leader unique du peuple palestinien, M. Arafat a toujours cherché à bloquer par tous les moyens possibles l'émergence d'un rival crédible à même de le défier. +En protégeant ainsi sa position, M. Arafat a empêché la nomination d'un successeur avant sa disparition. +Durant la semaine qui suivit la disparation de M. Arafat, cela ne semblait pas important. +Mahmoud Abbas, collaborateur de longue date de M. Arafat et architecte des Accords d'Oslo, s'est rapidement assuré le soutient du Fatah, la composante principale de l'OLP. +Une transition sans heurt semblait alors possible. +Toutefois, aujourd'hui, Marouane Barghouti, le leader du Fatah en Cisjordanie lors de l'actuelle Intifada, a décidé de se présenter contre M. Abbas pour la présidence de l'Autorité palestienne (AP), depuis sa cellule de prison israélienne. +Face à la stagnation économique et ce que Ahmed Qoreï, le Premier ministre de l'Autorité palestinienne, appelle " l'anarchie des armes ", la guerre de succession est bien la dernière chose dont les Palestiniens avaient besoin. +Tout nouveau leader devra relancer l'économie, faire respecter la primauté du droit, combattre la corruption, unifier les organismes de sécurité de l'AP, préserver l'ordre public, et réaliser tout cela rapidement sous peine de perdre son autorité. +M. Abbas, aussi connu sous le nom d'Abou Mazen, représente la veille garde de la classe politique palestinienne. +Mais la jeune garde, ceux qui menèrent la première Intifada entre 1987 et 1993, ainsi que ceux qui se sont fait un nom dans l'actuelle Intifada, réclame sa part de pouvoir. +M. Abbas aura ainsi besoin de rassembler le soutien de la génération montante des leaders nationalistes s'il veut l'emporter. +Résoudre cette guerre des générations de manière pacifique nécessitera l'organisation d'élections démocratiques au sein du Fatah pour l'appartenance au Conseil révolutionnaire et au Comité central. +Le sixième congrès du Fatah, le premier depuis seize ans, se déroulera en août 2005 et cherchera à réconcilier la vieille et la jeune garde. +Contrairement à M. Arafat et à ses camarades en exil, M. Barghouti, le leader le plus en vue de la jeune garde, a grandi sous l'occupation israélienne et fut arrêté et emprisonné plusieurs fois. +La popularité de M. Barghouti vient également de son refus, dès les débuts, de prendre des responsabilités au sein de l'AP et de ses institutions corrompues et sous la coupe de M. Arafat. +Bien qu'il ait été élu en 1996 au Conseil législatif palestinien, la réputation de M. Barghouti a pris son envol au commencement de l'actuelle Intifada en semptembre 2000. +Son soutien des attaques contre les soldats israéliens et les colons dans les Territoires occupés, dont il défend la légitimité dans le cadre du droit international, lui a valu une immense popularité chez les Palestiniens ainsi que cinq condamnations à vie et une peine de 40 ans dans les prisons israéliennes. +Sa libération évenutelle est maintenant source de spéculations intenses. +Néanmoins, M. Barghouti a commencé à s'exprimer sur la situation politique depuis le fond de sa cellule, et sa présence se fait sentir de plus en plus. +Sa décision de s'opposer à M. Abbas implique que les forces " laïques " du mouvement palestinien sont peut-être divisées au moment où des rivaux avec des intérêts islamistes puissants, le Hamas et la Djihad islamique principalement, s'opposent à elles. +Le Hamas et la Djihad islamique sont des organisations hautement disciplinées qui font régner un contrôle serré sur leurs ailes politiques et militaires. +Bien que le Hamas ait été affaibli par les assassinats israéliens ciblés sur les personnes du Cheik Hamad Yassine et d'Abdel-Aziz Rantisi, il garde des capacités militaires fortes et un soutien populaire de 25 à 30 %, ce qui en fait la deuxième faction la plus puissante en Cisjordanie et à Gaza. +Le Hamas a déclaré qu'il nomemrait son propre candidat à la présidence de l'AP. +Hassan Youssouf, le leader du Hamas qu ia récemment été libéré de sa prison israélienne après 28 mois de détentino administrative, expliquait à Al Jazira que " si le Hamas endossait la direction à ce stade, il serait vilipendé et isolé par la communauté internationale, en conséquence de quoi le peuple souffrirait. " +Même si le Hamas boycotte les élections, de nombreux sympatisants du Hamas voteront pour le candidat le plus engagé dans la défense des exigences principales des Palestiniens. +Les membres du Hamas ne font que réitérer ici les positions de M. Arafat, ce qui s'imposera comme une limitation des concessions que tout nouveau leader pourra faire. +M. Arafat avait préparé un plan détaillé pour un État palestinien indépendant qui comprendrait la Cisjordanie et la bande de Gaza, sa capitale se situant alors à Jérusalem Est, et une solution équitable au problème des réfugiés. +Les changements de dirigeants ne modifieront pas ces conditions pour un plan de paix. +Reste donc la vraie question : qui, de M. Abbas ou de M. Barghouti, sera le mieux à même de faire progresser ce plan aux yeux des Palestiniens et en aprticulier aux yeux des sympatisants du Hamas ? +La réponse à cette question déterminera le plus sûrement qui sera le prochain dirigeant de l'AP. +Éventuellement, Israël devra aussi faire un choix, parce que la paix ne peut s'établir uniquement sur les compromis palestiniens, sans concessions israéliennes. +Israël doit geler ses activités de colonisation en Cisjordanie et stopper la construction de la barrière de sécurité sur les territoires palestiniens. +Israël doit également libérer les prisonniers palestiniens, supprimer les points de passage entre les villes et les villages palestiniens et redéployer ses forces sur les positions tenues à la date du 28 septembre 2000 selon les dispositions de la phase I de la feuille de route pour la paix. +MM. Abbas et Barghouti feraiennt certainement preuve de bonne volonté de leur côté si la preuve en était également faite de l'autre côté. +Le Hamas attendra +La date du 17 juillet fixée initialement pour les élections avait mis le Fatah dans une position difficile. +Le Fatah considère le congrès du 4 août comme une occasion de s'unifier en vue de la campagne électorale, et de redorer son image publique ternie par les luttes intestines et par la corruption. +Le Hamas, conscient de la désorganisation du Fatah, accuse Abbas de repousser les élections législatives pour des raisons partisanes, et non nationales.  +La popularité du Fatah parmi les Palestiniens a chuté depuis le début, en 2000, de la seconde Intifada. +Longtemps colonne vertébrale du mouvement national palestinien, le Fatah est la faction dominante de l'OLP. +Soutenu par la signature des accords d'Oslo et l'établissement de l'autorité palestinienne en 1994, il a vu sa popularité diminuer au cours des dix dernières années, sous des accusations de corruption et d'incompétence. +Le Hamas n'est apparu que récemment dans la politique électorale, en remportant d'impressionnantes victoires sur ses rivaux du Fatah dans de nombreuses municipalités, particulièrement dans la bande de Gaza. +Les dirigeants du Fatah sont donc inquiets : s'ils se lancent dans des élections nationales, vu leur impopularité et leur division actuelles, ils essuieront une sérieuse défaite. +Rien de tout cela n'a été reconnu lors de l'annonce du report des élections. +Abbas a affirmé que cet ajournement répondait à la requête de la Commission électorale palestinienne, après que celle-ci a déclaré que les élections ne pourraient se tenir, car la loi électorale n'était pas encore approuvée. +La Commission a déclaré qu'il lui faudrait au moins deux mois après la ratification pour organiser le scrutin. +La loi électorale a été votée en troisième lecture par le Parlement palestinien, mais elle a été rejetée par Abbas, une décision qui fait partie de ses prérogatives présidentielles. +Abbas veut que tous les candidats soient inclus sur des listes nationales, ce qui permettrait la représentation proportionnelle des principales factions et groupes palestiniens dans le corps législatif. +L'Heure du Hamas +M. Abbas et d'autres responsables de l'Autorité palestinienne (AP) insistent sur le besoin d'instituer « un régime, un système législatif et le pluralisme politique ». +M. Abbas souhaite également que seule l'Autorité palestinienne soit autorisée à porter des armes. +Il a réussi à persuader les militants palestiniens à cesser le feu et à montrer aux Israéliens et au monde entier que l'abandon des colonies n'implique pas nécessairement de violence entre Israéliens et Palestiniens. +Pourra-t-il cependant traduire cette réussite jusqu'à un cesser le feu étendu, des élections pacifiques et une présence consolidée de l'AP dans la bande de Gaza et en Cisjordanie ?  Un échec ne mènerait qu'à une nouvelle défaite dans une course légitime pour les Palestiniens pour mettre en place un État viable. +On ne peut à peine exagérer la difficulté de la tâche à accomplir. +Le Hamas a lancé une campagne médiatique intensive pour s'approprier le retrait israélien comme une victoire remportée grâce à sa « lutte armée ». +La campagne et ses thèmes reflètent les luttes internes pour la prise de contrôle de la bande de Gaza et d'autres territoires sous gestion de l'AP et mettent l'accent sur la détermination du Hamas à ne pas déposer les armes et à continuer la « lutte armée » en Cisjordanie. +Le Hamas a également révélé deux « secrets militaires » lors de l'évacuation. +Le premier est un nouveau missile, appelé Sajil, qui a une portée de 15 kilomètres et peut atteindre un plus grand nombre de villes israéliennes. +Le second est l'existence du « Quassamits », un groupe de jeunes femmes engagées dans la formation au combat. +Le Hamas a programmé ces révélations avec le retrait des colonies pour créer l'impression que l'intensification de sa stratégie militaire lui a permis de l'emporter. +Selon l'un des slogans du Hamas dans les rues de Gaza lors du retrait israélien, « quatre ans de sacrifices pèsent plus que dix ans de négociations ». +De même, Mohamed Deif, le dirigeant de la faction armée du Hamas, déclarait récemment dans une vidéo que la leçon de Gaza est que Israël peut être repoussé de Cisjordanie, de Jérusalem et de Haïfa par la force. +Tout cela ne sert qu'à renforcer un point : le retrait de Gaza est une victoire qui appartient au Hamas. +Une étude publiée sur un site Web associé au Hamas s'accréditait 54 % des Israéliens tués des suites de la lutte armée palestinienne et ce décompte représente en fait le cri de victoire du Hamas. +Dans de telles circonstances, qui gérera les zones évacuées jusqu'aux élections ? +Comment seront distribués les revenus fiscaux entre ceux qui réclament le pouvoir du fait de leur résistance et ceux qui réclament le pouvoir du fait de leur légitimité à gouverner ? +Ces problèmes doivent être résolus sans tarder.  Quelqu'un doit décider rapidement, par exemple, comment diviser les terres et les appartements à construire dans la future ville qu'on appelle déjà « Khalifa ben Zaïd », située sur une ancienne colonie israélienne de la bande de Gaza. +Aucune de ces questions n'a encore reçu de réponse. +Là où le Hamas a demandé l'établissement d'une administration palestinienne pour superviser les zones libérées par Israël, M. Abbas a rejeté la proposition, n'acceptant au mieux qu'un « comité de surveillance » au sein duquel les représentants du Hamas peuvent siéger. +En tout cas, il n'y aura aucune « division de zones » jusqu'à ce qu'Israël soit complètement retiré et que les ruines soient dégagées. +Alors les dissensions politiques aigries pourront commencer dans la préparation aux élections. +Quoi qu'il advienne après le retrait israélien final de la bande de Gaza, on ne peut échapper au fait que les options militaires du Hamas ont été grandement réduites. +La construction du mur de séparation en Cisjordanie rend quasi impossible l'entrée des combattants du Hamas en Israël. +En outre, après la nouvelle occupation des villes de Cisjordanie en avril 2002, Israël avait arrêté à peu près 7 000 Palestiniens qu'on suppose associés au Hamas, au Fatah et à d'autres groupes palestiniens. +Il ne sera pas facile au Hamas de poursuivre la lutte armée. +Le Hamas en a conscience et porte de ce fait toute son attention sur le retrait de la bande de Gaza, cherchant à exploiter cette victoire en exigeant sa part de responsabilité dans le nouvel ordre institué après le retrait. +Il a accepté de participer pour la première fois aux élections législatives palestiniennes, qui doivent se dérouler ne janvier 2006, et on s'attend à ce qu'il remporte un grand nombre de sièges. +Cela cimenterait évidemment son rôle central dans le monde politique palestinien et ne ferait qu'exacerber le défi que doit relever M. Abbas. +Le séisme Hamas +Le Hamas a remporté 76 des 132 sièges au Conseil législatif palestinien et peut compter sur le soutien de quatre députés indépendants. +Cela représente 60 % des sièges au Parlement, gagnés dans presque tous les districts de la Rive ouest et de Gaza. +Le Hamas n'est apparu que très récemment sur la scène électorale, mais cette victoire massive aux législatives ne fait que renforcer le large succès remporté aux élections municipales. +L'heure de la politique vient donc de sonner pour le Hamas. +Selon la loi palestinienne, Mahmoud Abbas, le Président, doit maintenant demander au Hamas de former un nouveau gouvernement. +Les responsables du Fatah semblent, quant à eux, refuser de se joindre à un gouvernement dirigé par le Hamas. +Même si les Islamistes prétendent rechercher une telle coalition, l'humiliante défaite du Fatah lui a fait perdre toute crédibilité en tant que partenaire de gouvernement. +Jusqu'à maintenant, les plus hauts responsables du Fatah ont déclaré qu'ils agiraient en opposants loyaux au Parlement, laissant ainsi la responsabilité gouvernementale au Hamas. +Ils vont devoir s'atteler, en revanche, à la reconstruction et à la renaissance de leur parti. +Le Hamas est bien conscient du choc produit par sa victoire. +Si le Fatah refuse de rejoindre la coalition, le Hamas pourrait choisir de former un gouvernement d'indépendants et de technocrates. +Il est, en revanche, peu probable qu'il décide de former un gouvernement composé d'extrémistes. +La situation politique, sécuritaire et économique des Palestiniens nécessite un gouvernement axé principalement sur la résolution des problèmes et non sur la pureté idéologique. +Le défi le plus urgent auquel le nouveau gouvernement doit faire face est l'anarchie permanente et le non-respect des lois au sein de la société palestinienne. +Les meurtres, les enlèvements, les vols ont atteint des records exceptionnels. +Des individus armés n'hésitent pas à recourir aux kidnapping pour obtenir des emplois, libérer de prison des membres de leurs familles et réclamer vengeance. +Souvent, les personnes impliquées dans ces crimes appartiennent à des gangs locaux, voire à des milices de clans très importants. +Dans l'opposition, le Hamas avait catégoriquement refusé de collecter les armes illégales. +Désormais, il va devoir gérer une société palestinienne armée jusqu'aux dents, souffrant d'un taux de pauvreté de 70 % et d'un taux de chômage de 35 %. +Tirant profit de l'écrasant rejet politique du Fatah, le Hamas doit maintenant être jugé sur l'utilisation de son nouveau pouvoir. +Le compte à rebours politique vient de commencer pour le Hamas. +Les hauts responsables du parti ont bien conscience du défi qui les attend. Ils ont d'ailleurs promis une refonte complète de l'administration et des services publics palestiniens. +Plus que toute autre chose, la réussite du Hamas sera mesurée dans les prochains mois à l'aune de leurs réponses à ces questions. +Le Hamas sera-t-il capable d'éradiquer la corruption et l'incompétence et d'offrir des services équitables et efficaces ? +Dans quelle mesure son élection peut-elle affecter les flux de capitaux étrangers qui sont la composante essentielle du budget national ? +Les premières réactions internationales face à la victoire du Hamas ont été sévères. +L'administration Bush a déclaré qu'elle ne traitera pas avec le gouvernement du Hamas, car celui-ci reste engagé dans la destruction d'Israël. +Tel est, en effet, le langage officiel du Hamas depuis 1988. +Fait intéressant cependant, la plate-forme électorale du Hamas combinait différentes approches concernant la question de l'État palestinien. +D'un côté, elle approuvait pour la première fois l'établissement d'un État palestinien comprenant la Rive ouest et Gaza et dont Jérusalem-Est serait la capitale et d'un autre côté, elle répétait le refus du Hamas de renoncer à une once de la Palestine historique. +Actuellement, il est impossible de savoir si le Hamas va se transformer en une organisation plus modérée. +Mais, il est clair que le Hamas est désormais vulnérable à l'opinion publique. En outre, en tant que parti au pouvoir, il devra faire face aux réactions internationales entraînées par sa victoire. +Immédiatement après les élections, un haut responsable du Hamas, Mahmoud al-Zahar, a annoncé que son parti maintiendrait le cessez-le-feu avec Israël établi en février dernier, si Israël en fait autant. +Il se pourrait que ses responsabilités gouvernementales poussent le Hamas à ouvrir des discussions avec les États-Unis et la communauté internationale. +Quoiqu'il en soit, en dépit des résultats aux élections et de l'absence du Fatah au gouvernement, Abbas reste responsable des négociations avec Israël. +Il a très rapidement appelé à une réouverture des pourparlers de paix, malgré le refus d'Israël et des États-Unis de traiter avec le Hamas. +Les Palestiniens sont désormais en terrain inconnu. +Ils ont voté en masse à une élection décrite par l'ancien Président américain, Jimmy Carter, comme honnête, juste et non marquée par la violence. +Ils ont choisi un parti qui appelait à la « réforme et au changement » en réponse à une décennie de violence et d'anarchie. +Et les Palestiniens ont approuvé l'avis du Hamas selon lequel toute négociation basée sur les accords d'Oslo ne parviendra jamais à réaliser les droits et les ambitions politiques du peuple palestinien. +Maintenant que la victoire est obtenue, le Hamas est responsable des Palestiniens dans le conflit avec Israël. +L'avenir de son peuple entre les mains, -- sans parler de celui d'Israël et du Moyen-Orient -- , comment le Hamas va-t-il assumer sa tâche ? Nul ne peut actuellement le dire. +Le Hamas et le Fatah sont à la croisée des chemins +Depuis sa création au début des années 80, le Hamas refuse d'être sous la direction de l'Organisation de Libération de la Palestine (OLP). +La victoire du Hamas aux élections législatives en début de cet année -- véritable tournant démocratique -- est la preuve que ce parti a atteint la maturité politique. +Pour la première fois dans l'histoire palestinienne, un parti religieux domine le pays. +Mais le Fatah n'accepte pas la défaite et, de son côté, le Hamas est convaincu que des éléments au sein du Fatah s'associent à des plans israéliens et américains visant à renverser son gouvernement. +Abbas est toujours président de la Palestine et, selon la Constitution, commandeur de toutes les forces de sécurité palestiniennes. +Cependant, alors que la plupart des forces armées officielles lui restent fidèles, le Hamas a récemment créé une structure alternative de sécurité autour d'une « force opérationnelle » de 4.000 membres. +Qui plus est, le Hamas a annoncé qu'il recruterait 1.500 agents de sécurité supplémentaires pour la Cisjordanie, fief du Fatah. +Ces dernières semaines, les deux camps se sont affrontés à plusieurs reprises dans la Bande de Gaza, ce qui n'a fait qu'exacerber les tensions. +Les confrontations se produisent au moment où Abbas tente de convaincre le Hamas de modérer sa position anti-israélienne et de s'allier au Fatah dans un gouvernement d'unité nationale. +Le président est d'avis que le seul moyen de mettre fin aux sanctions internationales qui anéantissent la société palestinienne est que le Hamas accepte les négociations avec Israël. +Malgré cela, les deux camps consolident leurs forces armées. +Selon des rapports des Renseignements, le Hamas fait passer des armes et des explosifs en fraude, du Sinaï vers la Bande de Gaza, à un rythme accéléré. +Les Etats-Unis, Israël et certains gouvernements arabes prévoient d'armer et de former des troupes de partisans d'Abbas, notamment sa garde présidentielle, et de les préparer en vue d'une confrontation à Gaza -- qui leur semble inévitable -- avec le Hamas. +Israël étudie la demande d'Abbas de faire venir des armes et des munitions d'Egypte et de Jordanie pour renforcer ses fidèles. +En outre, les Américains proposent d'envoyer la brigade Badr -- aile de l'Armée de libération de la Palestine actuellement stationnée en Jordanie -- vers les territoires palestiniens, comme force de riposte rapide à Gaza pour anticiper la guerre civile redoutée. +La brigade Badr compte plusieurs milliers de Palestiniens, pour la plupart militants de l'OLP de longue date. +Tandis que les manœuvres se poursuivent, Israël et l'Egypte se voient travailler de concert pour soutenir Abbas et le Fatah. +La Bande de Gaza étant non loin de ses frontières, l'Egypte a servi à plusieurs reprises de médiateur entre le Hamas et le Fatah et s'efforce, en vain jusqu'ici, de négocier un échange de prisonniers avec Israël, suite à l'enlèvement par le Hamas de Gilad Shalit, soldat israélien. +Le gouvernement égyptien est néanmoins furieux contre le Hamas et son opposition à la formation d'une coalition gouvernementale. +En effet, le rapt de Gilad Shalit a creusé le fossé entre le Hamas et le Fatah, ce dernier étant convaincu que l'enlèvement n'a pour objet que de saboter les pourparlers au sujet d'un gouvernement d'unité nationale. +D'une manière plus générale, l'Egypte craint que Gaza n'adopte une politique radicale et ne devienne une sorte de « Hamastan ». +En effet, une évolution dans ce sens ne ferait qu'encourager les radicaux islamiques égyptiens contre lesquels le gouvernement se bat depuis des années. +L'Egypte redoute également une éventuelle guerre civile entre les partisans du Fatah et ceux du Hamas. +Même si ce dernier exclut cette possibilité, il n'a pas hésité à sortir l'artillerie lourde contre ses opposants. +D'après Mahmoud Al-Zahar, ministre palestinien des Affaires étrangères, toute dissolution du gouvernement ou toute anticipation des élections par Abbas mènerait droit à la guerre civile. +La crainte d'un combat majeur a déjà poussé de nombreux Palestiniens à s'exiler en Egypte, ce qui a entraîné le déploiement de troupes égyptiennes à la frontière pour contrôler tout exode massif. +Pendant ce temps, Israël s'inquiète de voir le Hamas resserrer sa prise militaire sur Gaza par le biais de fortifications et de réseaux permettant de lancer des roquettes Qassam sur les villes israéliennes voisines. +Israël n'attendra probablement pas l'intervention d'Abbas et de ses partisans, mais entreprendra plutôt une action de grande envergure pour affaiblir le Hamas. +Le Hamas et le Fatah sont-ils capables de mettre de côté leurs différends pour former un gouvernement d'unité nationale ? +Abbas a annoncé que s'il n'est pas possible de s'entendre sur la création d'une coalition dans les deux prochaines semaines, il se verra contraint de dissoudre le gouvernement actuellement en place, ce que le Hamas ne pourra tolérer. +Mais l'éventuelle coalition apaisera-t-elle pour autant les tensions entre les deux partis ? +De nouvelles confrontations verront le jour dès que le nouveau gouvernement sera formé. +L'ironie, c'est que le moyen le plus plausible d'éviter une confrontation à grande échelle entre le Fatah et le Hamas serait qu'Israël fasse incursion dans Gaza. +S'ils devaient faire face aux Israéliens ensemble, les groupes rivaux palestiniens n'auraient d'autre choix que de reporter leur sanglant affrontement. +La maison palestinienne divisée +La confrontation Hamas/Fatah marque un virage radical de la politique palestinienne, dont les priorités premières étaient jusqu'ici de mettre fin à l'occupation israélienne et d'établir un État indépendant. +Elle complique aussi énormément les négociations de paix, qui, tant pour les Palestiniens que pour le "Quartet" (États-Unis, Union européenne, Nations Unies et Russie), reposaient sur la définition de Gaza et de la Cisjordanie en tant que seul et même territoire. +Ironie du sort, c'est par la victoire d'Israël lors de la guerre de 1967 que ces territoires furent réunis après 19 années de séparation. +Auparavant, l'Égypte régnait sur Gaza et la Jordanie avait annexé la Cisjordanie. +Sous l'occupation israélienne, puis avec l'établissement de l'Autorité palestinienne en 1994, les territoires sont restés séparés géographiquement, mais pas politiquement. +La prise de Gaza par le Hamas a -- au moins pour l'instant -- mis un terme à cette unification politique. +Le président palestinien Mahmoud Abbas a désormais posé ses conditions au dialogue. +Le Hamas doit retirer ses hommes en armes de tous les bâtiments de sécurité qu'ils occupent, rendre le pouvoir à l'autorité légitime et présenter ses excuses au peuple palestinien. +Bien que la division interne nuise à l'intérêt national palestinien, il est peu probable, au milieu des accusations mutuelles et des provocations, que le dialogue entre le Fatah et le Hamas reprenne rapidement. +Mais ce que craignent surtout Abbas et le Fatah, c'est que le conflit avec le Hamas s'étende à la Cisjordanie. +Pour éviter un tel scénario, Abbas a interdit tous les groupes militaires et toutes les milices en Cisjordanie, y compris les Brigades des martyres d'al-Aqsa, rattachées au Fatah. +Abbas a réussi à convaincre Israël d'accorder l'amnistie à de nombreux fugitifs du Fatah en Cisjordanie, qui vont rejoindre son appareil sécuritaire. +Il a également demandé à Israël d'autoriser la Brigade Badr de l'OLP, actuellement stationnée en Jordanie, à entrer en Cisjordanie. +Cela fournirait à Abbas un supplément militaire de 3 000 hommes bien équipés et entraînés. +Suite à l'intervention du roi Abdallah II de Jordanie, Israël semble avoir donné son accord au transfert de la Brigade Badr avec toutes ses armes et munitions. +Si le Fatah doit devenir un partenaire viable pour la paix et regagner le soutien de sa base, il lui faudra se réformer et en finir avec la corruption généralisée qui a mis à mal sa réputation. +Abbas doit également partager le pouvoir avec de jeunes leaders plus disciplinés. +Israël peut l'aider en relâchant Marouane Barghouti, éminent dirigeant du Fatah, qui purge actuellement cinq peines d'incarcération à perpétuité dans une prison israélienne. +En raison de la grande influence de Barghouti sur les milices du Fatah, sa libération pourrait aider Abbas et la direction discréditée du parti, tout en encourageant l'émergence d'une nouvelle génération de dirigeants au Fatah. +Israël est divisée sur la méthode à employer avec le Hamas, ce qui compliquera également le départ des négociations de paix. +Certains Israéliens pensent qu'il faudrait encourager le Hamas à rétablir l'ordre à Gaza et à donner des garanties à ses voisins. +Si le Hamas peut rétablir l'ordre à Gaza, prévenir les violences contre Israël et arrêter les attaques de missiles contre les villes et villages israéliens, cela pourrait éviter une intervention militaire israélienne. +Toutefois, la pensée dominante en Israël est que le Hamas constitue une menace directe, qu'il est réticent à stopper les attaques sur Israël. +Pour l'État juif, les combats de l'été dernier contre le Hezbollah au Liban ont prouvé qu'il y a un risque à autoriser le renforcement d'islamistes radicaux aux frontières d'Israël. +Tôt ou tard, il est probable qu'Israël se confronte militairement au Hamas, peut-être même en réoccupant Gaza. +Les pays voisins pourraient prendre part aux négociations de paix notamment parce que l'Égypte et la Jordanie craignent que le Hamas puisse commencer à soutenir activement les groupes d'opposition islamistes présents sur leur propre territoire. +En outre, l'Égypte, la Jordanie et l'Arabie Saoudite -- les trois principaux régimes sunnites -- sont conscients que Gaza pourrait servir de base à l'Iran chiite, leur ennemi régional non arabe. +Leur crainte est fondée sur le soutien apporté par l'Iran aux groupes islamistes -- sunnites et chiites -- en Irak, au Liban et en Palestine, ainsi que sur les relations qu'il entretient avec la Syrie. +Si le schisme Hamas-Fatah entraîne une nouvelle partition territoriale, les aspirations nationales palestiniennes connaîtront leur plus grave recul de ces cinquante dernières années. +Bien que l'écrasante majorité des Palestiniens soit contre l'usage de la force pour régler cette lutte de pouvoir, beaucoup apprécient le changement opéré à Gaza, où le Hamas a débarrassé les rues des milices armées et restauré la loi et l'ordre. +Les Palestiniens sont confrontés à un problème épineux. +Quelle que soit l'action qui sera prise contre le Hamas, elle nuira au projet national palestinien. +Une maison divisée ne peut pas tenir, avait dit Abraham Lincoln. +Une Palestine divisée ne pourra pas plus assurer son indépendance. +Le Hamas s'en prend aux radicaux +Comme la bande de Gaza est contrôlée depuis plus deux ans par le Hamas, cette zone est considérée comme nettement plus traditionnelle et conservatrice que la Cisjordanie. +Pourtant, dans les cercles politiques à Gaza, le Hamas est un groupe islamique modéré à l'opposé de l'extrémisme du type Al-Qaïda. +Or, des groupuscules extrémistes islamiques remportent de plus en plus de soutien à Gaza, ce que le Hamas a remarqué. +L'affrontement dans la mosquée montre que le Hamas n'aura aucune pitié pour eux. +Voilà des années que divers groupes extrémistes salafistes opèrent à Gaza. +Les salafistes, dont le nom provient de l'expression arabe « Salaf al-Salih » [pieux ancêtres], insistent pour un retour à ce qu'ils considèrent comme les pratiques puristes des origines. +Le Hamas a, dans le passé, coopéré avec quelques salafistes, présumant qu'ils soutiendraient leurs dirigeants. +L'armée de l'Islam a rejoint le raid consistant à l'enlèvement du soldat israélien Gilad Shalit en juin 2006. +Ce groupe est également responsable de l'enlèvement à Gaza en 2007 d'Alan Johnston, correspondant de la BBC libéré plus tard suite à des négociations menées par le Hamas. +Les « Soldats des partisans de Dieu » est l'un des nombreux groupuscules radicaux inspirés d'Al-Qaïda apparus dans la bande de Gaza ces derniers mois. Il a retenu l'attention du public pour la première fois en juin en revendiquant une attaque à cheval manquée sur des israéliens depuis Gaza. +Son site Internet présente des photos, une langue et de la musique semblables à celles d'Al-Qaïda et d'autres groupes djihadistes. +Ce groupe s'est récemment déclaré en faveur des leaders d'Al-Qaïda Osama ben Laden et Ayman al-Zawahiri. +Les Soldats des partisans de Dieu exige une pratique pure de l'islam pour la bande de Gaza dans sa totalité, y compris l'application de la Sharia et le rejet de la démocratie. +En effet, la confrontation à la mosquée est survenue suite à une déclaration d'un califat islamique à Gaza, rejetant clairement l'autorité du Hamas. +A Gaza, de plus en plus de jeunes hommes se radicalisent. +Le style vestimentaire pakistanais est monnaie courante, tout comme le port des cheveux longs supposé rappeler le style du prophète Mohammed. +Parallèlement, la violence à l'encontre des « hors la loi » augmente. Des cafés Internet ont été bombardés, des institutions affiliées au christianisme mises à feu, des écoles étrangères et des mariages attaqués. +Le Hamas et les salafistes de Gaza affiliés à Al-Qaïda diffèrent fondamentalement sur le plan idéologique. +En tant que parti dirigeant, le Hamas a insisté sur le fait que le peuple palestinien est son unique souci, et non une révolution islamique mondiale. +Le Hamas n'a d'ailleurs pas imposé d'« émirat » islamique dans la bande de Gaza. +Les groupes salafistes en revanche semblent de plus en plus influencés par la montée des groupes extrémistes radicaux tels qu'Al-Qaïda au Pakistan, en Irak et en Afghanistan. +A l'inverse des mouvements salafistes traditionnels, éloignés de la politique, les jeunes voient dans l'activisme et la violence, le meilleur moyen d'atteindre leurs objectifs. +Mais l'échec du Hamas à établir et mettre en œuvre une loi islamique n'est pas la seule pilule qui ne passe pas. +L'une des raisons de l'attrait croissant de ces groupes est le cessez-le-feu immédiat entre Israël et le Hamas. Le Hamas a par conséquent été accusé de « force de résistance neutralisée ». +La fermeture de la frontière avec Israël et le blocus remontant à plus de deux ans ont provoqué une hausse de la pauvreté, du chômage et du désespoir, ce qui fait que les jeunes hommes s'intéressent de plus en plus au djihad mondial qui rejoint justement Gaza. +Il se trouve en effet que la confrontation entre le Hamas et les groupes salafistes survient au moment où Israël allègue que des dizaines de terroristes étrangers sont entrés à Gaza par le Désert du Sinaï pour rejoindre le chaos sous-jacent. +La répression du Hamas traduit donc son souhait de continuer à contrôler le conflit avec Israël. +La menace que l'extrémisme salafiste fait peser sur Gaza est loin de disparaître. +Les salafistes ont menacé de se venger contre le Hamas, notamment les brigades de sécurité qui ont mené la contre-attaque à la mosquée. +Un nouveau groupuscule salafiste nommé « la Brigade des épées de la vertu » a déclaré son allégeance aux Soldats des partisans de Dieu et a mis en garde les Gazaouis de rester à l'écart des bâtiments gouvernementaux, des quartiers généraux de sécurité, des mosquées fréquentées par les dirigeants du Hamas et autres bâtiments officiels. +Le groupe réfléchit désormais à ces cibles légitimes. +Au vu de la centaine de tunnels reliant la bande de Gaza et le Sinaï, il est très difficile de contrôler les mouvement d'armes et de munitions, tout comme les combattants étrangers. +Le combat du Hamas contre ces radicaux, qui revendiquent des attentats suicide à la bombe et ont tué six policiers du Hamas lors de l'affrontement dans la mosquée n'est qu'un début. +Les résidents craignent que Gaza deviennent un second Irak, avec des attaques à la bombe et des tueries en masse au quotidien. +Le Hamas usera de tous les moyens nécessaires pour protéger son pouvoir et anéantir les groupes djihadistes qui pullulent à Gaza en ce moment. +Ce faisant, le Hamas espère obtenir la légitimité internationale qu'il a longtemps recherché. +Combattre la maladie maintenant +Il est possible pour un enfant qui naîtrait dans dix ans de vivre dans un monde où le sida, la tuberculose et la malaria seraient sur le déclin. +Mais cela pourra uniquement se produire avec un investissement considérable. +Aujourd'hui. +Sinon, le sombre tableau d'aujourd'hui ne fera que s'aggraver. +Chaque jour, ces maladies tuent 16 000 personnes, dévastant des communautés entières et renvoyant certains pays au plus profond de la pauvreté. +Seul un enjeu plus élevé peut renverser la situation. +Les succès récents du Brésil dans la lutte contre le sida, au Mozambique contre la malaria et en Chine contre la tuberculose montrent ce qui peut être accompli sur une échelle mondiale avec des ressources plus importantes. +Il existe de nouvelles manières de diriger l'aide là où elle est le plus nécessaire. +Un instrument essentiel de cette lutte est le Fonds mondial de la lutte contre le sida, la tuberculose et la malaria. +Créé en 2002 sous la forme d'un partenariat entre les gouvernements et la société civile, le Fonds mondial est unique en ce qu'il entreprend pour acheminer l'aide nécessaire. +Répondant à de véritables besoins sur le terrain, les projets sont conçus et mis en place par ceux qui en bénéficient et leurs procédures et opérations sont transparentes. +Dernièrement, on parle beaucoup d'intensifier les efforts pour l'éradication de la pauvreté. +Avant le sommet du G8 en Écosse en juillet, une coalition d'organisations non gouvernementales a lancé « l'Appel mondial pour une action contre la pauvreté » et notre hôte britannique a fait de l'Afrique sa priorité absolue. +S'appuyant sur cet élan, les campagnes pour le soulagement de la dette, la réforme des échanges commerciaux et l'accroissement de l'aide aux pays pauvres y ont gagné en prise. +Pourtant, alors que les promesses d'augmenter l'aide au développement se sont envolées, le financement à court terme reste tristement inadéquat. +Toute stratégie pour relever les niveaux de vie doit inclure des mesures d'urgence pour s'attaquer au sida, à la tuberculose et à la malaria. +Enrayer l'avance de ce trio infernal de maladies est l'étape principale dans cette lutte mondiale contre la pauvreté. +Si elles ne sont pas contrôlées, ces maladies saboteront non seulement les économies nationales mais mettront également en danger la paix et la sécurité. +Les enseignants et le personnel soignant meurent, la police et les forces de sécurité sont durement touchées et 14 millions d'enfants ont déjà perdu leurs parents à cause du sida. +Nous risquons maintenant de ne pas atteindre les objectifs de développement du Millenium déterminés par les Nations unies visant à renverser les progrès du sida, de la tuberculose et de la malaria pour 2015.Cet échec handicapera d'autant les possibilités d'atteindre les autres objectifs du Millenium dans la lutte contre la pauvreté. +Une réponse globale doit être apportée au sida, à la tuberculose et à la malaria. +Agir maintenant permettra de dépenser moins dans le long terme. +Des investissements dans la prévention, le traitement et la recherche efficaces en 2005 et 2006 épargneront des millions de vie, réduiront l'impact économique de ces maladies dans les pays pauvres et supprimeront le besoin de dépenser toujours plus pour circonvenir ces maladies chroniques à l'avenir. +Le Fonds mondial joue un rôle important dans cet environnement de financement, offrant près de 66 % de tous les fonds externes disponibles dans la lutte contre la tuberculose, 45 % des fonds engagés dans la lutte contre la malaria et 20 % des fonds engagés dans le soutien externe de la lutte contre le sida. +Depuis la création du Fonds mondial il y a trois ans, ses réussites sont impressionnantes : l'octroi de 310 subvention pour un montant de 3,1 milliards USD dans 127 pays et des dépenses qui s'élèvent à 920 millions USD depuis 2002. +Malgré la portée de sa mission, sa bureaucratie est minime, ce qui lui permet d'être flexible dans sa réponse à des besoins en pleine évolution. +Le Fonds mondial n'est pas parfait : comme pour toutes les nouvelles organisations, il traverse des difficultés de croissance. Pourtant, les questions de politiques d'approvisionnement, les compromis entre efficacité et propriété et l'équilibre entre les organisations gouvernementales et les organisations non gouvernementales comme partenaires dans les mises en œuvre sont étudiées via les systèmes de gouvernance ouverte et universelle. +Si le Fonds doit se montrer à la hauteur de son potentiel, il a besoin de 2,3 milliards USD pour poursuivre son œuvre de manière efficace en 2005. +La première de deux conférences de renflouement pour le Fonds mondial se tiendra cette semaine à Stockholm, avec pour but de garantir des promesses financières pour couvrir les engagements de subventions pour 2006-2007, tout comme pour combler le fossé creusé cette année. Les donateurs ont toujours prêché l'importance d'un mode de financement tel que le Fonds mondial : basé sur les besoins, s'appuyant sur les possibilités locales et faisant la promotion de la coordination des dons. +Ils ont maintenant une chance de pratiquer ce qu'ils prêchent. +Avec toutes les batailles qu'il reste à mener dans la lutte contre le sida, la tuberculose et la malaria, il serait véritablement honteux de ne pas profiter de cette chance. +Inégalité de l'Europe en matière d'investissement de défense +Les débats portant sur la politique étrangère entre l'Europe, la France en particulier, et les Etats-Unis grandissent et pas seulement au sujet du massacre des Israéliens et des Palestiniens et la conduite de la guerre contre le terrorisme. +Mais les critiques de l'Europe, quelle que soit leur justesse, ne seront pas prises au sérieux par les Etats-Unis tant que le Continent continuera de s'en prendre abondamment aux défenses américaines, ce qu'elle fait depuis un demi-siècle. +Dans un monde belliqueux, être crédible dans l'arène internationale requiert une capacité militaire estimable et une technologie militaire de pointe. +L'Europe manque des deux. +L'irritation de l'Amérique envers certains de ses alliés européens - le Royaume-Uni de Tony Blair constituant la seule exception visible - est compréhensible. +Dans l'année fiscale en cours, les Etats-Unis dépenseront 50 milliards de dollars supplémentaires en matière de défense en portant leur facture de défense globale à 379 milliards de dollars, soit plus de 3 % du PNB. +Cette somme est en fait minime par rapport à celles dépensées après la Deuxième guerre mondiale. +Au moment de la Guerre du Golfe en 1991, les dépenses américaines en matière de défense se montaient à 4,8 % du PNB ; elles étaient bien plus élevées dans les années 1950 et 1960. +L'engagement de l'Europe en matière de défense raconte une autre histoire. +Les dépenses de défense se montent à 1,6 % du PNB en Allemagne, à 2 % en Italie et à 1,5 % en Espagne ; seuls la France et le Royaume-Uni atteignent les 3 %. +Mais limiter le débat à l'engagement de défense au pourcentage de PNB dépensé dans l'armée est insuffisant car il existe des économies d'échelle dans les dépenses de défense. +On s'attendrait donc à ce que les plus petits pays dépensent proportionnellement plus en matière de défense que les plus grands. +Au lieu de cela, l'Amérique à elle seule dépense aujourd'hui plus que la plupart de ses alliés de l'OTAN réunis, et il est probable que les dépenses de défense aux Etats-Unis augmentent encore plus dans les années à venir. +La sécurité et l'influence mondiale ne sont pas les seuls avantages obtenus grâce aux dépenses militaires. +Environ 10 à 15 % des dépenses militaires américaines financent une recherche de base et permettent ainsi d'accroître fortement la recherche et le développement de pointe de l'Amérique. +L'Internet, basé sur les réflexions et les dépenses engagées dans les années 1940, ainsi que la puce en silicium, développée dans les années 1970, sont tous les deux des produits de la recherche financée par le Pentagone. +La guerre en Afghanistan, qui s'est révélée réellement révolutionnaire dans la façon dont elle a été menée, démontre comment une nouvelle technologie d'information et de communication peut engendrer le succès avec un nombre minimal d'hommes sur le terrain et des pertes minimales. +Les Russes se sont battus pendant dix dures années sur le même terrain en Afghanistan. +Parce qu'ils manquaient d'une technologie comparable, ils ont perdu des dizaines de milliers d'hommes et ont finalement été battus. +Au début de la campagne afghane, beaucoup d'" experts " militaires craignaient que les Etats-Unis ne doivent affronter un destin semblable. +Comme ils se trompaient ! +L'Europe a du retard sur les Etats-Unis en matière de R & D et son avarice en matière de défense contribue puissamment à une " inégalité en matière d'investissement " de pointe qui ne fait que croître. +Les données relatives aux brevets attestent de l'avantage de l'Amérique : à la fin des années 1990, 56 % de tous les brevets mondiaux dans les domaines de pointe étaient accordés aux demandeurs américains, contre seulement 11 % aux demandeurs européens. +Le lien entre la R & D et la croissance est trop évident pour douter du fait que les économies stagnantes de l'Europe résultent directement du retard européen en matière d'innovation - et que ceci, à son tour, peut refléter l'absence de dépenses militaires cruciales destinées à attirer les investissements dans la recherche et le développement. +Le débat en cours entre l'Europe et les Etats-Unis quant au choix de l'avion de transport militaire - qui servira à déployer les nouvelles forces de réaction rapide européennes fortes de 600 000 hommes - est symptomatique des problèmes de l'Europe. +L'Amérique souhaiterait que l'Europe opte pour un avion construit par Boeing et Lockheed Martin. +L'Europe est divisée : certains pays, notamment l'Italie, soutiennent les Etats-Unis ; d'autres, notamment la France et l'Allemagne, témoignent en faveur d'un avion européen construit par Airbus dans le cadre d'un projet de 15 milliards de dollars financé dans le secteur public. +C'est une question sur laquelle l'Europe doit tenir tête aux Etats-Unis. +L'Union européenne doit financer le projet Airbus et s'assurer qu'une partie importante de l'argent va dans la R & D afin d'encourager la croissance d'une industrie qui compose l'une des quelques réussites de pointe européennes. +Mais qui doit avancer les fonds nécessaires à ce lourd investissement ? +Au cours des dernières semaines, les ministres de la défense européens ont suggéré que les augmentations des dépenses militaires soient exclues des contraintes budgétaires imposées par le pacte de stabilité de l'euro. +L'idée qu'une soudaine augmentation des dépenses militaires dans un monde (avec espoir temporairement) belliqueux soit amortie avec quelques déficits correspond à une politique économique solide, mais seulement si le reste du budget reste " maigre ". +Tel est le cas en Amérique où personne ne s'inquiète réellement si l'accroissement des dépenses militaires crée un déficit temporaire. +Pas en Europe. +Une augmentation des dépenses militaires, conjointement avec l'application du pacte de stabilité, doit entraîner une baisse du budget qui n'est pas consacré à la défense : les salaires des fonctionnaires et un Etat providence qui a largement dépassé l'objectif de soutien des revenus des pauvres doivent nécessairement être fortement réduits. +Pendant un demi-siècle, l'Europe s'est reposée sur les Etats-Unis en matière de sécurité tout en dépensant son propre argent dans un Etat providence onéreux. +Une telle situation ne peut plus continuer - du moins pas si l'Union européenne envisage sérieusement de jouer un rôle de premier plan dans le monde. +Ce n'est pas un message agréable à entendre, mais ce qui s'est produit à New York et à Washington le 11 septembre et ce qui se produit actuellement au Moyen-Orient ne sont pas non plus agréables : l'Europe doit réaliser que des changements sont nécessaires et agir en conséquence. +Argentine : ouverture ou arrêt complet +« J'ai une mission politique de grande importance », déclara Eduardo Amadeo lors de sa nomination au poste d'ambassadeur argentin à Washington, « je dois expliquer notre transition ». +Mais les explications diplomatiques ne sont pas ce dont l'Argentine a le plus besoin. +Elle n'a guère besoin de dépenser ses faibles revenus en gestes diplomatiques de peu de valeur, pas quand le pays a besoin d'une institution entièrement consacrée à aider les hommes d'affaires argentins à vendre leurs biens de production à l'étranger. +En fait, les sommes que l'Argentine consacre à sa diplomatie représentent ce que la petit Irlande consacre au son agence de développement des exportations, une institution que l'Argentine ne s'est jamais souciée de mettre en place. +Au lieu de s'adresser à ses collègues diplomates, l'ambassadeur argentin auprès des États-Unis devraient s'adresser aux supermarchés américains pour convaincre leurs directeurs d'acheter les produits argentins et organiser des rencontres avec les hommes d'affaires des PME argentines. +Il n'est pas censé faire double emploi avec le président argentin et le ministre argentin des affaires étrangères, capables de mener à bien leur tâche. +La diplomatie de l'exportation est importante, mais la promotion des exportations, la visite des magasins et les rencontres avec les acheteurs sont encore plus cruciales. +Les magasins d'alimentation d'Europe sont pleins de produits importés d'Israël mais quelles quantités de boeuf ou d'autres produits argentins peut-on voir aux étalages ? +L'économie argentine s'est considérablement ouverte ces dernières années, en dépit des taux de change élevés qui mirent en difficulté les exportations. +Le total des exportations a doublé de 1991 à 2001, passant de 12 à 25 milliards de dollars, les exportations industrielles s'étant accrues de 3 à 8 milliards. +Mais les chiffres resteront faibles. +En fait, l'Argentine reste étrangement fermée pour une économie de cette taille. +Les exportations ne dépassent pas les 10% de son PIB, et les biens de consommation ne représentent qu'un tiers du total de ses exportations. +Le Brésil, un pays huit fois plus grand, exporte 12% de sa production économique, et 57% des exports brésiliens sont des biens de consommations. +Les exports chiliens représentent près de 30% de la production industrielle chilienne. +Certains petits pays européens s'approchent des 50%. +Il est donc peu étonnant donc que la crise que traverse l'Argentine aujourd'hui soit si dure : la part de son économie qui peut générer des revenus d'exportation nécessaire au remboursement de la dette est trop faible. +Quand un pays en arrive a avoir besoin de la totalité de ses exportations pour rembourser sa dette nationale et que l'importance de ses exportations reste fixe, il ne lui reste aucune ressource pour payer ses importations. +Ainsi les importations cessent et son économie s'arrête. +Plus une économie est ouverte, plus elle peut facilement éviter ce piège. +Bien sûr, tous les pays finissent toujours par surmonter les crises. +Reste à savoir comment. +L'Argentine fait maintenant face à un choix tant économique que politique. +La voie du développement qu'elle choisira au sortir de sa crise déterminera son futur pour bien des années à venir. +Il est ainsi surprenant que cette question ne soit pas au coeur des débats politiques de la campagne pour l'élection présidentielle actuellement en cours. +Il y a deux solutions au marasme actuel. +L'une relève des anciens modèles : un redressement des salaires et la reprise de la consommation. +Vu de la perspective désespérante de la crise actuelle, ce modèle ressemble à un rêve. +Mais s'il est mis en place, dans trois à cinq ans, l'Argentine ressemblera au pays que nous avons toujours connu : une économie relativement fermée qui reste dangereusement vulnérable aux chocs économiques externes. +L'alternative reste de capitaliser sur la chance exceptionnelle offerte par la dévaluation du peso mise en place cette année, permettant ainsi que son avance concurrentielle dure suffisamment longtemps pour basculer les ressources vers le secteur des exportations. +Bien sûr, cela entraînera une baisse des salaires et de la consommation puisque l'accroissement des revenus en peso sera utilisé au refinancement des investissements nécessaires à l'expansion du secteur des exportations. +Cela mènera à créer de nouvelles entreprises et à redessiner celles qui existent déjà pour les rendre compatibles avec les besoins en exportations. +Mais les gains de productivité à l'exportation de l'industrie d'exportation mieux développée finiront par permettre l'accroissement des salaires et de la consommation. +En bref, l'économie argentine doit s'ouvrir ou risquer un arrêt complet. +Les politiques économiques peuvent aider son ouverture. +En gelant les coûts des services publics, le gouvernement gagnerait sur deux fronts : l'inflation resterait sous son contrôle et l'altération des primes à l'exportation basculerait les investissements du secteur domestique vers les sociétés d'exportations. +Si l'ancien modèle permet des résultats plus rapides, les implications à long termes restent ternes car l'économie reste sanglée dans les mêmes problèmes qu'elle affronte depuis des décennies. +L'alternative reste de regarder plus en avant et de se demander quel type de pays l'Argentine veut transmettre aux générations futures. +La réponse ne doit pas faire de doute, si ce n'est dans l'esprit des politiciens qui ne parviennent à l'appréhender parce qu'ils refusent de voir au-delà de l'élection présidentielle proche. +Ainsi ne serait-il pas dû au hasard que l'Argentine ait le nombre d'étudiants en psychologie le plus élevé au monde. +Au sein d'un pays fermé et introverti, le besoin en psychologues est grand. +Le ministre de l'éducation rendrait un grand service à son pays si elle réallouait les ressources dévolues à l'enseignement de la psychologie vers des cursus destinés à former les promoteurs de l'exportation nécessaires. +Enseigner aux jeunes les fondements du marketing et les envoyer dans les ambassades argentines : ils feront des merveilles contrairement aux discours à deux sous de son excellence l'ambassadeur Amadeo aux soirées de Washington. +Le Big bang de la liberté économique +Pourquoi est-il si difficile de mettre en place la dérégulation dont toute économie a besoin pour devenir plus compétitive ? +Pourquoi tant de gouvernements essaient-ils de réaliser cet objectif et pourquoi la plupart d'entre eux n'y parviennent pas ? +Tous leurs concitoyens bénéficient de la compétitivité du marché des biens et des services, mais le plus souvent, le large consensus nécessaire au soutien de politiques de compétitivité ne se matérialise pas, le soutien politique n'existe simplement pas. +Pourquoi ? +Cette question est importante non seulement pour les économies de transition et les pays aux marchés émergeants, mais pour les pays développés également--en fait, presque partout sauf pour les États-Unis et le Royaume-Uni, qui se sont lancés depuis longtemps dans un processus de libéralisation économique radical et d'une portée considérable. +La Nouvelle-Zélande et l'Irlande ont suivi, et leurs économies se sont fortement développées depuis. +Le manque de compétitivité est habituellement le fait d'une régulation excessive. +Les services des taxis des capitales européennes sont chers car le nombre de licence est strictement contrôlé. +En bloquant l'accès au marché, les propriétaires de licence ne font face qu'à une faible concurrence pour limiter l'augmentation des prix de leurs services, et les officiels qui accordent ces licences se trouvent bien placés pour récolter des voix ou des pots-de-vin. +En bref, la régulation a tendance à dénaturer tout encouragement, stimulant ainsi ce que les économistes appellent un comportement à la recherche de rentes : le chauffeur de taxi et le fonctionnaire qui octroie les licences reçoivent des primes imméritées (rentes) simplement parce qu'ils peuvent exploiter leur position d'initié, et non pas parce qu'ils sont plus productifs. +Les notaires représentent un autre exemple de ce phénomène : dans de nombreux pays, les notaires demandent des honoraires très élevés pour des services quasiment inutiles. +Les honoraires sont élevés parce que les notaires contrôlent eux-mêmes l'accès à leur profession. +Sans réglementation gouvernementale (y compris des règlements imposant que le public achète ces services inutiles), les notaires ne seraient pas en mesure de réclamer ces rentes. +Les exemples des avantages de la libéralisation sont nombreux. +Le marché des taxis en Irlande a été libéralisé, et le prix des courses y est bon marché. +Pendant les mois qui suivirent la dérégulation des compagnies aériennes américaines, le coût d'un vol de cinq heures entre New York et Los Angeles coûtait bien moins cher que la demie-heure de vol entre Zurich et Francfort. +De tels écarts se retrouvaient entre le coût d'un appel téléphonique d'une côte à l'autre des États-Unis et d'un appel interurbain passé en France. +Tandis que les régulations créent des rentes immérités pour des minorités surprotégées (les chauffeurs de taxi, les notaires, les pilotes de ligne, les salariés des compagnies de téléphone ou d'électricité), la dérégulation réduit ces rentes et les redistribuent dans le public en général. +Mais du fait que ces minorités surprotégées jouissent d'accès privilégiés au monde politique, il n'est pas surprenant de constater que la libéralisation incite à tant d'opposition féroce et efficace. +Les services publics sont une excellente illustration de ce fait. +À chaque fois qu'un gouvernement tente de libéraliser l'industrie de l'électricité, les syndicats et les entreprises s'unissent pour s'y opposer. +Salariés et encadrement s'opposent à la dérégulation car s'ouvrir à la concurrence ferait disparaître leurs rentes imméritées. +Les salaires des employés de l'électricité sont élevés précisément parce qu'ils se sont appropriés une part de ces rentes crées sur un marché fermé à la concurrence. +Est-il possible d'affaiblir cette opposition ? +Que se passerait-il si un gouvernement essayait, au lieu de libéraliser l'industrie de l'électricité uniquement, de créer un big bang économique en essayant de libéraliser la plupart des marchés en même temps ? +Un processus analogue du « tout ou rien » fut mis en place aux États-Unis dans les années 1980 pour la fermeture des bases militaires devenues inutiles. +Depuis 1945, il n'y avait eu aucune fermeture de base. +Même si le Pentagone souhait lui-même en fermer de nombreuses pour utiliser les fonds ailleurs, aucune mesure ne parvenait à passer le vote du Congrès parce que les bases militaires sont considérées comme « pain béni », les faveurs de leur électorat aidant les hommes politiques à se faire réélire, et selon une vieille et vénérable loi informelle, aucun élu ne vote jamais contre le « pain béni » dans le district d'un collègue. +Pourtant, une proposition pour fermer de nombreuses bases fut acceptée avec une majorité écrasante quand les leaders du Congrès se mirent enfin d'accord pour présenter une liste unique de bases à fermer. Cette liste pouvait être acceptée ou rejetée, sans aucune possibilité d'être modifiée. +Le bon sens l'a emporté sur le pain béni. +La cause de la libéralisation économique serait grandement avancée si des stratégies similaires étaient adoptées. +Par exemple, les électriciens comprendraient qu'en tant que consommateurs ils gagneraient à payer moins cher certains biens de consommation, ce qui compenserait leurs pertes de rentes au sein de leur compagnie. +L'approche « big bang » permet d'intéresser les employés à la libéralisation et de ce fait faciliter la mise en place des politiques de dérégulation. +La dérégulation des marchés a d'autres avantages supplémentaires : elle facilite la libéralisation du marché du travail, ainsi que le montrent les études de l'OCDE quant à la forte corrélation positive dans plusieurs pays entre le degré de concurrence sur le marché des biens de consommation et l'importance des régulations du marché de l'emploi dans l'accroissement du pouvoir des salariés dans leurs négociations avec leurs entreprises. +Les négociations portent principalement sur la distribution des excédents de rentes entre l'entreprise et ses employés. +Dans une industrie concurrentielle où l'excédent de rente n'existe pas, il reste peu à négocier. +Dans certains cas, cependant, la régulation a des effets opposés : elle permet de maintenir artificiellement le prix des services publics à de faibles niveaux plutôt qu'à des niveaux trop élevés. +Ceci est vrai pour les chemins de fer du continent européen, puisqu'ils sont financés par les gouvernements. +Ici encore, gagner la bataille de la dérégulation nécessite de convaincre les consommateurs qu'ils y trouveront leur compte. +Le prix des déplacements en train seront plus chers mais les impôts baisseront puisque seuls ceux qui utilisent vraiment le train payeront les coûts plutôt que les contribuables qui ne voyagent pas en train. +La dérégulation des compagnies aériennes et de bus créera également une saine concurrence avec les chemins de fer et permettra d'empêcher la hausse excessive des prix. +Toute dérégulation décousue est condamnée à échouer. +Pour parvenir à créer un soutien politique suffisant pour mettre en place certaines réformes pouvant survivre à l'opposition des intérêts privés requiert une tentative de dérégulation globale de l'économie et non pas dans certains secteurs industriels seulement, les uns après les autres. +La seule façon d'éliminer les subventions inefficaces et non productives accordées à certaines minorités reste de mettre en place des réductions d'impôts pour tous. +Le défi universitaire de l'Europe +Les systèmes universitaires des Etats-Unis et de l'Europe Continentale ne pourraient pas être plus différents. +Lequel fonctionne le mieux ? +La réponse est claire : celui de l'Amérique, et de loin. +Les universités européennes sont généralement basées sur trois principes peu judicieux: +Ce système est soi-disant plus égalitaire que le système d'enseignement supérieur de l'Amérique, que beaucoup d'Européens méprisent comme étant un système élitiste. +En réalité, le système européen engendre généralement moins de chercheurs et des étudiants plus médiocres, particulièrement au niveau du doctorat, et il est probablement moins égalitaire que le système américain. +Le fait que les contributaires couvrent les coûts d'une éducation universitaire est en effet redistributif, mais dans la mauvaise direction : les bénéficiaires sont le plus souvent les enfants des familles européennes aisées. +Même en observant une attitude généreuse, le système est, au mieux, neutre dans la mesure où la redistribution est concernée, car les plus riches paient plus d'impôts et utilisent plus de services universitaires. +En plus de favoriser les « nantis » de l'Europe, ce système rend quasiment impossible pour les universités privées autofinancées de survivre. +En fait, ceci est probablement la vraie motivation du système universitaire public gratuit européen : maintenir le monopole de l'Etat sur l'enseignement supérieur. +Mais considérons plutôt le système américain : les étudiants paient pour leur éducation et, avec une partie des frais que ces étudiants versent, les universités financent les bourses pour les étudiants méritants mais pauvres. +Un tel système est au moins aussi « équitable » que le modèle européen et probablement plus qu'un système dans lequel les contribuables paient pour tous, y compris les riches. +En effet, une recherche récente comparant l'éducation aux Etats-Unis et en Italie démontre que les revenus familiaux jouent un rôle plus important pour déterminer la réussite d'un étudiant (mesurée à l'aune de son salaire) dans l'Italie « égalitaire » qu'ils ne le sont dans l'Amérique « élitiste ». +Mais la concurrence est aussi importante que le financement pour déterminer la qualité d'une université car la concurrence augmente le mérite du produit. +Ceci est vrai dans le système américain, dans lequel les universités publiques et privées coexistent harmonieusement. +L'université de Californie à Berkeley est publique. +L'université de Stanford, à une heure de route en descendant vers la côte, est privée. +Toutes les deux figurent parmi les meilleures universités d'Amérique. +La concurrence entre elles fonctionne car elle implique une lutte pour attirer les meilleurs étudiants et l'offre de bourses aux étudiants pauvres méritants. +Par contraste, le contrôle de la centralisation et de la bureaucratisation en Europe sur les universités n'engendre que médiocrité. +Les nominations dans les universités européennes sont souvent régies par des processus bureautiques complexes qui impliquent un nombre infini de « juges » choisis dans tout le pays. +Ce processus est soi-disant destiné à « garantir » que les meilleurs enseignants sont nommés. +En réalité, ces juges permettent aux initiés de nommer leurs amis plutôt que de favoriser la qualité de la recherche et de l'enseignement pour déterminer les enseignants qui sont engagés. +Certains pays, comme la France, sont en train de changer leurs systèmes en nommant quelques universitaires d'autres pays dans des comités de recrutement et d'avancement. +Tandis que cette action constitue à l'évidence un pas dans la bonne direction, elle ne produira que peu de résultats. +Les meilleures universités américaines font fonctionner leurs processus de recrutement en interne, en s'appuyant uniquement sur les étrangers pour obtenir des opinions d'expert sur la qualité de la recherche d'un professeur candidat. +Les meilleures nominations sont le fait de la menace selon laquelle des professeurs médiocres ne permettront pas d'attirer de bons étudiants et d'importantes subventions de recherche. +La tendance de l'Europe à égaliser le salaire et le traitement des professeurs et des chercheurs réduit également l'incitation à s'engager dans une recherche et un enseignement de qualité. +Si le seul facteur d'augmentation du salaire d'un professeur est le passage du temps, pourquoi ferait-il l'effort supplémentaire d'exceller ? +Bien entendu, l'amour de la recherche et de l'enseignement explique pourquoi beaucoup de personnes rejoignent les facultés universitaires en premier lieu, mais pourquoi ne pas fournir à ces nobles sentiments une main secourable avec des incitations financières appropriées ? +Les bas salaires font souvent partie d'un marché implicite : en échange d'un salaire médiocre, les administrateurs universitaires ferment les yeux sur la paresse de l'enseignement et de la recherche. +De plus, si les salaires sont bas, comment les doyens des universités peuvent-ils empêcher leurs professeurs de quitter le pays pour une activité plus lucrative ? +Ils obtiennent simplement un enseignement médiocre, une recherche de mauvaise qualité et des professeurs absents. +Les universités américaines utilisent souvent des incitations financières agressives et un traitement différentiel des professeurs afin de récompenser un enseignement et une recherche de qualité. +De plus, la nature privée des contrats entre une université américaine et ses professeurs crée une concurrence saine pour le talent et un marché flexible et efficace pour les savants. +Par conséquent, il n'est pas rare qu'un jeune professeur brillant et productif en Amérique gagne autant, si ce n'est plus, que des collègues plus âgés et moins productifs. +En Europe, les jeunes chercheurs prometteurs luttent et doivent compléter leur enseignement et leur recherche par un autre travail alors que les professeurs établis gagnent de bons salaires. +Dans ces conditions, cela ne surprendra personne que les universités américaines de nos jours soient de plus en plus composées de plusieurs des meilleurs savants européens. +Il est surprenant, face à cet exode des cerveaux, que la pression des professeurs universitaires en Europe pour bloquer les réformes soit si forte. +Une Europe âgée et vieillissante +Quand le Secrétaire à la défense américain Donald Rumsfeld évoqua dernièrement « la vieille Europe », il avait raison, mais pas comme il le pensait. +L'Europe est en effet vieille, et vieillissante. +À travers tout le continent, les enfants se font de plus en plus rares. +Le taux de natalité (le nombre d'enfants par femme dans la population) est tombé à 1,2 % en Allemagne et en Italie. +Le taux de natalité est encore plus bas en Espagne : c'est le plus faible d'Europe. +La société espagnole est une société jeune encore, mais une société sans enfant est condamnée. +En revanche, le taux de natalité des États-Unis est de 2,4 et celui du Royaume-Uni est de 2,1. +Ces différences sont extraordinaires, particulièrement à la lumière des politiques moins généreuses de congés de maternité qui ont cours aux États-Unis et au Royaume-Uni par rapport à l'Europe continentale. +La France se distingue sur le continent avec un taux de natalité de 1,8, ce qui est probablement le résultat d'années de politiques familiales généreuses envers les familles nombreuses. +L'immigration est également un facteur important dans ces différences. +Les taux de natalité plus élevés aux États-Unis, au Royaume-Uni et en France reflètent le grand nombre de familles immigrées de chaque pays. +Le taux de natalité chez les immigrés est habituellement plus élevé que chez les populations européennes ou nord-américaines. +Pourtant, l'augmentation du nombre de travailleurs immigrés n'augmente pas nécessairement le taux de natalité. +En Allemagne par exemple, il existe un grand nombre de travailleurs invités, mais ils sont peu à s'établir là avec leur famille, la plupart laisse leurs enfants dans leur pays d'origine. +La population vieillissante contribue au manque de performance économique européen. +Les vieux ne travaillent pas, et un groupe de plus en plus petit (les jeunes en voie de disparition) est imposé pour les soutenir. +En retour, les taux d'imposition élevés requis pour soutenir les populations âgées découragent les jeunes de travailler, créant un cercle vicieux : une imposition en constante augmentation pour une force de travail en voie de disparition, des taux de croissance en baisse et toujours moins de ressources disponibles pour soutenir ceux qui prennent leur retraite à 60 ans et vivent au delà de leur 90ème anniversaire. +Les effets de ce phénomène sont en partie compensés par le fait que, faisant moins d'enfants, plus de femmes entrent sur le marché du travail. +Toutefois, ces femmes prennent également leur retraite (souvent à un plus jeune âge que les hommes), venant ainsi s'ajouter à l'armée des retraités qui ne sont pas « financés ». +En comparaison avec les États-Unis, en dépit du taux de natalité élevé, la participation des femmes au marché du travail est également en hausse. +En fait, la participation des femmes au marché du travail est plus élevée aux États-Unis que dans l'Union Européenne (70 % contre 60 %). +Les taux d'épargne chez les personnes âgées en Europe indiquent qu'elles s'inquiètent du nombre déclinant de travailleurs qui peuvent être imposés pour les soutenir. +Si l'on examine le cas de l'Allemagne, n'importe quel classique économique montrerait, selon le fameux modèle du « cycle de vie », que les jeunes épargnent pour leur retraite tandis que les retraités dépensent ce qu'ils ont accumulé. +Mais en Allemagne les données semblent suggérer un fait étonnant : les retraités économisent jusqu'à leur dernier jour. +Ce sont les jeunes qui consomment. +Le fait le plus étonnant n'est pas le niveau d'épargne des retraités, mais son évolution dans le temps. +Des études allemandes récentes ont mis en évidence une petite augmentation dans leur taux d'épargne. +Pourquoi est-ce que les retraités épargneraient ? +La raison la plus probable est que nombre d'entre eux réalisent maintenant qu'ils vont vivre bien plus longtemps qu'ils ne le croyaient, passant un tiers de leur vie en retraite, et que l'État pourrait bien ne plus tenir ses promesses. +Il est peu probable, même si ce n'est pas impossible, que les retraites souffrent de cessation de paiement, mais il est probable que les remboursements des soins de santé en pâtissent alors que c'est, et de loin, le service le plus important pour les retraités. +Quand on a compris que l'on va probablement vivre au-delà de notre 80ème anniversaire et bien plus, et que la qualité des services publics de santé se dégrade, on économise plus pour pouvoir subvenir à ses propres besoins. +Alors pourquoi les Européens ont-ils de moins en moins d'enfants ? +Les temps de loisirs augmentent même pour ceux qui ont un travail, offrant ainsi de plus grandes possibilités pour élever des enfants. +Le nombre d'heures de travail en Europe est tombé de 1 713 heures par an en 1980 à environ 1 576 aujourd'hui, et ce sont les Allemands qui ont le moins d'heures de travail. +Une des explications les plus souvent mentionnées est le manque de structures telles que la prise en charge publique des enfants pour les mères qui les élèvent. +Dans ces conditions, pourquoi le taux de natalité des États-Unis est-il supérieur à celui de nombreux pays européens où l'aide publique aux femmes enceintes est plus importante ? +Le déclin des taux de natalité en Europe s'explique vraisemblablement par les coûts élevés du logement et les imperfections des marchés de prêt. +Il est plus facile pour un jeune couple américain d'emprunter pour acheter une maison que pour un jeune couple européen. +Le marché de la location est aussi plus flexible aux États-Unis. +Ainsi, un autre cercle dangereusement vicieux semble être à l'oeuvre : les taux d'imposition élevés découragent le travail, et du fait que moins d'emplois sont créés, la natalité n'est pas encouragée. +Mais avec moins d'enfants, des taux d'imposition élevés sont requis pour soutenir l'armée grandissante des retraités. +Gunther Grass a intitulé l'un de ses romans « Les Enfants par la tête ou les Allemands se meurent ». +Il ignorait combien son imagination aurait raison trois décennies plus tard. +La réforme tardive de l'Europe +La guerre et son coût démesuré, un dollar en baisse, un déficit commercial et budgétaire en hausse, les chicanes qui ont mis à mal des entreprises comme Enron et WorldCom, l'éclatement de la bulle haute technologie : le capitalisme à l'américaine est à la fois mis à rude épreuve et tombé en disgrâce. +Qu'ils soient de gauche ou de droite, un grand nombre d'intellectuels européens estiment que le jeu capitaliste tel qu'il est joué par les Etats-Unis est tombé en désuétude. +La recherche de nouveaux modèles a activement commencé. +Faisant la part belle à la rhétorique et alimentée par une vague d'anti-américanisme, cette recherche ne présente pas beaucoup de faits concrets. +Les récits de malversation d'entreprise abondent bien évidemment aux Etats-Unis. +Mais c'est chose aisée que de passer rapidement de scandales d'entreprise individuels à des conclusions générales sur la soi-disant corruption de l'économie américaine. +Un examen approfondi de la croissance de la productivité (rendement par heure travaillée) aux Etats-Unis et en Europe montre que le capitalisme américain demeure aussi indispensable que jamais. +Suivant une courbe de croissance annuelle d'à peine 1,6 % depuis le début des années 1970, la croissance annuelle de la productivité américaine dans le secteur d'activité non agricole est passée à une moyenne de 2,6 % depuis 1995, sans montrer de signe de ralentissement. +En 2002, la productivité s'est accrue de 4,8 %, un résultat extraordinaire car la productivité chute généralement lors de ralentissements économiques. +Considérons maintenant l'Europe. +La croissance annuelle de la productivité s'est en fait ralentie au cours de la deuxième moitié des années 1990, en passant de 2,5 % à tout juste 1,3 % à l'heure actuelle. +Cet écart de productivité est souvent attribué à la « Nouvelle Economie » qui a émergé à la fin des années 1990. +Il est vrai que plusieurs nouvelles technologies ont été développées et d'abord appliquées aux Etats-Unis. +Mais la technologie se répand rapidement : les mêmes programmes Windows ou SAP sont disponibles dans tous les pays, dont l'Europe. +Il doit donc exister d'autres différences. +Deux candidats se détachent du lot : les attitudes envers le travail et la gouvernance d'entreprise. +Six pays de l'OCDE obtiennent de meilleurs résultats que l'Amérique en termes de rendement par heure travaillée : la Norvège, la Belgique, la France, l'Irlande, les Pays-Bas et l'Allemagne. +Mais le classement change si vous prenez le rendement par tête (une mesure plus fiable de la santé économique d'un pays) : les Etats-Unis se retrouvent en première position, et la France et l'Allemagne chutent à la 16 +La raison pour laquelle il est préférable d'examiner le rendement par personne plutôt que le rendement par heure travaillée est simple : ce qui détermine la santé d'une nation est le nombre d'heures travaillées par personne et le nombre de personnes qui travaillent. +C'est à ce niveau que les Etats-Unis devancent l'Europe : un nombre moins élevé de personnes travaillent en Europe par rapport aux Etats-Unis et les personnes qui travaillent en Europe ne travaillent pas autant. +Chaque travailleur américain travaille 1 800 heures par an, contre 1 500 en France et 1 400 en Allemagne. +Les Européens travaillent moins, entre autres, parce qu'ils paient plus d'impôts, et des impôts élevés sont indispensables pour aider ceux qui ne travaillent pas... un cercle vicieux évident. +Mais des causes plus profondes sont à l'oeuvre. +Les Européens sont sans doute parfaitement heureux de travailler moins et d'avoir davantage de temps libre (plus de vacances pendant qu'ils travaillent et moins d'années travaillées). +C'est un choix légitime, mais une fois ce choix pris, les Européens devraient cesser de chercher des boucs émissaires pour justifier le ralentissement de la croissance. +Car la source du problème n'est pas la Banque Centrale Européenne, pas plus que le Pacte de Stabilité. +L'Europe se développe moins parce qu'elle travaille moins et cela n'a rien d'étonnant si plusieurs soi-disant « pays en voie de développement » rattraperont bientôt l'Europe en termes de revenus par tête. +La disponibilité des nouvelles technologies est une condition nécessaire, mais en aucun cas suffisante, pour accroître le niveau de vie d'un pays car ce pays doit également intégrer des entreprises qui sont en mesure de les utiliser. + +Au début du 20 +La nouvelle économie a fait son apparition après une décennie de transformations profondes au sein des entreprises américaines. +Au cours des années 1980, une vague d'acquisitions par emprunt a transformé la culture américaine d'entreprise, rendant manifestement les patrons plus réceptifs aux innovations technologiques. +Ce n'était pas le cas en Europe, où les intérêts des employés d'une entreprise et des syndicats passaient souvent avant ceux de ses actionnaires. +En effet, dans un journal européen, les articles reçus par courrier électronique étaient saisis par des typographes : la technologie requise pour les transférer électroniquement était disponible, à l'inverse des règles de travail pour l'appliquer. +Les syndicats ne sont pas les seuls coupables. +Un grand nombre d'entreprises européennes disposent de structures de propriété complexes, avec des actionnaires majoritaires dont les intérêts s'opposent souvent à ceux de la société, ce qui ne constitue absolument pas le meilleur moyen de prendre des décisions sensées. +Ceci est particulièrement vrai dans la finance et dans le secteur bancaire. +Quelles que soient les histoires invraisemblables qui circulent sur les entreprises dans les banques américaines, il n'existe pratiquement plus aucune banque d'investissement européenne et l'Allemagne envisage sérieusement de fonder une « bad bank » appartenant à l'Etat afin de sortir d'affaire ses géants bancaires tout-puissants. +Si l'Europe souhaite travailler moins, elle doit être incroyablement productive lorsqu'elle travaille si elle souhaite se maintenir au niveau des Américains qui travaillent d'arrache-pied. +C'est la raison pour laquelle les Européens devraient espérer que la vague de restructuration et de réforme d'entreprise, jugée par plusieurs comme inévitable après la création du marché unique, commence à monter en crête sur le Continent et change le mode de gestion des entreprisescréation d'un me innévitable n et de réforme d'entreprise, que plusieurs érfondes au sein des entreprises américaines.. +Il ne faut pas intervenir sur le taux de change de l'euro +En janvier 1999, lors du passage à l'euro, le cours de la monnaie européenne était de 1,17 dollar, ce qui semblait refléter le niveau des prix de part et d'autre de l'Atlantique. +Depuis, son taux de change a connu un mouvement de yoyo. +Il est maintenant pratiquement au même niveau que lors de son introduction. +Dans ces conditions, pourquoi le monde des affaires déclare-t-il qu'un euro fort est annonciateur de catastrophes ? +Blâmer l'euro est un moyen simple de détourner l'attention de la véritable cause du malaise économique de l'Europe : malgré une productivité horaire relativement élevée, la productivité par travailleur est extrêmement faible. +Cela s'explique par le très faible nombre d'heures effectuées par les Européens. +Il faut clarifier un certain nombre de points fondamentaux relatifs au taux de change de l'euro vis-à-vis du dollar. Le débat public sur cette question est faussé par des idées erronées souvent émises dans un but stratégique : +Personne ne peut expliquer les variations à court terme (entre un jour et six mois) d'un taux de change. +Un célèbre article paru dans une revue spécialisée il y a une vingtaine d'années montrait qu'une prévision au hasard des variations à court terme d'un taux de change se rapproche davantage de la réalité que celles issues de modèles mathématiques sophistiqués. +Cette conclusion reste vraie aujourd'hui. +Personne ne peut expliquer clairement pourquoi l'euro est tombé à 0,8 dollar au bout de 18 mois et personne ne peut prédire quand il va remonter. +Certains observateurs attribuent son "haut" niveau actuel (et par conséquent la faible croissance en Europe) à une politique monétaire rigide de la Banque centrale européenne (BCE). +Mais si ce sont des taux d'intérêt élevés qui sont la cause de la montée de l'euro, pourquoi le dollar s'est-il apprécié quand la Réserve fédérale américaine menait une politique agressive de baisse des taux ? +Il vaut mieux se méfier des commentateurs qui prétendent expliquer pourquoi un taux de change varie comme il le fait. +Les exportateurs qui pensent que leurs difficultés sont dues au niveau actuel de l'euro devraient voir la réalité en face ; au taux actuel, les prix des deux côtés de l'Atlantique sont voisins. +Si les exportations d'une entreprise ne sont rentables qu'avec un euro à 0,8 ou 0,9 dollar, il vaut mieux qu'elle se dépêche d'augmenter sa productivité pour assurer sa survie si la monnaie européenne se cale aux environs de 1,17 dollar. +Durant des années, l'Allemagne et le Japon ont été les plus grands exportateurs de la planète, ceci alors que le yen et le deutsche mark étaient parmi les devises les plus fortes. +C'est grâce à l'innovation et à une productivité élevée et non pas à cause d'une monnaie faible que les marchandises allemandes et japonaises ont inondé le monde. +La zone euro est aussi propice au commerce international que les USA. +Ces derniers ont connu un boom économique dans les années 1990 avec un dollar fort. +Ce qui était vrai pour le deutsche mark en Allemagne et reste vrai pour le yen au Japon, vaut aussi pour les USA. Historiquement, le dollar fort n'a pas freiné la croissance américaine. +Les pays de l'Union européenne exportant près de 50% de leur production, ils considérent le taux de change comme un paramètre important. +Mais la plupart de ces exportations se font au sein de la zone euro et ne sont donc pas affectées par le taux de change de la monnaie européenne. +Les exportations hors zone euro ne représentent que 15 ou 16% de la production et ce pourcentage baissera lorsque la Suède et la Grande-Bretagne adopteront l'euro (si elles l'adoptent). +Les commentateurs, les responsables politiques et les dirigeants d'entreprise devraient donc arrêter de réclamer à cors et à cris que la BCE réagisse face à un euro fort. +L'intervention des banques centrales sur le marché des changes a un rôle déstabilisateur et se révèle contre-productif. +La BCE a eu raison de ne pas réagir lorsque l'euro est tombé à 0,8 dollar de même qu'elle a raison de ne pas bouger aujourd'hui quand il approche de 1,2 dollar. +La plupart des économistes pensent que banques centrales ne devraient s'intéresser qu'à l'inflation, autrement dit, diminuer les taux d'intérêt seulement en cas de ralentissement économique ou de baisse de l'inflation. C'est exactement ce que fait la BCE. +Les Européens devraient moins se préoccuper du taux de change de l'euro et davantage de leurs véritables problèmes : une productivité insuffisante, des marchés trop rigides, une liberté budgétaire entravée à l'excès par le Pacte de stabilité et un système de retraite au bord du gouffre. +Les responsables de la politique économique ont déjà suffisamment de pain sur la planche, ils devraient laisser au marché des changes le soin de réguler les variations de l'euro face au dollar. +Les dangers du pouvoir gris +Avec un soutien bipartisan rare, l'administration Bush propose une augmentation substantielle des retraites pour les personnes âgées. +Les réformes proposées risquent de coûter aux contribuables américains bien plus que la réduction d'impôts massive de 2001 appliquée par le président Bush car elles impliquent une redistribution considérable de la population jeune vers ses aînés. +Mais tandis que de nombreux observateurs ont mis en exergue les risques associés aux réductions d'impôts prônées par Bush et les déficits béants qui se sont ensuivis, seuls quelques-uns d'entre eux semblaient inquiets quant aux déficits supplémentaires qui résulteront de ce don aux personnes âgées. +La situation en Amérique ne fait que souligner l'immense pouvoir exercé par les personnes âgées dans nos sociétés. +Des actions similaires sont entreprises sur l'ensemble du territoire européen, où la générosité des régimes de retraite sponsorisés par l'Etat est devenue non viable, mais il est pratiquement impossible de réformer le système, politiquement parlant. +La montée du pouvoir politique des retraités s'explique par plusieurs facteurs. +Premièrement, dans chaque société industrielle, les gens vivent plus longtemps et ont moins d'enfants. +Associez cela aux régimes de retraite généreux élaborés dans les années 1970, lorsque les enfants du baby-boom d'après-guerre allaient arriver sur le marché du travail et lorsque l'état providence semblait ne connaître aucune contrainte budgétaire, et vous obtenez un droit que personne ne souhaite abolir. +Deuxièmement, les personnes âgées sont en moyenne plus riches que les jeunes, simplement parce qu'ils ont vécu plus longtemps et qu'ils ont donc eu davantage de temps pour accumuler des biens. +Etant plus riches, ils peuvent offrir un soutien financier plus conséquent aux partis et aux politiciens qui défendront leurs intérêts que les jeunes, qui choisiront de militer pour une réforme des retraites. +Enfin, les retraités ont du temps à consacrer à l'organisation d'activités politiques dans leur propre intérêt. +Deux exemples : plusieurs dirigeants de syndicats en Italie sont des retraités et les retraités sont les membres les plus nombreux du syndicat le plus puissant et le plus militant d'Italie, le CGIL. +Aux Etats-Unis, les retraités ont tendance à voter davantage que les jeunes. +Prenons l'exemple suivant qui illustre le mieux leur pouvoir en Amérique : c'est un petit nombre d'hommes et de femmes du troisième âge en Floride qui a déterminé la dernière élection présidentielle ! +Cette situation crée un cercle vicieux : plus le pouvoir politique des retraités et des anciens travailleurs augmente, plus la pression exercée sur le gouvernement afin qu'il diminue la durée de travail et augmente le montant des retraites est forte. +En conséquence de quoi, le nombre d'électeurs qui dépendent des retraites augmente, ainsi que le pouvoir des retraités. +Dans un article récent, Vincenzo Galasso et Paola Profeta, de l'université de Bocconi à Milan, montrent qu'en Italie, ce lien constitue désormais le principal obstacle à une réforme des retraites. +Au fur et à mesure que le temps passe, le soutien politique à une réforme s'amenuise, au moins jusqu'à l'explosion du système. +Autre aspect rendant les réformes difficiles, les systèmes de retraite publics redistribuent les revenus des riches vers les pauvres car ces systèmes sont généralement structurés sous forme de systèmes de « bénéfices définis ». +Les retraites sont liées aux salaires en fin de carrière plutôt qu'à la contribution réelle du travailleur sur l'ensemble de sa carrière. +La portée de cette redistribution varie d'un pays à l'autre, mais elle existe dans l'OCDE, y compris aux Etats-Unis. +Au sein de la coalition anti-réforme, les partisans de la redistribution, généralement des jeunes de gauche, rejoignent souvent les retraités et les anciens travailleurs. +Le mouvement politique qui en résulte est extrêmement puissant et couvre les partis de gauche et de droite, jeunes et personnes âgées confondus. +Les vrais perdants sont les jeunes travailleurs et les générations futures qui devront faire face aux charges fiscales élevées nécessaires pour distribuer aux retraités les bénéfices qu'on leur a promis. +La redistribution implicite dans plusieurs systèmes de retraite est souvent loin d'être « propre ». +De nombreux systèmes comportent des privilèges motivés politiquement uniquement destinés à de puissants groupes de pression. +Au Brésil, le système de retraite des travailleurs du secteur privé est légèrement excédentaire, mais celui des fonctionnaires est extrêmement déficitaire (il équivaut à 4,5 % du PNB du Brésil). +Les fonctionnaires français ont récemment paralysé le pays face à une réforme dont le principal objectif est plutôt modeste : aligner leur retraite sur celle du secteur privé. +Il est encourageant de constater que le gouvernement français a finalement eu gain de cause et intéressant de connaître la méthode employée en ce sens. +Après des semaines de grèves paralysantes, le gouvernement du premier ministre Raffarin a entamé une campagne pour convaincre les électeurs que la réforme se contentait de supprimer les privilèges d'une petite minorité. +Cette affirmation a emporté l'adhésion des électeurs et les fonctionnaires se sont retrouvés isolés. +Bien entendu, étant donné les risques politiques, les gouvernements ne doivent pas attendre la confrontation avec les retraités. +Les représentants gouvernementaux doivent prendre deux mesures évidentes en ce sens. +Premièrement, augmenter l'âge de la retraite. +Cette solution comporte deux principaux avantages : elle diminue le coût global du système en abaissant le nombre des retraités tout en affaiblissant les électeurs opposés à la réforme. +Deuxièmement, éliminer la redistribution implicite dans le système. +En effet, toute redistribution doit être transparente et avoir lieu via l'imposition et les transferts non liés aux retraites. +Bien entendu, il est facile de comprendre pourquoi ce n'est pas le cas : lorsque la redistribution est transparente, ceux qui payent pour cette transparence peuvent se plaindre. +Lorsque la redistribution a lieu via le système de retraite, elle est payée par les générations à naître et qui ne peuvent donc pas faire entendre leur voix lors des prochaines élections. +Entre-temps, nous ne pouvons que suggérer à nos grands-parents d'indemniser leurs petits-enfants en leur laissant des legs généreux avec leurs charges fiscales élevées. +Réformer l'Europe à la base +Jetez un coup d'oeil sur l'histoire de l'Europe au cours des 25 dernières années et vous verrez qu'entre la fin des années 1970 et le début des années 1990, le continent a été en proie à une instabilité macro-économique, un taux de chômage élevé, des marchés excessivement réglementés (y compris, ce qui est plus important, les marchés financiers), des monopoles non réglementés et des industries inefficaces détenues par l'Etat. +L'Europe a accompli des progrès considérables au cours de la dernière décennie en rétablissant la stabilité macro-économique, mais elle n'a pas eu autant de succès dans la promulgation de réformes au niveau micro-économique qui sont essentielles à la déréglementation des marchés et à l'amélioration de leur efficacité. +Pourquoi ? +Les pays de l'Europe Centrale et de l'Europe de l'Est doivent-ils en tirer une leçon au moment même où ils se préparent à rejoindre l'UE ? +Une inflation forte et une dette publique grandissante ont généré un sentiment de « crise » au début des années 1990 dans certains pays de l'UE : lorsqu'une maison brûle, les coûts encourus si vous n'agissez pas sont bien trop élevés pour que vous continuiez à rester là à la regarder brûler et à ne rien faire. +Par exemple, il a fallu la crise des taux de change de 1992 pour que les dirigeants italiens réalisent qu'ils devaient prendre des mesures pour résoudre l'anarchie financière publique du pays. +La peur d'être exclus de l'euro a fait le reste en créant un consensus politique en faveur de mesures adaptées et nécessaires. +Aujourd'hui, la maison économique de l'Europe n'est plus en feu. +Il est ainsi devenu plus difficile de ne pas tenir compte des intérêts spéciaux dans la course à la libéralisation des marchés et l'amélioration de l'efficience économique. +Par exemple, en juin dernier, la France a connu une série de grèves et de manifestations dans la lignée de celles de 1968 qui ont seulement entraîné l'application de réformes mineures sur les systèmes de retraite : l'élimination de quelques privilèges spéciaux détenus par les fonctionnaires. +Dans un sens, de telles réformes pusillanimes résultent du fait que l'Europe est devenue un endroit plus « normal ». +L'Europe ne pouvait tout simplement pas se permettre d'assister à l'échec du projet sur l'euro et ses dirigeants ont donc fait le nécessaire en ce sens. +Mais personne, semble-t-il, ne pourra empêcher ce riche continent de connaître une croissance lente, un taux de chômage élevé et des marchés inefficaces. +Aucune « crise » n'est associée à ce choix, juste un lent déclin. +Les critères de convergence de Maastricht qui ont entraîné la création de l'euro ont été appliqués avec succès car ils étaient imposés par un accord multinational et étaient contrôlés au niveau multinational. +Plus important, le « châtiment » pour non conformité à ces critères était clair, draconien et certain : l'exclusion de l'union monétaire. +Rien de tout cela ne menace l'Europe aujourd'hui. +Ces états membres ont-ils pour cela moins de petites motivations précieuses pour poursuivre le processus de réforme ? +Mais un processus tel que le processus de Maastricht peut-il permettre la mise en application d'une réforme structurale ? +Dans un sens, ce processus est déjà à l'oeuvre. +Un mécanisme s'est souvent révélé efficace pour contrôler les puissants intérêts spéciaux existant au sein de chaque état de l'UE et donc pour appliquer des réformes structurales : les actions de la Commission Européenne. +La France a décidé d'autoriser une ouverture relativement minime de son marché national de l'électricité à compter de la veille du début des procédures officielles engagées contre la France par la Cour Européenne de Justice pour violation d'une directive de l'UE. +L'Italie a mis fin à 70 années d'implication active de l'Etat dans l'industrie grâce à la détermination des Commissaires européens à la concurrence, Karel van Miert et son successeur, Mario Monti. +Manifestement, la Commission Européenne peut jouer un rôle positif seulement si elle adopte une position ferme en faveur de la libéralisation des marchés et ne tombe pas dans le piège de la seule coordination de la réglementation nationale sur l'ensemble du territoire de l'Union. +La réglementation des marchés a besoin d'être coordonnée, mais elle a également besoin d'être éliminée dans de nombreux cas. +Prenons les marchés financiers européens qui offrent une méthode alternative pour sortir de l'impasse réformiste. +Dans la vieille Europe dotée de marchés financiers morcelés, la demande du chancelier Gerhard Schroeder pour que Mannesmann reste une entreprise allemande face à l'offre publique d'achat de Vodaphone équivalait à exécuter un ordre donné par les actionnaires de l'entreprise, en majorité allemands. +En fin de compte, ce genre d'action ne peut plus être entrepris dans un monde au sein duquel les entreprises européennes sont soumises au contrôle des investisseurs internationaux. +Les marchés financiers européens étaient, et sont toujours, dans une certaine mesure, dominés par quelques grandes banques. +Lors du lancement de l'euro, les banques européennes représentaient environ 80 % du financement total des entreprises, par rapport à 30 % aux Etats-Unis. +Les banques sont souvent moins préparées à financer une idée sans doute lumineuse, mais risquée. +En tant que prêteurs, ils sont également moins efficaces pour contrôler les entreprises que ne le sont leurs actionnaires. +Avant l'avènement de l'euro, les marchés locaux étaient réduits et illiquides. +Le développement de marchés financiers modernes extrêmement liquides a constitué l'un des principaux avantages de l'euro : en quelques années, par exemple, les prêts bancaires en Allemagne ont chuté de 74 % à 32 % des fonds totaux contractés par de grandes entreprises allemandes. +En Italie, la part de prêts bancaires sous forme de pourcentage des fonds totaux contractés par de grandes entreprises italiennes est passée de 75 % à 50 %, la différence étant essentiellement due à des émissions d'obligations de société. +La leçon que devront retenir les nouveaux pays membres de l'Est est claire : une fois que vous avez rejoint l'Union, la pression réformiste extérieure se relâche : l'élan vers la réforme doit venir du pays même. +Les réformes visant à déréglementer les marchés financiers doivent être prioritaires. +Le secteur des services américain est en pleine renaissance et se détache clairement de ce que l'on peut voir en Europe. +Grâce à la politique européenne sévère en matière de concurrence, l'Europe a fait du chemin pour rendre son secteur industriel plus viable. +Dans le domaine des services, par comparaison, la dérégulation fut bien plus limitée, probablement du fait que les services sont bien moins exposés à la concurrence internationale, ce qui implique que des règlements obtus sont plus faciles à préserver. +Il en ressort qu'en Europe, contrairement aux États-Unis, l'augmentation de la demande de services produit des rentes plus élevées plutôt qu'un supplément d'emplois. +Prenons le cas très simple des licences de taxi : si leur nombre est fixé et que le public intensifie sa fréquentation, on observe alors au mieux une augmentation de la demande de Mercedes puissantes, voiture de prédilection des chauffeurs de taxi, sans création d'emploi. +En d'autres termes, un bon indicateur de l'état de l'économie américaine reste le nombre de personnes qui s'occupe de vos achats à la caisse du supermarché. +Dans de nombreux pays européens, il vaut mieux considérer la qualité de l'autoradio du taxi qui vous prend en charge. +La flexibilité du marché du travail américain dans le domaine des services est particulièrement remarquable. +Lors des récessions et des booms économiques, on peut ressentir le changement dans la qualité et le nombre des serveurs dans les restaurants, dans la taille des équipes de personnel dans les magasins, dans la disponibilité des services de nettoyage. +Dans les 90 rugissantes, il était quasi impossible de recruter du personnel de restauration qualifié pour remplir les postes à pourvoir. +Pendant les période de stagnation économique sous le gouvernement Bush, ces travaileurs étaient pléthore. +En Europe, on ne voit tout simplement pas de telles différences : les serveurs, les plongeurs et les cuisiniers bénéficient tous de la sécurité de l'emploi. +Une partie du problème vient du fait que les emplois temporaires ou à court terme en Europe sont associés à une mauvaise connotation. +Le fait qu'entraver l'emploi à court terme piège également l'emploi à long terme est souvent oublié. +De telles perceptions reflètent une différence profonde. +En général, les salariés et l'encadrement en Europe continentale fonctionnent encore sur les fondements traditionnels d'antagonismes de classe qui émergèrent à l'origine avec la montée de l'industrialisation au 19 +Aux États-Unis, de tels sentiments sont bien moins ancrés dans la culture. +Les penseurs américains marquants du 19 +Sous la surface toutefois, les choses commencent à bouger en Europe. +Subrepticement, les autorités en charge de la concurrence au sein de la Commission européenne se montrent plus tenaces avec les services professionnels (il suffit d'examiner, par exemple, la déclaration intitulée « Competition Policy and Liberal Professions », Politique concurrentielle et professions libérales, disponible sur le site web de la Commission européenne, à l'adresse suivante : www.europa.eu.int ). +Une fois les cartels douillets d'avocats et de comptables rappelés à l'ordre, d'autres industries du secteur des services semblent destinées à s'ouvrir à une concurrence plus importante et de ce fait à devenir d'importants moteurs de création d'emploi. +Malgré les syndicats européens, les emplois temporaires sont de mieux en mieux acceptés. +Le moteur de la création d'emploi à l'américaine via l'industrie des services pourrait bien avoir pris le chemin de l'Europe. +Le train du capitalisme sifflera trois fois +Le schadenfreude provoqué par Enron en Europe n'a plus de raison d'être. +Les scandales de l'année dernière (Vivendi) et de cette année (Parmalat) y ont veillé. +L'Europe, comme l'Amérique (et, en fait, comme le monde capitaliste dans son ensemble), doivent désormais se durcir en exigeant que les patrons qui ont pillés leurs sociétés soient poursuivis et punis. +Les procureurs américains penchés sur le cas d'Enron ont réalisé des progrès considérables dernièrement, en amenant des escrocs d'envergure comme Andrew Fastow à plaider coupables et à témoigner contre leurs anciens collaborateurs. +Mr. Fastow ira en prison pendant dix ans et les personnes contre lesquelles il témoigne auront une peine bien plus longue. +Les procureurs italiens mettent beaucoup d'ardeur à obtenir une peine similaire pour les patrons qui ont pillé Parmalat. +Mais ces affaires vont bien au-delà du vol de sociétés et de trahison d'actionnaires. +L'enjeu est de taille : la perception de l'équité du marché et le soutien politique universel aux politiques orientées vers le marché. +Les économies capitalistes engendrent des inégalités, et souvent conséquentes. +Jusqu'à un certain stade, et dans la mesure où les différences de revenus sont dues aux différences de capacité, d'effort, d'investissement dans l'éducation, etc., ces inégalités sont nécessaires afin d'inciter les entreprises à investir, travailler, innover et croître. +Mais plus la réputation d'équité du marché est ternie, plus les citoyens moyens considèreront les différences de revenus comme le fruit de la corruption, d'activités illicites, de liens avec des fonctionnaires, etc. +Cette situation intensifiera la demande pour une réglementation plus stricte et pour une implication massive du gouvernement dans l'économie afin de contrôler davantage les capitalistes indisciplinés et indignes de confiance. +En outre, plus cette accumulation de richesses est taxée « d'injuste » (suite à la corruption et à l'illégalité), plus la pression pour une imposition sévère des « biens mal acquis » s'intensifiera. +Si l'une de ces mesures populistes rend les marchés plus justes et améliore leur fonctionnement, nous n'aurions qu'à nous en louer. +Malheureusement, une telle réaction face à des hommes d'affaires corrompus instaure un cercle vicieux : une réglementation plus importante risquerait alors de déboucher sur une corruption plus vaste afin de pallier à cette réglementation ; des impôts plus élevés sur la richesse inciteraient à rechercher des échappatoires fiscales supplémentaires, ce qui aurait pour résultat de corrompre davantage le système. +Malheureusement, à l'heure actuelle, des éléments aussi disparates que des cadres au salaire élevé, les scandales d'Enron et de Parmalat, des fusions et des acquisitions contestées, la volatilité des actions, les « obligations pourries » et les bulles spéculatives des prix sont tous classés dans la même catégorie, sous l'appellation narquoise de « capitalisme cowboy ». +Les Européens sont tout particulièrement enclins à considérer les choses sous cet angle et à voir un gouvernement puissant jouer le rôle de shérif afin d'empêcher les cowboys de terroriser la ville en tirant des coups de feu. +Cette situation est tout particulièrement inquiétante car l'Europe a récemment commencé à déréglementer ses marchés. +Alors que le soutien politique à ces changements reste toujours incertain, l'Europe court le risque que les opposants à ces changements utilisent Parmalat, Enron, Vivendi et d'autres cas similaires comme excuse pour inverser le processus. +Dans un grand nombre de pays en voie de développement, des régulateurs faibles et une perception répandue de la corruption constituent souvent un obstacle à la mise en place de réformes favorisant le marché ; la gauche (populiste ou autre) peut soutenir, de manière tout à fait crédible, que le capitalisme est « corrompu » et que le gouvernement doit donc le prendre sous son aile. +Ceci explique en grande partie pourquoi le capitalisme de marché a eu tant de mal à s'implanter dans le monde en voie de développement. +Si les capitalistes sont corrompus, comment convaincre un pauvre paysan de croire en l'économie de marché ? +Il votera plutôt pour des politiques populistes. +En conséquence de quoi, la corruption est plus étendue et la croissance se ralentit dans une sorte de piège de la pauvreté « créé par la corruption ». +Le scandale de Parmalat peut avoir porté un coup au capitalisme, mais en Italie, on espère qu'il sonnera le glas d'un système économique traditionnellement basé davantage sur les « liens » entre les groupes privés (et entre ces groupes et le secteur public) que sur les marchés compétitifs. +Pour l'Italie, la solution évidente consiste à renforcer les institutions d'investigation et financières du pays et à améliorer la conception des organismes de réglementation, et tout particulièrement la qualité de leur personnel. +Ce changement ne se fera pas du jour au lendemain, et entre-temps, la demande pour une réglementation renforcée risque de donner naissance à une structure lourde, inefficace et, à la fin, d'entraver, plutôt que de rectifier, les tendances du marché. +Le contrôle doit être renforcé dans les entreprises italiennes par la présence d'un nombre suffisant de directeurs non cadres dans les conseils d'administration des entreprises publiques. +Un directeur indépendant unique aurait probablement suffi à dévoiler les manigances des patrons dans le scandale de Parmalat : aucun ne siégeait à son conseil d'administration. +De même, il serait utile que les cabinets comptables soient sélectionnés par les actionnaires minoritaires ou que leur salaire soit fonction des résultats de la bourse plutôt que versé par une entreprise. +Dans le cas présent, même les récents changements survenus aux Etats-Unis n'ont pas suffi : ils empêchent les cabinets comptables de jouer également le rôle de cabinets conseils auprès d'une entreprise, mais ils laissent encore la décision de la rémunération des comptables entre les mains de l'entreprise, incitant ainsi par esprit de contradiction les entreprises à mystifier la communication de l'information financière. +Il est surprenant que tandis que le gouvernement italien est occupé à revoir la structure de réglementation et de contrôle des institutions financières et des marchés financiers de son pays, aucune mention n'est faite des directeurs et des cabinets comptables indépendants. +Après tout, les bons shérifs ont besoin de réunir un groupe de citoyens actifs qui feront office de jurés. +Pour être sans tache, le capitalisme a besoin du même type d'engagement universel. +Racisme et protection sociale +Deux facteurs d'ordre démographique minent les systèmes de protection sociale d'Europe continentale. +L'un est le vieillissement de la population et l'autre l'arrivée massive d'immigrés en provenance des pays qui vont accéder prochainement à l'Union européenne et d'ailleurs. +Dans un livre récent intitulé Fighting Poverty in the US and Europe: A World of Difference que j'ai écrit avec Edward Glaeser, j'évoque la question de savoir pourquoi le système de protection sociale est tellement plus généreux en Europe qu'aux USA. +Une cause majeure en est l'hétérogénéité raciale bien plus importante aux USA qu'en Europe de l'Ouest. +Ainsi, selon une enquête de la World Value Survey [un réseau qui réalise des études sur les changements politiques et socioculturels au niveau international], 60% des Américains pensent que les pauvres sont paresseux, contre seulement 26% des Européens. +Il n'est pas surprenant que ceux qui croient cela soient peu favorables à la redistribution des revenus et à la protection sociale. Les enquêtes montrent qu'aux USA, les personnes hostiles aux minorités sont généralement aussi hostiles à la redistribution des richesses et ont moins de compassion envers les plus démunis. +Il est plus facile à la classe moyenne blanche de considérer que les pauvres ne méritent pas l'aide gouvernementale s'ils les perçoivent comme " différents ". +Pour le dire brutalement, il est plus facile d'être indifférent si l'on pense que les pauvres se trouvent essentiellement parmi les Noirs. +C'est plus difficile en Norvège où riches et pauvres sont blancs et le plus souvent grands et blonds. +Beaucoup d'expérimentations et de sondages montrent que l'on a davantage confiance et l'on établit plus facilement des liens avec des personnes de la même race. +C'est pour cette raison que les politiciens opportunistes utilisent depuis longtemps l'argument racial pour discréditer l'assistance sociale et la redistribution des revenus. On en trouve des exemples depuis l'époque de la ségrégation qui s'est terminée en 1964, jusqu'à l'odieuse stigmatisation des Noirs " profiteurs des allocations sociales au volant de Cadillac " durant les années Reagan. +Les politiciens blancs de droite, hostiles par nature à l'impôt et à la redistribution, se servent de cet argument pour s'assurer le vote des " petits Blancs " dont les voix risqueraient autrement de leur échapper pour des raisons purement économiques. +La nature des institutions politiques américaines porte fondamentalement la marque de considérations raciales. +Permettant l'élection de Noirs, la représentation proportionnelle qui existe majoritairement en Europe depuis le début du 20° siècle n'a jamais été adoptée par les USA. +En Europe occidentale, les socialistes et les communistes ont imposé des systèmes électoraux basés sur la représentation proportionnelle, précisément parce que cela permet l'élection de représentants des minorités (les communistes et les socialistes eux-mêmes). +Les quelques villes américaines qui ont adopté la proportionnelle durant la période progressiste entre 1910 et 1930 l'ont vite abandonnée - ou ont été forcées de le faire - pour mettre fin à l'élection des Noirs. +Aujourd'hui, la seule ville à avoir un système proportionnel est le bastion gauchiste de Cambridge dans le Massachusetts. +Favorisant l'expression politique des minorités, la proportionnelle est souvent considérée comme un encouragement en faveur d'une politique redistributive. +Des études montrent que plus la dose de proportionnelle est importante, plus la politique sociale est redistributive. +Autre élément, l'examen des programmes sociaux des différents Etats aux USA. +Plus la population d'un Etat est hétérogène, plus sa politique sociale est limitée. +Elle est relativement généreuse dans les Etats très majoritairement blancs du nord et du nord-ouest (par exemple l'Oregon et le Minnesota) et dans certains Etats de Nouvelle-Angleterre comme le Vermont. +Par contre, elle est nettement insuffisante dans le sud-ouest et le sud-est, bien plus hétérogènes sur le plan racial. +Avec l'arrivée de nouveaux immigrants d'Europe de l'Est et des pays pauvres, l'Europe continentale devient de plus en plus hétérogène sur le plan ethnique. +Les partis xénophobes sont de mieux en mieux implantés en Europe et parfois ils ont accédé au moins partiellement au pouvoir. +C'est le cas de Jörg Haider en Autriche, du parti de Pym Fortuyn aux Pays-Bas et dans une moindre mesure de la Ligue du Nord en Italie. +Il ne faudra pas attendre longtemps pour que les très respectables partis conservateurs ajoutent à leur rhétorique l'argument des " étrangers qui viennent chez nous pour profiter de nos impôts ". +Autrement dit, lorsque les classes moyennes européennes penseront qu'une grande partie des pauvres sont de récents immigrés, leur conviction dans les vertus de l'Etat-providence va s'effriter. +Même l'intelligentsia de gauche en Europe associe maintenant la délinquance et la misère urbaine à l'immigration. +De là à trouver trop élevée la part d'impôt dévolue à la protection sociale des immigrés, il n'y a qu'un pas. +Quand cela arrivera - je dis "quand" et non pas "si" - il y aura trois réponses politiques possibles : l'une est de fermer les frontières aux immigrés pauvres, éliminant par là toute corrélation entre immigration et pauvreté, l'autre est de restreindre la protection sociale aux " autochtones " et la troisième est de réduire la protection sociale pour tous, à cause d'un moindre soutien de l'opinion publique. + + +La première stratégie est à courte vue et la deuxième est simplement odieuse. +J'espère que c'est la troisième qui sera appliquée, car cela signifiera des frontières relativement ouvertes, pas de discrimination et moins d'intervention gouvernementale. +Il n'y a pas de soucis à se faire, en Europe la protection sociale restera plus généreuse qu'en Amérique où elle fonctionne au compte-gouttes, mais deviendra plus simple à gérer et moins intrusive. +Le fait que cela se produira à cause d'une animosité ethnique est triste et déprimant. +Il y a néanmoins un élément positif : il faut réduire la protection sociale en Europe ! +Creuset des civilisations ou creux de la vague économique +Inquiets de l'invasion de travailleurs immigrés venant des nouveaux États membres d'Europe centrale et d'Europe de l'Est, les membres anciens de l'Union européenne ont érigé des protections importantes pour contenir l'afflux. +Malgré la rhétorique des marchés ouverts de l'Union européenne, la plupart des citoyens des nouveaux États membres vivront une réalité différente en matière de libéralisation de la mobilité de la main d'œuvre pour les sept années à venir tout au moins. +Il s'agit là d'une politique compréhensible mais déficiente. +Une des plus belles réussites de l'Union européenne reste la mobilité des biens et des intrants. +Sans cela, quelle sorte d'union représenterait l'Union européenne ? +Autrement, qu'est-ce que les nouveaux membres retirent de leur appartenance, précisément, à part les intrusions dérangeantes de la bureaucratie bruxelloise ? +Étant donné les grands espoirs placés dans l'accession à l'Union européenne et l'attitude avare de l'Union envers ses nouveaux membres, cela ne devrait surprendre personne si des réactions anti-européennes prennent bientôt ancrage dans ces pays. +Ainsi, le remède est aussi mauvais que le mal : la discrimination contre les nouveaux membres crée des problèmes politiques bien à elle au sein de l'Union. +La véritable question reste de savoir si le mal est là ou pas. +L'Europe occidentale a-t-elle réellement raison de craindre un énorme afflux de nouveaux immigrés ? +En fait, les flux potentiels de migration Est-Ouest sont relativement faibles. +Selon An agenda for a growing Europe , (Programme d'une Europe grandissante), un rapport publié par Oxford University Press (les presses universitaires) en 2004 pour la Commission européenne, 250 000 à 450 000 travailleurs passeront à l'Ouest les deux premières années, chiffre qui tombera à 100 000 à 200 000 par an ensuite. +Lors des dix premières années, le nombre cumulé des migrants s'élèvera à 1,5 à 4 millions, soit 2,4 % à 5 % de la population totale des membres anciens de l'Union - et une infime fraction de la population totale de l'Union dans son état actuel. +Les populations vieillissantes et la chute des taux de fécondité des nouveaux États membres pourraient même avoir pour résultat des flux moins importants que prévus. +La politique européenne sur les migrations a d'autres défauts moins évidents. +Comme l'exprimait récemment Mircea Geoana, le jeune et brillant ministre des affaires étrangères roumain : " si l'Union européenne met encore sept à dix ans à s'ouvrir totalement, les travailleurs qu'elle recevra de mon pays seront les moins qualifiés, les paysans et les individus à faible capital humain : à ce moment-là, les médecins, les architectes et les ingénieurs auront tous migré vers les États-Unis ". +En effet, c'est exactement ce qui s'est produit avec la Russie : les personnes les plus qualifiées sont déjà parties vers les États-Unis et l'Europe n'a pas été capable d'attirer mieux que quelques oligarques qui ont migré sur la Riviera, ainsi qu'une poignée de chanteurs de rue pittoresques. +L'Europe occidentale se peuple toujours plus de populations âgées qui ont perdu le goût et l'enthousiasme du dur labeur, de la prise de risque et de l'ambition. +Sans apport de sang neuf et d'idées nouvelles, l'avenir de l'économie du vieux continent semble bien triste. +Il suffit de considérer le cas des États-Unis : où en serait l'Amérique si elle avait érigé des barrières pour empêcher les diverses vagues d'immigration et en était restée aux colons anglo-saxons ? +Il est certain que la gestion d'un creuset de civilisation n'est pas chose aisée, et bien des problèmes sociaux que l'Amérique doit maintenant gérer sont issus des relations difficiles entre les diverses ethnies. +Mais New York et Los Angeles, les deux villes américaine les plus diverses d'un point de vue ethnique, sont également les leaders américains du monde des affaires et de l'art. +Rien ne se fait sans douleur dans ce monde : si l'Union ne peut pas gérer une société multiculturelle en Europe, alors elle doit se préparer à une stagnation permanente. +Tant que les frontières de l'Union resteront fermées, le risque de voir les investissements étrangers voler au-dessus de l'Europe occidentale pour se poser en Europe centrale et en Europe de l'Est, où les travailleurs sont prêts à passer de longues heures au travail, où les régulations des marchés sont moins pesantes et le capital humain relativement important, reste élevé puisque les écoles communistes étaient bonnes pour former les populations aux métiers techniques. +Ces pays ont ouvert leurs marchés aux investisseurs étrangers, qui répondent à l'appel avec empressement. +Étant donné le besoin grandissant de main d'œuvre en Europe occidentale pour les années à venir, la question n'est plus de savoir si l'immigration dit se produire mais bien plutôt d'où elle doit se produire. +Aurons-nous recours à une immigration légale de populations facilement assimilables en provenance d'Europe centrale et d'Europe de l'Est, ou bien une immigration illégale en provenance du Maghreb ? +L'Europe en vacances +Actuellement, le nombre moyen annuel d'heures travaillées par personne âgée de 15 à 25 ans en France et en Allemagne est inférieur d'environ 50% à celui des États-Unis. +D'autres pays européens, tels que l'Italie et l'Espagne par exemple, se placent quelque part au milieu de ces deux marqueurs. +Bien que certains Américains se plaisent à faire remarquer leur éthique professionnelle supérieure, cette disparité des heures travaillées entre les États-Unis et l'Europe n'a pas toujours existé. +En effet, jusqu'au milieu des années 70, le nombre d'heures travaillées de chaque côté de l'Atlantique était très similaire. +Depuis le milieu des années 1970, cependant, les Américains ont continué à travailler plus ou moins le même nombre d'heures, tandis que les 2uropéens de l'Ouest ont commencé à travailler de moins en moins chaque année. +Si l'Europe occidentale a besoin d'une explication à son taux de croissance économique, à la traîne des États-Unis, elle n'a pas besoin d'aller chercher bien loin. +Le nombre moyen d'heures travaillées par personne dépend d'un grand nombre de facteurs : +• le niveau de participation à la population active, +• le nombre de jours de vacances par travailleur, +• le nombre d'heures travaillées dans une semaine " normale ", soit sans jour de congé. +Toute la différence quasiment entre les États-Unis d'une part et la France et l'Allemagne de l'autre est due aux deux premiers facteurs, à poids égal chacun. +Ainsi, une participation moindre à la population active explique la moitié de la différence et les vacances plus longues de ceux qui travaillent expliquent l'autre moitie. +L'importance des vacances ne devrait surprendre quiconque a fait l'expérience des villes européennes désertées en août, des ponts d'avril et mai en France et en Italie, des heures de pointe du vendredi à 14h en Allemagne et des stations de ski noires de monde en février du fait des vacances scolaires d'hiver. +Savoir " comment " les Européens arrivent à travailler moins est une chose, il en est une autre de savoir " pourquoi " les Européens travaillent moins que les Américains. +On perçoit souvent les Américains (et ils aiment être ainsi perçus) comme des Calvinistes fous de travail, tandis que les Européens aiment à croire qu'ils savent apprécier la vie et ses plaisirs. +En ma qualité d'Européen travaillant aux États-Unis, je dois admettre que je prends plus de vacances que mes collègues américains. +Cette explication " culturelle " est ainsi peut-être vraie. +Mais pourquoi cela a-t-il commencé aux environs de l'année 73 ? +Autre argument pour rendre compte de cette différence : la différence en matière de fiscalité, qui, en fait, s'est considérablement accrue en Europe depuis les années 1970, tandis que les impôts sur le revenu aux États-Unis sont à la baisse depuis les années 1980. +Les impôts sur le revenu affectent assurément la volonté de travailler. +Ils ne modifient peut-être pas de beaucoup le nombre d'heures travaillées par le plus gros salaire du foyer (l'homme, généralement), mais ils influencent la participation des femmes à la population active. +Après tout, pourquoi travailler si le salaire net après imposition couvre à peine les frais de garderie et d'aide ménagère ? +Mais ce n'est pas là une explication satisfaisante, parce que des études montrent comment l'approvisionnement de main d'œuvre répond aux changements fiscaux et suggèrent donc que l'explication du fossé énorme qui existe entre les États-Unis et l'Europe, et plus particulièrement avec la France et l'Allemagne, doit se trouver ailleurs. +Pour les plus de 50 ans, la structure des systèmes de retraite est bien évidemment un facteur prépondérant. +C'était et cela reste bien plus rentable de prendre sa retraite à un jeune âge en Europe, par rapport aux états-unis. +Pourquoi un Français ou un Italien entamant sa soixantaine continuerait-il à travailler aujourd'hui, quand il aurait pu prendre sa retraite à 55 ans des les années 90 et toucher 80% ou plus de son dernier salaire ? +Pour les femmes, l'âge de la retraite au milieu des années 90 était même encore plus bas. +Les employés de la fonction publique avaient encore plus d'avantages sociaux. +Mais cela n'est pas tout. +Dans les années 80 et 90, de nombreux syndicats de travailleurs européens adoptèrent la politique du partage du travail pour répondre à la montée du chômage. +En d'autres termes, ils obtinrent des durées hebdomadaires de travail moins longues (et donc plus de temps libre) pour maintenir les taux d'emploi. +Le problème que cela pose vient du fait que les rémunérations globales n'ont pas baissé en proportion des heures travaillées, ce qui a mené à une augmentation du salaire horaire. +Une productivité plus faible et des coûts de main d'œuvre plus élevés ont usé la volonté d'embaucher des entreprises, laissant l'Europe avec des taux de chômage régulièrement plus élevés qu'aux États-Unis +Les discussions en cours aujourd'hui sur la croissance en Europe bourdonnent de mots à la mode tels que " la société fondée sur les savoirs ", le " progrès technologique " et les " investissements dans l'éducation ". +Les Européens ont certainement besoin de quelque chose pour compenser une activité professionnelle courte avec autant de vacances. +Mais la majeure partie de ces discussions n'est que pure correction politique : il est plus rassurant - et cela sonne mieux- de dire aux Européens que la croissance est ralentie parce que la société n'est pas assez assise sur ses savoirs plutôt que de montrer du doigt le déséquilibre de la croissance créé par les vacances. +Les Européens préfèrent en général leurs vacances à la croissance. +Personnellement, j'adore prendre toujours plus de vacances. +Mais je ne peux pas (et ne veux pas) alors me plaindre du ralentissement de la croissance de mon revenu. +L'inévitabilité de la démocratie chinoise +Quinze années auparavant, Fang Hongin manifestait sur la place Tienanmen. +Quelques années auparavant, à Beijing, il dirigeait l'une des émissions télévisées les plus populaires de Chine, testant chaque semaine les limites de l'indulgence des autorités. +Aujourd'hui, il dirige Dragon TV, la principale station de Shanghai, et des publicités le mettant en vedette sont suspendues aux gratte-ciels de la ville. +Hu Shuli appartient à la même génération : la journaliste que le magazine Economist a surnommé la " femme la plus dangereuse de Chine ", dont le premier emploi consistait à s'occuper de la presse du Parti, dirige désormais Caijng , un magazine économique qui parle de corruption, exposant les hommes d'affaires et les fonctionnaires. +Ce serait toutefois une erreur d'interpréter ces expériences de presse libre comme des signes indiquant que la démocratie en Chine va bientôt voir le jour. +Le Parti permet à Caijng d'exposer la corruption car ces actions lui permettent de mettre fin à la maladie la plus grave de la Chine. " +Le premier droit civil consiste à échapper à la pauvreté, explique Yongtu Long, l'un des négociateurs chinois à l'OMC. +En 15 ans, nous avons sorti 200 millions d'individus de la pauvreté ; 700 millions de Chinois ont aujourd'hui accès à l'électricité, un luxe inconnu 15 ans auparavant. +C'est la raison pour laquelle nous nous consacrons en priorité à la croissance : tout le reste, pour parler franchement, est de moindre importance. " +La croissance n'implique toutefois pas uniquement de sortir des individus de la pauvreté. +Vingt-cinq ans auparavant, la société chinoise était plus égalitaire que la société suédoise ; aujourd'hui, les inégalités sont immenses entre la ville et la campagne, entre les provinces occidentales et les provinces bordant l'Océan Pacifique ainsi qu'au sein des villes, qui attirent un flux constant d'anciens paysans à la recherche d'un emploi. +La répartition des revenus de la Chine à l'heure actuelle s'apparente davantage à celle du Brésil qu'à celle de la Suède. +Mais plus d'inégalités implique également plus de perspectives : il est toujours extrêmement difficile de s'enrichir en Chine à l'heure actuelle, mais ce n'est plus impossible, comme vous le constaterez si vous entrez dans l'un des pubs du centre-ville. +L'inégalité peut être acceptée, mais pas si elle est le fruit de la corruption ; elle demeure le principal problème social de la Chine, problème que le Parti s'est révélé incapable d'éradiquer, malgré les révélations de Caijng et la peine capitale. +La Chine peut-elle réellement se passer de la démocratie ? +Quelques années auparavant, Fareed Zakaria, alors rédacteur de Foreign Affairs , a argumenté contre la priorité généralement accordée à la démocratie, définie simplement comme la possibilité de choisir des dirigeants politiques par le biais d'élections libres. +Le monde est rempli de démocraties qui violent systématiquement les droits de l'homme, a-t-il affirmé. " +Les élections n'ont qu'une utilité limitée si des gouvernements démocratiquement élus restreignent la liberté de la presse et l'indépendance du pouvoir judiciaire. " +" La liberté est certainement plus grande à Shanghai qu'à Moscou, a déclaré un professeur de l'université Tsinghua à Beijing, se faisant l'écho de Zakaria. +Elle a probablement raison, bien que l'Inde nous rappelle que les élections constituent parfois un mécanisme puissant et efficace pour rectifier la politique adoptée par un pays. +L'économie de l'Inde croît pratiquement aussi rapidement que celle de la Chine, avec une augmentation similaire de l'inégalité et, dans une certaine mesure, de la corruption. +Mais les électeurs indiens se sont retournés contre ce modèle. +L'économie de l'Inde risque donc de ralentir. +Il est difficile de prédire si les conséquences de cette inégalité sont positives ou négatives. +Elles sont probablement négatives sur le court terme, mais qui peut les prévoir sur le plus long terme ? +Le fait est que des questions comme " L'inégalité que nous créons est-elle trop marquée ? " ne peuvent même pas être posées en Chine. +Par conséquent, chaque fois qu'un problème échappe à tout contrôle, le changement vient trop tard et est dramatique. +C'est la raison pour laquelle la Chine ne peut pas laisser en suspens le problème de sa transition vers la démocratie. +La démocratie n'est pas seulement un mécanisme destiné à prévenir les erreurs stratégiques. +Il existe une raison plus banale qui explique pourquoi de nombreux individus, même au sein du Parti, pensent qu'une transition démocratique est devenue inévitable : le Parti perd tout simplement le contrôle du pays. +Deng Xiaoping a été le dernier dirigeant chinois à posséder une autorité incontestée sur la politique publique. +Aujourd'hui, le bureau politique du Parti compte plus de 20 membres et chaque résolution requiert l'unanimité. +Les décisions plus importantes exigent un consensus encore plus grand, impliquant jusqu'à 3 000 personnes. +Par exemple, le Parti se concentre essentiellement, à l'heure actuelle, sur la rédaction des documents qui devront être approuvés lors du prochain congrès, prévu pour l'automne 2007. +La différence entre le rythme de l'économie et celui du Parti signifie que le pays se dirige de plus en plus tout seul. +Comme par le passé, lorsqu'une dynastie s'affaiblit, les provinces prennent leurs propres décisions. +Il est même difficile de ralentir l'économie : manquant d'un système financier efficace, la croissance des crédits doit être contrôlée directement par l'intermédiaire des banques. +Mais le directeur du bureau de Guangzhou de la Banque de Construction de Chine, la plus grande banque de Chine, consulte le dirigeant du Parti de sa province avant d'appliquer les directives qu'il reçoit du siège social de la banque à Beijing. +Tenant compte de ces difficultés, certains membres du Parti admettent " qu'il n'y a qu'un seul moyen pour aller de l'avant : confier la responsabilité à un individu, quel que soit le mode par lequel il/elle est choisi(e), même par le biais d'une élection, pourvu que la prise de décision efficace soit rétablie ". +La transition démocratique de la Chine est donc peut-être plus proche qu'on ne l'imagine. +Mais si elle survient, elle ne résultera pas d'expériences démocratiques menées par la base dans les villes et les villages ; il s'agira plutôt d'une transition amenée par l'élite, soucieuse de préserver le contrôle du gouvernement. +C'est la seule condition sous laquelle l'Armée de Libération du Peuple et la Commission militaire toute-puissante accepteront la démocratisation. +L'Union européenne est-elle en train d'imploser ? +La perspective de l'adhésion à l'Union européenne a fortement encouragé les pays de l'Est à atteindre l'équilibre budgétaire ; un effet semblable à celui du passage à l'euro pour l'Europe occidentale. +Néanmoins, dans les deux cas, après de bons débuts, les pays ont manifesté une "fatigue" politique évidente : dans la zone euro, le Pacte de stabilité a implosé, et dans toute l'Europe orientale les déficits budgétaires ont commencé à augmenter. +En République tchèque l'année dernière, le déficit budgétaire - qui a triplé depuis 1999 - a atteint 13 % du PIB. +Alourdi ponctuellement par la restructuration du secteur bancaire, il dépassera tout de même cette année 6 %. +La Pologne enregistre également un déficit proche de 6 %, contre 2,9 % en 2001. +En Hongrie, l'écart se creuse de nouveau, après un déficit de 4 % en 2001. +A Malte, le déficit représente près de 10 % du PIB, soit 4 points de plus qu'en 2001. +Seuls les pays baltes semblent en mesure de maintenir des politiques budgétaires saines. +Cette situation n'est guère surprenante : libérés des rapports de suivi annuels de l'UE, et de la menace d'exclusion, les politiciens peuvent se permettre beaucoup plus de souplesse. +En même temps, les grands pays de la zone euro - la France et l'Allemagne - sont mal placés pour critiquer les politiques budgétaires des autres, et le déficit des membres de l'Union n'est donc soumis à pratiquement aucune contrainte internationale. +En réalité, les contraintes se sont avérées totalement inutiles après adhésion, et il sera difficile d'en faire des critères pour les prochains candidats. +Ce qui surprend davantage, c'est le rejet politique des gouvernements qui ont fait entrer leur pays dans l'Union. +Là encore, la similitude avec ce qui s'est passé en Europe occidentale au moment du passage à l'euro est frappante. +Le gouvernement de Romano Prodi, qui avait réussi contre toute attente à inclure l'Italie dans l'union monétaire, a subi une défaite trois mois plus tard. +La République tchèque, la Pologne et la Hongrie ont traversé une crise gouvernementale depuis l'adhésion à l'UE. +Partout en Europe centrale et orientale, la popularité de l'Union n'est plus ce qu'elle était. +La faiblesse de la participation aux élections du Parlement européen en juin a été déconcertante dans les nouveaux Etats membres : de 17 % en Slovaquie à 38,5 % en Hongrie. +Pour le premier scrutin européen de leur histoire, ces pays ont ainsi connu un taux de participation bien inférieur à la moyenne européenne (environ 45 %), et même inférieur à la moyenne britannique. +Deux raisons à cela : d'une part, les pays candidats se sont sentis contraints à des politiques d'ajustement majeures pour être acceptés dans l'UE. +Que ce soit ou non dans leur intérêt à long terme, à court terme il y a eu un coût politique important. +D'autre part, à cette " fatigue de l'ajustement " - un terme créé dans un contexte de libéralisation économique en Amérique latine dans les années 90 - s'ajoute aujourd'hui le sentiment qu'en fin de compte l'UE n'est pas la panacée. +Notamment, les pays d'Europe occidentale sont toujours désireux de protéger leur marché du travail des migrations venues d'Europe centrale et orientale ; un sujet délicat soulevé à chaque rencontre entre politiciens de l'Est et de l'Ouest. +Il n'est donc pas surprenant que les électeurs d'Europe centrale et orientale aient l'impression d'avoir fait une mauvaise affaire : ils ont dû se serrer la ceinture et accepter des restrictions du marché du travail, sans parler du déluge de réglementation européenne. +D'où une réaction hostile envers les gouvernements qui les ont fait adhérer et un désintéressement à l'égard de l'UE. +Nous voici donc, après toutes les célébrations de l'élargissement, face à plusieurs problèmes prévisibles : une "union" de pays aux points de vue très variés (sur tout, de la politique étrangère au marché du travail) et aux intérêts économiques différents ; un désenchantement de l'électorat dans les nouveaux Etats membres ; un processus constitutionnel à l'avenir incertain ; et toutes les querelles politiques habituelles à Bruxelles, entre pays qui cherchent à obtenir le plus de pouvoir possible. +Le long déclin de l'Europe de l'Ouest ? +La période des élections approche en Allemagne, en France et en Italie, de sorte que le temps des réformes structurales est écoulé. +Paradoxalement, cette nouvelle pourrait réjouir tous ceux qui pensent que l'Europe devrait commencer à contribuer à la croissance mondiale en développant la demande nationale. +En fait, il est admis que la raison pour laquelle la France s'est récemment développée deux fois aussi rapidement que l'Allemagne est que les consommateurs français ont cessé de s'inquiéter à propos des réformes sociales. +Dès que le ministre français des Finances Nicolas Sarkozy a décidé de quitter le gouvernement et de commencer à faire campagne pour les élections présidentielles, le président en fonction Jacques Chirac a abandonné tous les plans de réforme susceptibles d'aliéner les électeurs. +Une réforme de la santé ou même une réforme partielle des retraites devra ainsi patienter quelques années. +Au même moment, un livre blanc récent rédigé par un groupe de travail dirigé par l'ancien dirigeant du FMI, Michel Camdessus, qui a été chargé de proposer le type de réformes structurales nécessaires pour la croissance, a été reçu avec le tollé habituel manifesté par les syndicats. +La majorité de ses propositions raisonnables constitueront bientôt un autre exemple de bonnes intentions tombées dans l'oubli. +Retour aux affaires, comme toujours en France. +De l'autre côté, les foyers allemands, selon un récent sondage publié dans le quotidien influent Die Welt , sont d'humeur plus modérée : la majorité projettent de réduire leurs départs en vacances ce qui, de toute évidence, n'impliquera pas qu'ils travailleront plus (ils passeront tout simplement une partie de leurs nombreuses semaines de loisirs payés chez eux), et de différer les achats importants. +La raison�? +Ils sont préoccupés par le débat sur la réforme des retraites, les changements du système de santé et les nouvelles règles d'admissibilité pour les prestations chômage. +Leur humeur pourrait très bien devenir bientôt plus gaie. Le chancelier Schröder se prépare également à sa réélection. +Il peut même espérer gagner, le SPD, son parti, remontant dans les sondages. +Par conséquent, les références à la nécessité d'inciter aux réformes ont disparu de ses discours. +Le changement très attendu en matière de consommation allemande, peu dynamique pendant une bonne partie d'une décennie, est peut-être sur le point de se produire. +En Italie, le premier ministre Berlusconi a attendu trois ans et demi avant de se décider à honorer sa principale promesse électorale de réduction des impôts. +Mais de véritables réductions d'impôts impliquent également des réductions des dépenses, mais comme les élections sont dans moins d'un an à compter d'aujourd'hui, il est désormais trop tard. +Inquiet de ce que la réduction des dépenses puisse lui faire perdre des voix, Berlusconi propose une réduction d'impôts inférieure à 0,3 % du PNB et financée en partie par d'autres impôts. +Si les Allemands sont déprimés, les Italiens sont dans le coma. +Ces expériences nous enseignent une leçon. +Les Européens ne souhaitent pas réellement des réformes et les politiciens en sont bien conscients. +Ou, pour le formuler différemment, des intérêts spéciaux sont devenus si puissants et si ancrés que toute tentative de réforme entraîne un puissant groupe de pression à son encontre. +Les politiciens en campagne promettent ainsi l'impossible : des réformes qui produiront une prospérité instantanée sans que cela ne coûte rien à personne. +Lorsque cela se révèlera impossible, de manière tout à fait surprenante, ils abandonneront la réforme. +Entre-temps, ils occasionneront des dommages sérieux car les Européens sont tellement inquiets par la possibilité de réforme que la simple possibilité que ces réformes soient promulguées les terrifie. +En fait, ce débat et une action minime ou inexistante sur les réformes structurales posent deux problèmes. +Premièrement, les consommateurs sont anxieux et la demande baisse. +Deuxièmement, les groupes de pression anti-réformes ont tout le temps de s'organiser et de prévenir toute avancée vers l'aboutissement de l'effort de réforme. +Un plan politiquement plus réussi consisterait à adopter l'approche « big bang », à savoir mettre rapidement en oeuvre une large série de réformes qui briseraient l'opposition d'intérêts spéciaux et laisseraient suffisamment de temps avant l'élection suivante pour que les électeurs ressentent les bénéfices de la réforme. +Par exemple, lorsque les consommateurs constateront les bénéfices de la déréglementation du marché, ils se sentiront peut-être dédommagés du fait qu'ils devront travailler plus longtemps pour leur retraite. +Mais aucun politicien européen à l'horizon ne semble adopter cette approche. +Cela signifie-t-il que l'Europe, du moins l'Europe de l'ouest continentale, est condamnée�? +Pas nécessairement. +L'Allemagne, la France et l'Italie sont des pays riches. +Même sans réformes, ils seront en mesure d'offrir une forme de vie civilisée pendant de nombreuses années à venir. +Ils deviendront par la suite pauvres par rapport à d'autres économies à croissance plus rapide. +Mais après tout, il a fallu presque un siècle de mauvaise gestion à l'Argentine pour passer d'un revenu par habitant optimal à sa pauvreté relative actuelle. +Réformes : en parler et ne rien faire… +Discuter ŕ longueur de temps de réformes sans jamais passer aux actes fait plus de mal que de bien. +Anticiper une réforme, par exemple celle des retraites, du systčme de santé ou des indemnités de chômage inquičte tous ceux qui se sentent concernés. +S'attendant ŕ devoir un jour ou l'autre payer des services jusqu'alors gratuits ou bénéficiant de tarifs subventionnés, ils régissent en réduisant leur consommation et en économisant. +Mais autant que les politiciens se contentent de discuter, la confiance des consommateurs s'effrite, les indicateurs économiques passent au rouge et le consensus nécessaire ŕ l'adoption des réformes disparaît. +Les discussions se prolongent néanmoins, de męme que la chute de confiance des consommateurs. +L'Allemagne offre un exemple inquiétant de ce cercle vicieux. +Depuis plus d'une décennie, la réforme du généreux systčme de protection sociale occupe la premičre page des journaux allemands. +L'index de confiance des consommateurs était légčrement positif en novembre 2000, mais il est depuis tombé ŕ -20, la chute la plus marquée de toute la zone euro. +Dans la rue, c'est le pessimisme qui l'emporte. +Depuis deux ans, le taux de croissance de la consommation des ménages (mesuré ŕ prix constants) est ŕ la baisse : -1% en 2002 et -0,5 en 2003. +Un tel recul s'observe rarement dans les pays industrialisés, car en cas de difficulté, les consommateurs utilisent généralement leur épargne pour maintenir leur niveau de consommation. +Pour l'Allemagne, il faut revenir au début des années 1980 pour retrouver un tel déclin de la consommation. +Face ŕ cette situation, plutôt que de baisser, le taux d'épargne des ménages est ŕ la hausse, passant de 9,7% du revenu disponible en 2000 ŕ 11,8% en 2003. +La baisse de la consommation et la hausse de l'épargne affectent toutes les catégories d'âge de la population, mais elle touche davantage les plus âgées. +Le seul signe de reprise de la consommation s'observe parmi les jeunes ménages d'une vingtaine d'années, qui de toute évidence espčrent que tôt ou tard les réformes seront adoptées et que leurs impôts baisseront. +Mais męme chez les ménages âgés d'une trentaine d'années, le taux d'épargne augmente au męme rythme que l'inquiétude suscitée par les réformes. +Il n'est pas surprenant que les personnes âgées réduisent davantage leur consommation. +Avec la retraite, elles ont perdu presque toute possibilité de choix : elles ne peuvent ni travailler davantage ni souscrire un contrat d'assurance maladie auprčs d'un organisme privé, car étant donné leur âge, les primes sont trop élevées. +Elles sont contraintes de compter sur leurs économies et de réduire leur consommation de maničre drastique. +Si l'on considčre ce phénomčne dans le contexte d'une population en vieillissement rapide, les conséquences sur la consommation globale sont spectaculaires. +La France est le seul pays de la zone euro dans lequel la confiance des consommateurs continue ŕ croître (passant de -24 il y a un an ŕ -13 aujourd'hui). +José Bové s'attaque aux pauvres +Les soutiens pour l'accroissement de l'aide internationale, à la réduction et à l'annulation de la dette viennent de partout. +Des stars du rock aux anti-mondialistes, des organisations religieuses aux différents défenseurs des pays en développement, jusqu'aux Nations Unies, tous ces appels en deviennent assourdissants. +Le « ligne » défendue par les mouvements en faveur de l'annulation de la dette est simple et attrayante. +Les différences globales dans les revenus par tête sont trop extrêmes ; la mondialisation accroît les inégalités de revenus ; les pauvres sont progressivement plus pauvres et nombreux sont ceux qui sont affamés par le remboursement de la dette. +Il faut donc aider plus, et annuler une plus grosse partie de la dette, parce que les riches de la planète ne deviennent riches qu'aux dépends des pauvres. +L'aide et l'annulation de la dette sortiront les pays pauvres de leur pauvreté. +Cette ligne est presque totalement fausse. +La seule chose qui soit vraie est que les différences de revenus par tête sont extrêmes. +Tout le reste est faux. +La mondialisation n'est pas la cause de la pauvreté du tiers-monde. +Ce sont les gouvernements corrompus et inefficaces des pays en voie de développement qui le sont. +Il n'existe aucune preuve démontrant qu'une plus grande ouverture commerciale accroît la pauvreté, mais les anti-mondialistes ne laissent pas les faits interférer avec leur idéologie. +L'accroissement des échanges permet d'enrichir les deux parties prenantes des transactions. +Même si la mondialisation accroissait les inégalités (un bien grand si), dans la mesure où personne ne peut le prouver de manière convaincante, elle permet malgré tout de réduire la pauvreté. +Ainsi, elle accroît le revenu des pauvres comme celui des riches qui participent aux échanges commerciaux, de manière plus importante pour les riches, bien sûr, mais pourtant, les pauvres y trouvent leur intérêt aussi. +La proposition anti-mondialiste consiste à appauvrir chaque partie prenante. +L'inégalité est peut-être réduite, mais la pauvreté reste élevée. +Qu'y a-t-il d'attrayant dans cela ? +Il est faux de dire que les pays pauvres s'appauvrissent. +Il existe de nombreux exemples de pays qui se sont sortis de la pauvreté, depuis la Corée du sud jusqu'au Costa Rica et au Botswana. +D'autres ont dilapidé l'immense richesse de leurs ressources naturelles, comme le Nigeria ou le Venezuela, ce dernier, par ailleurs, a adopté des politiques protectionnistes récemment. +Il n'existe aucune preuve démontrant que l'augmentation de l'aide internationale en direction des gouvernements des pays en développement améliore leurs performances économiques pour leur permettre de sortir définitivement de la pauvreté. +En fait, l'augmentation de l'aide internationale a probablement pour effet d'augmenter la corruption, parce que cela augmente la somme des ressources que se disputent les élites. +Il en va de même pour l'annulation de la dette : elle ne fait qu'encourager ces pays à emprunter plus, souvent au bénéfice des élites locales. +L'ouvrage récent, et abondamment cité, de William Easterly, ancien économiste de la Banque mondiale et expert en aide internationale et en développement, présente une montagne d'anecdotes choquantes à propos des élites locales dilapidant l'aide internationale. +La coalition pour l'aide internationale devrait le lire avec attention. +Ceux qui ont vraiment à coeur de réduire la pauvreté devraient faire tomber les responsabilités là où elles sont : dans les gouvernements et les bureaucraties de nombreux pays en voie de développement, particulièrement en Afrique et en Amérique latine. +Au lieu de cela, habituellement, l'aide internationale ne s'est jamais préoccupée du mérite des pays la recevant et n'a jamais fait de distinction en faveur des « bons gouvernements ». +Les pays participant à l'aide internationale ont toujours favorisé leurs anciennes colonies, sans considération quant à la nature des régimes politiques en place. +La France est l'un des coupable les plus flagrants. +Les statistiques montrent que n'importe quelle ancienne colonie qui mettrait en place les pires politiques sous des régimes dictatoriaux et insupportables recevrait bien plus d'aide de la France que n'importe quelle ancienne colonie n'ayant pas été française qui se débattrait pour essayer de mettre en place des politiques décentes. +En d'autres termes, la France soutient exclusivement ses anciennes colonies, sans considération de qualité de leurs régimes politiques. +L'aide apportée par les États-Unis est principalement influencée par la politique au Moyen-Orient, et par la guerre froide, par le passé. +Les alliances politiques, en fait, sont souvent plus importantes que la qualité des politiques des pays bénéficiaires dans la détermination des destinataires de l'aide apportée. +Les pays scandinaves, dont l'aide est la plus élevée par tête mais moindre en pourcentage du total, sont les seuls pays qui dirigent leur aide de manière raisonnable. +Une des raisons pour cela vient du fait que ces pays n'avaient pas de colonies ni d'alliances politiques à soutenir. +Avant d'augmenter l'aide internationale ou d'annuler la dette, il faut mettre en place deux conditions. +La première est la « condition d'institutionnalisation » : seuls les gouvernements faisant preuve de progrès sérieux dans la réduction de leur inefficacité, de leur pillage de la propriété publique et de la corruption peuvent recevoir une aide international. +Mesure la corruption de manière raisonnable est faisable ; nous connaissons les pays les plus corrompus. +Cet élément devrait être utilisé de manière plus agressive par les pays pourvoyeurs d'aide internationale pour établir des distinctions parmi les pays bénéficiaires. +Malheureusement, dans la plupart des cas, les pays les plus pauvres où l'aide est la plus nécessaire, sont aussi les plus corrompus. +Ainsi il faut donc une seconde condition : dans ces circonstances, l'aide internationale doit se faire en dehors des institutions publiques et doit être administrée par des groupes qui ne sont pas locaux, ni associés aux élites et aux gouvernements locaux. +Enfin, d'autres politiques des pays riches pourraient être plus efficaces que l'aide internationale. +Le changement principal serait de faire cesser le protectionnisme agricole dont bénéficient les agriculteurs des pays riches. +Les agriculteurs des pays riches sont les pires ennemis des pays pauvres. +Vaincre le lobby des agriculteurs français qui étrangle les réformes de la politique agricole commune de l'UE doit être la priorité principale de la coalition européenne en faveur des pauvres. +Au lieu de cela, les anti-mondialistes se préoccupent plus du charme des villes agricoles françaises que menace la mondialisation, et donc l'agriculture des pays pauvres essayant de survivre. +Contrairement à ce que prétendent les critiques du FMI comme Joe Stiglitz, l'abandon du consensus de Washington se retournerait contre les pauvres. +Dans l'une de ses récentes attaques au vitriol contre le FMI, Stiglitz sous-entendait que contrairement au FMI, il se préoccupe des pauvres ; mais les données le contredisent. +Les mesures qu'il préconise plus ou moins directement, telles que le creusement d'un déficit budgétaire suivi de l'utilisation de l'inflation pour résoudre les problèmes fiscaux, sont particulièrement nuisibles aux pauvres. +Les classes aisées d'Amérique latine ont l'habitude de transférer leurs richesses vers les paradis fiscaux au moindre signe d'un resserrement de la fiscalité. +Une Europe divisée +Lors des prochaines réunions du G8 (qui regroupe les pays les plus riches du monde et la Russie), les présidents de quatre de ses membres - l'Allemagne, la France, l'Italie et la Grande Bretagne - y participeront tant au titre de leur pays qu'à celui de l'Union européenne. +Mais ne vaudrait-il pas mieux que l'UE ait un représentant unique ? +Cela donnerait beaucoup plus de poids à l'UE, notamment à l'égard des USA. +C'est d'ailleurs l'une des premières raisons de l'intégration européenne. +L'Allemagne, la France, l'Italie et la Grande Bretagne ont pratiquement la même position vis-à-vis de la mondialisation. +Il serait dans doute préférable que ces pays présentent un front uni sur ce sujet. +Ils ont une politique commerciale et un marché commun, une politique antitrust commune, pour ne citer que quelques secteurs ; alors pourquoi pas un représentant unique au G8 ? +Il y a deux explications possibles. +La première consiste à dire que malgré quelques démonstrations d'unité, les pays européens sont très divisés en ce qui concerne la politique étrangère et ne veulent donc pas abandonner leurs prérogatives dans ce domaine. +Considérons par exemple les tensions qui ont marqué dernièrement les relations avec les USA. +Quant à l'Allemagne, elle a adopté récemment une position nettement plus antiaméricaine (peut-être pour des raisons électorales), mais elle commence à faire preuve d'indépendance en politique étrangère. +Une politique étrangère commune pourrait se révéler impossible ou se réduire à l'adoption d'une plate-forme minimale qui lui ôterait toute efficacité. +L'adoption d'une position commune à la majorité des votes engendrerait des tensions entre les pays membres. +L'Union européenne pourrait compter prochainement plus de 25 pays. +Adopter une politique étrangère commune sera alors beaucoup plus difficile, voire totalement irréalisable. +De 1995 à 2002, en dépit du Pacte de stabilité, le total des dépenses publiques de la zone euro (net des dépenses d'intérêt et de principal) n'a pratiquement pas varié : s'élevant à 41% du PIB de la zone euro en 1995, il s'élèvera à 40.7% du PIB cette année. +Entre temps, l'investissement public brut, déjà infime, s'est encore plus resserré passant de 2.7% à 2.4% du PIB. +Résultant du Pacte de stabilité, de faibles différences de résultat des budgets sont devenues importantes dans le débat sur la politique économique européenne : non seulement elles sont manifestement ridicules, mais elles détournent aussi l'attention des vrais problèmes budgétaires européens. +Peu sont ceux qui semblent conscients des marges d'erreur possibles quand on travaille avec de tels données. +Il n'est pas extraordinaire, par exemple, que les discussions parlementaires sur les budgets se transforment en réflexion sur les conséquence en matière de déficits budgétaires plus ou moins élevés que telle ou telle action entraînera : de 0,8 à 1,1% du PIB par exemple, se moquant allégrement que la variation de ces chiffres se place bien en dessous de la marge d'erreur statistique. +Des débats futile de ce type représentent des excuses bien utiles quand un pays veut éviter de faire face aux vrais défis fiscaux : un système de retraite ingérable, des allocations chômage qui découragent les travailleurs de chercher un travail, des salaires dans la fonction publique sans aucune mesure avec la productivité effective. +Mario Monti sur la sellette +Mario Monti, le commissaire européen à la concurrence, est souvent sous les feux de l'actualité et il bénéficie généralement d'une grande popularité. +Au cours du temps, il a remporté d'importantes victoires en limitant les subventions publiques aux entreprises, l'une des tares économiques les plus pernicieuses qui soient. +Mais aujourd'hui sa réussite est compromise par une série accablante de procès perdus. +Avec la conclusion de l'affaire du géant Microsoft - déclenchée par une question de monopole - qui paraît en vue, il a tout intérêt à retrouver rapidement son assise. +En l'espace de quelques semaines, la Cour européenne de justice (auprès de laquelle il peut être fait appel des décisions de la Commission) a annulé trois vétos pris par Mario Monti à l'encontre de fusions d'entreprises. +Même si les subventions publiques et les fusions d'entreprises sont de deux domaines distincts, ses échecs répétés dans ce dernier domaine ne sont pas sans conséquences dans l'action qu'il mène par ailleurs, notamment dans sa lutte contre le soutien de l'Etat au secteur privé. +L'annulation de ses vétos par la Cour constitue un camouflet sans précédent. +Dans l'affaire de la fusion Schneider---Legrand, elle cite plusieurs erreurs manifestes, des omissions et des contradictions dans l'analyse économique de la Commission, ainsi que des irrégularités de procédure qui constituent une atteinte aux droits de la défense. +Dans l'affaire Tetra Laval, la Cour conteste "l'analyse économique des conséquences à court terme de la fusion sur la concurrence" qui était "affectée d'une insuffisance d'éléments probants et comportait certaines erreurs d'évaluation". +Enfin, dans le cas de la fusion d'Airtours, la Cour a jugé que la Commission avait pris des décisions entachées d'erreurs sur des questions qui sont d'après elle fondamentales pour déterminer si une fusion entraîne la création d'une position dominante collective. +Elément qui aggrave encore l'injustice, dans au moins un cas, la décision de la Cour est intervenue trop tard pour que les entreprises concernées puissent poursuivre leur projet. +Ces affaires soulèvent des questions importantes quant au fond de la politique de la Commission en matière de concurrence et aux procédures utilisées. +Sur le fond, les décisions de la Cour donnent l'impression que l'Europe en fait un peu trop en ce qui concerne la concurrence. +Rendre une décision de justice sur le compromis entre l'efficacité que peut apporter une fusion et le risque de monopole est une chose délicate qui n'est pas de nature idéologique. +Dans l'affaire Airtours/First Choice, selon la Cour, la Commission n'a pas établi que l'opération de concentration "inciterait les trois grands voyagistes à ne plus se concurrencer" et elle a "estimé à tort que la concentration permettrait aux grands voyagistes de déchiffrer plus facilement leurs stratégies commerciales respectives pour ensuite les adopter". +La Cour estime également que la Commission n'a pas "clairement identifié et démontré" les mesures que pourraient prendre les membres de l'oligopole pour mettre en oeuvre une "ligne d'action commune". +Enfin, la Commission a "sous-estimé" la capacité des concurrents à réagir face à "une éventuelle tentative de limiter la capacité", que ce soit en augmentant leur offre ou en se positionnant rapidement sur le marché. +L'affaire Tetra Laval-Sidel est particulièrement intéressante, car elle montre à quel point l'équipe de Monti cherche à anticiper la politique des entreprises. +Elle est partie de l'idée que la profusion de fournisseurs dans le marché de l'emballage allait s'accentuer à moyen et long terme. +Elle en a conclu que Tetra Laval qui domine largement le marché des emballages en carton allait sans doute faire pression sur ceux de ses clients qui voulaient s'orienter vers les emballages en plastique PET pour qu'ils se tournent vers Sidel. +La Cour reconnait que la fusion pouvait entrainer ce type de manoeuvre, mais elle estime que la Commission n'a pas établi que la nouvelle entité serait incitée à la mettre en pratique. +Nous savons que les services du commissaire Monti peuvent répondre aux objections formulées par la Cour et que l'on peut discuter longuement sur le point de savoir si les fusions sont une menace telle sur la concurrence qu'il faille les empêcher. +Mais notre point de vue est différent. +Plutôt que d'examiner au microscope les fusions envisagées, le commissaire Monti devrait s'intéresser davantage à ses autres missions, limiter les subventions publiques aux entreprises privées et l'intervention de l'Etat sur le marché. +Autrement dit, il ferait sans doute mieux d'investir ses ressources qui sont limitées dans une autre direction. +Nous ne prétendons pas qu'il ne doit plus chercher à rendre le marché européen plus compétitif. +Dans la plupart des villes européennes, les chauffeurs de taxi sont protégés par la limitation du nombre de licences. De la même manière, dans de nombreux pays européens le nombre d'études notariales est limité et leur rémunération est élevée au regard du service rendu - sans grande valeur économique, mais indispensable du point de vue des procédures administratives. +Ce sont des batailles importantes qui concernent de près les citoyens. +Mais de même que la lutte contre les subventions publiques qui vise l'intervention de l'Etat, elles ne sont pas dirigées contre les entreprises privées. +La procédure elle-même touche des questions d'ordre constitutionnel. +Dans le domaine de la concurrence, au moins en première instance, la Commission est juge et partie. +Elle peut à la fois décider d'entamer une procédure contre une décision de fusion et l'interdire. +Les parties peuvent faire appel devant la Cour européenne de justice, mais cela prend du temps et si elle annule la décision de la Commission, il ne s'agit souvent plus que d'une victoire symbolique, car elle intervient trop tard, comme dans l'affaire Airtours-First Choice. +Un partage des responsabilités entre l'instance qui poursuit et celle qui juge constitue une garantie constitutionnelle fondamentale en cas de litige privé. +Aux USA, la concurrence est arbitrée selon ce principe et l'on ne peut que souhaiter que l'Europe le mette en pratique. +Il serait bon que Giscard d'Estaing et sa Convention européenne se penchent sur la question. +Menace furtive pour le commerce mondial +Les menaces qui planent sur le commerce mondial revêtent de multiples apparences. +Il est courant de soupçonner les barrières protectionnistes et les protestations militantes contre la globalisation, telles que celles qui ont fait dérailler les négociations du « Cycle du Millénaire » de l'Organisation mondiale du commerce (OMC), qui se sont tenues l'an dernier à Seattle. +Bien que ces manifestations fassent la une des journaux, une nouvelle menace pour le commerce mondial, peut-être même bien plus insidieuse, se dessine dans l'ombre depuis quelques années : le « sectorialisme » prétendument « ouvert », qui consiste à négocier l'accès aux marchés étrangers de manière sélective, industrie par industrie. +Cette pratique suppose la négociation par les pays d'une réduction des tarifs douaniers sur certains types de produits mais pas sur d'autres. +Contrairement aux apparences, le sectorialisme ouvert ne constitue pas la première étape d'un processus débouchant sur des accords commerciaux plus généraux. +Il peut en fait s'avérer une entrave à la négociation d'accords de plus grande envergure. +Car même si la négociation des accords sectoriels est couronnée de succès, ces derniers compromettent l'efficacité et la bonne marche de l'économie en protégeant les industries les moins compétitives, puisque chaque pays tente d'ouvrir le commerce dans les domaines où il est compétitif. +Aucun pays ne souhaite en effet ouvrir ses industries obsolètes à la concurrence étrangère. +Les conséquences économiques d'une telle position sont toutefois perverses. +Il suffit d'imaginer une Amérique ou une Europe qui n'aurait pas évolué depuis les années 50, dont l'économie dépendrait du charbon, de l'acier et du textile et qui ne serait pas exposée à la concurrence des producteurs meilleur marché d'Asie pour que le danger devienne évident. +Un autre danger provient du fait qu'en libéralisant le commerce uniquement pour quelques industries qui connaissent une réussite économique, le sectorialisme ouvert affaiblit plutôt qu'il ne renforce le soutien politique général dont dépendent les accords commerciaux internationaux qui profitent à la plupart des entreprises, des consommateurs et des pays. +L'Amérique est le partisan le plus fervent du sectorialisme ouvert, qu'elle a commencé à défendre au cours des négociations tarifaires du « zero to zero » qui se sont déroulées il y a plusieurs années, lors du cycle de pourparlers relatifs au commerce mondial de l'Uruguay Round. +Ces entretiens ont finalement abouti au démantèlement des barrières tarifaires dans dix secteurs clés. +Sous la pression des entreprises, les Etats-Unis ont négocié des accords dans le secteur des télécommunications, des technologies de l'information et des services financiers. +Le premier accord majeur, à savoir l'Accord sur les technologies de l'information (ATI), est entré en vigueur en 1997. Il concerne 90% des échanges de produits liés aux technologies de l'information dont la valeur s'élève à plus de 600 milliards de dollars par an. +L'Union européenne avalisa ensuite l'ATI après que son ambassadeur auprès des Etats-Unis, Hugo Paemen, y eut vu une preuve que les accords sectoriels contribuaient à contourner la résistance politique croissante à de nouvelles séries de négociations sur les échanges commerciaux. +Fort du soutien des deux acteurs les plus puissants sur la scène du commerce mondial, on a recherché depuis avec ardeur à reproduire le modèle de l'ATI dans d'autres secteurs. +Un Accord global sur les télécommunications de base a pris effet en 1998, suivi de l'entrée en application en avril 1999 d'un Accord sur les services financiers visant à libéraliser les échanges dans le secteur des opérations bancaires, de l'assurance, et des valeurs mobilières. +De tels accords, qui souvent éliminent non seulement les tarifs douaniers mais aussi d'autres barrières réglementaires, peuvent sembler inattaquables. +Mais les apparences sont trompeuses. +Etant donné que les puissants intérêts sectoriels qui ont encouragé la libéralisation lors du cycle d'Uruguay -- technologies de l'information, services financiers, télécommunications -- ont désormais leurs propres accords, le dynamisme qu'ils ont apporté par le passé à la cause d'une libéralisation du commerce plus étendue a nettement diminué. +Les Japonais estiment d'ailleurs que le soutien timide des groupes industriels américains à un nouveau cycle de négociations de l'OMC reflète la réussite des accords sectoriels antérieurs. +Aussi le Japon s'oppose-t-il désormais à la négociation d'un deuxième accord sur les technologies de l'information parce qu'il craint que celui-ci minera davantage le soutien politique à une libéralisation globale des échanges. +Les craintes sur l'avenir des négociations commerciales multisectorielles globales sont tout à fait fondées. +L'effort continu des délégués américains, par exemple, visant à cantonner la concertation aux échanges relatifs aux services et à l'agriculture, fait obstacle aux accords plus larges puisqu'il limite les arrangements possibles entre secteurs. +Par ailleurs, une approche secteur par secteur ignore immanquablement toute une série de problèmes au sein de l'OMC, tel que le règlement des différends, les pratiques antidumping et autres questions de ce genre. +L'expérience récente du forum de la Coopération économique Asie-Pacifique (APEC) souligne les limitations du sectorialisme ouvert et devrait susciter un réexamen minutieux de ce dernier. +Après l'entrée en vigueur de l'ATI, les Etats-Unis ont demandé instamment aux membres de l'APEC d'accélérer la libéralisation sur une base sectorielle afin de donner un nouveau souffle à un agenda commercial régional en perte de vitesse. +Mais les efforts pour conclure un accord destiné à libéraliser les échanges dans 15 secteurs n'ont pas tardé à faiblir : le prix de la libéralisation sélective dans les secteurs qui ne sont pas compétitifs, mais sensibles sur le plan politique, était tout simplement trop élevé pour certains gouvernements. +La leçon la plus importante qu'il faut retenir de l'échec de l'APEC consiste à reconnaître l'énorme difficulté rencontrée lors de l'élaboration d'un accord d'ensemble suffisamment général, mais politiquement acceptable, lorsque les négociations commerciales sont limitées à des bénéficiaires particuliers. +Etant donné que certaines industries ne se soucient plus des accords commerciaux internationaux puisqu'elles ont déjà tiré parti d'un accord sectoriel, les groupes qui en temps normal considèrent qu'ils ont tout à gagner d'une plus grande ouverture du commerce sont trop faibles pour contrebalancer l'influence politique des forces protectionnistes mobilisées contre la libéralisation. +Les dirigeants qui, de nos jours, sont séduits par le sectorialisme ouvert, en raison de la politique sans heurts qu'il promet, devraient prendre cette leçon à coeur. +Si l'on souhaite obtenir rapidement tous les avantages de la libéralisation du commerce, il n'y a pas d'autre solution que de reprendre les négociations globales -- et les arrangements entre industries que cette stratégie implique -- en ressuscitant le Cycle du Millénaire de l'OMC. +C'est cet agenda, plutôt que l'espoir fallacieux suscité par le sectorialisme ouvert, qui devrait être à l'avenir la première priorité des négociateurs commerciaux. +L'avenir de la Constitution européenne +L'Union européenne est aujourd'hui confrontée au défi de se recentrer sur les priorités présentes et futures. +Elle doit mieux communiquer avec ses propres citoyens afin de renouveler leur soutien en montrant que les Européens, lorsqu'ils travaillent conjointement, peuvent favoriser la croissance et l'emploi, combattre le crime mondial et garantir un environnement propre. +L'Union doit jouer un rôle plus actif dans le monde agrandi, non pour poursuivre des intérêts égoïstes, mais pour promouvoir les valeurs universelles sur lesquelles elle repose. +Surtout, l'Union agrandie a besoin d'un cadre constitutionnel et institutionnel à la mesure de ses ambitions. +Pendant trente mois, des gouvernements et des parlementaires ont travaillé sur une nouvelle Constitution pour l'Europe. +Un avant-projet exceptionnel a été préparé par la convention présidée par l'ancien président français Valéry Giscard d'Estaing. +Il appartient à présent aux gouvernements nationaux (le mien et ceux de mes collègues du Conseil européen) de terminer le travail. +Nous nous réunissons à Bruxelles cette semaine et notre priorité majeure sera de parvenir à un accord sur la Constitution. +Le consensus sur la majeure partie de l'avant-projet existe depuis un certain temps. +Tous s'accordent sur les valeurs et les objectifs de l'UE, sur l'inclusion de la Charte des droits fondamentaux et sur la simplification des processus législatifs. +Ce sont là des avancées majeures. +Mais les gouvernements nationaux manifestent inévitablement un intérêt particulier pour les pouvoirs des institutions de l'UE dans des domaines clés tels que la politique extérieure, le droit pénal et la taxation. +Telles sont les questions sur lesquelles les gouvernements doivent désormais s'entendre. +Tout au long des mois de contact et de négociations bilatéraux entre ministres, nous avons réussi à diminuer le nombre de questions en suspens jusqu'à un point rendant possible l'obtention d'un ensemble général équitable et équilibré. +Comme dans toute négociation, les ingrédients clés sont le choix du moment et la volonté politique. +Les gouvernements n'étaient tout simplement pas prêts en décembre dernier lors de la première tentative de finalisation de l'accord. +La décision du Conseil européen en mars de mettre fin aux négociations sous la présidence irlandaise a montré notre détermination inébranlable à sortir les négociations de l'impasse. +Au cours du mois dernier, j'ai rencontré tous mes collègues individuellement dans leurs capitales respectives. +Nous avons beaucoup parlé. +Je n'ai décelé aucun affaiblissement de leur détermination. +En fait, ils estiment que nous ne pouvons pas nous permettre d'échouer. +Au cours d'une période stimulante pour l'Union, cette dernière doit montrer que dans les moments difficiles, ses membres peuvent prendre des décisions collectives, bien que difficiles, dans l'intérêt commun. +Les équilibres institutionnels fondamentaux entre la Commission, le Conseil et le Parlement européen ne sont pas remis en question. +Mais les institutions de l'UE doivent être modernisées. +Une continuité et un centrage accrus seront apportés par la création d'un président à temps plein du Conseil européen et d'un ministre des affaires étrangères de l'UE, ainsi que d'une présidence d'équipe, composée de trois pays, afin de diriger les autres formations du Conseil. +Les gouvernements ont également accepté que le système de vote au sein du Conseil européen soit basé sur la double majorité de la population et des états membres. +Cette démarche est logique, transparente et représentative. +Mais les dispositions précises pour un vote à double majorité doivent être prises d'une manière qui respecte les préoccupations particulières de tous les états membres, tout en garantissant néanmoins que le nouveau système sera plus efficace que son prédécesseur. +Je pense que nous pouvons régler cette question fort difficile de manière équitable. +La Commission a pour tâche d'élaborer le programme de l'UE dans l'intérêt commun. +Un consensus se développe sur le fait que la " représentativité " et la légitimité puissent être obtenues en incluant les ressortissants de tous les états membres dans les deux Commissions suivantes, avant de passer à un nombre fixe plus petit basé sur un roulement strictement égal. +Il importe également de garantir que les citoyens de tous les états membres, grands et petits, soient suffisamment et convenablement représentés au Parlement européen. +La Constitution envisage de développer plus avant les fonctions importantes du Parlement, tant législatives que budgétaires, en partenariat avec les états membres. +En fait, pour la première fois, un rôle significatif de gardien est attribué aux parlements nationaux. +Ces dispositions préserveront la nature institutionnelle unique de l'UE (les équilibres entre ses institutions et entre les états membres) tout en offrant la perspective d'une efficacité et d'une transparence accrues. +La Constitution fera montre d'une avancée majeure supplémentaire dans l'utilisation du vote à la majorité, nécessaire dans une UE composée de 25 membres (et de bien d'autres dans les mois à venir). +Mais quelques sujets devront rester soumis à une décision unanime, de par leur nature spéciale. +Je pense que nous sommes sur le point de parvenir à un accord équilibré sur ce point. +Trop souvent, les questions complexes inhérentes à ce type de négociation sont présentées comme une bataille entre un pays et un autre, ou entre des idéologies concurrentes. +Ma longue expérience des négociations m'a appris que parler de gagnants et de perdants est non seulement inutile, mais fallacieux. +Chacun doit transiger, mais chacun doit également voir ses propres espoirs et ses propres inquiétudes reflétés dans le texte final. +Si nous réussissons cette semaine, ce succès marquera le triomphe de l'UE. +L'Europe représente la confluence de différentes traditions et histoires, et d'états souverains indépendants. +Mais nous sommes unis dans notre croyance que le partage de la souveraineté et la collaboration mutuelle constituent le meilleur (et, en effet, le seul) moyen de progresser. +L'adoption d'une Constitution implique la consolidation des divisions amères du passé et l'occasion de bâtir une Union au service de nos 450 millions de citoyens. +L'héritage de Palme: quinze ans après +STOCKHOLM: Il y a quinze ans, le 28 février, Olof Palme, Premier Ministre de la Suède, était assassiné. +Sa mort a choqué des millions de personnes dans le monde entier. +L'assassin n'a toujours pas été retrouvé, ou du moins il n'a pas été condamné. +Au-delà de Palme, ce crime visait la démocratie elle-même. +Assassiné, Palme fait maintenant partie de l'Histoire. +Mais l'Histoire doit être analysée librement et non censurée par déférence. +Aussi, lorsque nous nous remémorons le meurtre de Palme, nous devons aussi nous souvenir de ce qu'il a fait et de ce qu'il représentait. +Qu'en est-il, par exemple, de l'héritage de Palme en politique étrangère ? +Palme a été un critique puissant, éloquent des Etats-Unis et de la guerre au Viet-nam. +Il a lancé des imprécations contre l'oppression soviétique en Tchécoslovaquie et les meurtres du Général Pinochet au Chili. +A cause de ces positions, Palme a souvent été dépeint sous les traits d'un adversaire conséquent des tyrannies. +Ne "calomniez" pas l'Union Soviétique, a dit Palme, Président du Parti Social Démocrate suédois pendant 17 ans et Premier ministre de 1969 à 1976 et, de nouveau, de 1982 à 1986. +Ne vous engagez pas dans l'"agitation anti-Soviétique" ou "l'anti-soviétisme" a-t-il déclaré en 1984, une position neutre typique de la Suède de Palme. +Sans aucun doute, Palme reflétait l'esprit de son temps. +La renaissance Marxiste de l'Occident après 1968 a profondément impressionné journalistes et Socialistes, et la Suède n'a pas été en reste. +La guerre du Vietnam a changé la façon de voir le monde de beaucoup de jeunes gens. +Palme, cependant, a porté cet esprit vers l'avant longtemps après que d'autres ont aperçu la lumière libérale. +"Ni le communisme ni le capitalisme ne représentent un rêve de liberté pour les peuples d'Europe" a-t-il dit seulement quelques années avant que les peuples d'Europe de l'Est et d'Europe Centrale ne se libèrent du communisme pour embrasser la démocratie et le capitalisme. +Palme a aussi exploité des différences idéologiques diplomatiques pour blesser les autres partis démocratiques suédois. +Les conservateurs tombent dans "l'esprit de croisade, visant la libération de l'Europe de l'Est, qui a prévalu dans les quartiers conservateurs de l'Ouest pendant la Guerre Froide" a-t-il dit en 1983 à un moment de grande tension entre l'Occident et l'URSS. +Finalement, les libéraux et les conservateurs suédois sont arrivés au pouvoir en 1976, après 44 ans de férule socialiste. +Aucune des menaces pesant sur la politique étrangère de la Suède, que Palme avait prévues avec certitude, ne s'est matérialisée au cours de leurs neufs années d'exercice pendant le dernier quart de siècle. +Après avoir divisé son pays, Palme a fait son possible pour diviser l'Occident à un moment critique. +Dans les années 80, les Sociaux-Démocrates en Suède et en Allemagne développèrent une étroite coopération idéologique en politique étrangère. +La soi-disant "Commission Palme" (dont était membre l'influent Egon Bahr) suggéra une politique de "sécurité commune" entre l'Est et l'Ouest, et des zones d'exclusion d'armes nucléaires à la place de la politique de l'OTAN pour le déploiement des missiles de croisière et Pershing II dans le but de contrer l'avantage Soviétique sur le plan des armes nucléaires. +Cette collaboration entre les deux partis a mené à de sérieuses distorsions des valeurs occidentales fondamentales. +Palme et Oskar Lafontaine, qui était alors un des leaders de l'opposition en Allemagne, n'ont pas vu que la Guerre Froide était essentiellement un conflit entre la liberté et la tyrannie. +Quand Palme a visité l'Allemagne de l'Est en 1984, il n'y a jamais critiqué la répression, ni le Mur de Berlin. +Au lieu de ça, Palme a félicité le dirigeant de l'Allemagne de l'Est, Erich Honecker, en soulignant leurs buts communs et leur combat mutuel pour la paix et le développement. +Le discours principal de Palme évoquait la "détente", la "confiance" et "l'amitié" mais jamais "la liberté". +Il s'est passé à peu près la même chose quand Palme a visité Cuba. +Il a partagé un podium avec Fidel Castro lors d'un rassemblement de masse à Santiago de Cuba. +Palme a parlé sur un ton élogieux de "révolution socialiste" sans jamais mentionner la conviction de son propre parti qui était que la "révolution" devait avoir lieu seulement après des élections libres et honnêtes. +Palme, en effet, a utilisé des slogans marxistes mais n'a rien dit au sujet des droits de l'homme et de la liberté politique, donnant ainsi l'impression que la Suède et Cuba avaient des idéologies similaires. +Lors d'un communiqué commun avec Castro, Palme a affirmé que les deux hommes étaient du même avis sur tous les sujets dont ils avaient discuté. +Ils ont même confirmé leur joie de voir que les combats pour la liberté des "peuples vietnamiens et cambodgiens aient été couronnés de succès". +Cela a été dit au cours de l'été 1975, deux mois après que les Khmers Rouges cambodgiens se sont lancés dans un génocide qui a tué deux millions de personnes sur les sept millions que comptait le pays. +Est-ce qu'Olof n'avait pas conscience des massacres perpétrés par Pol Pot ? +Les journaux de presque toutes les démocraties, y compris la Suède, nous informaient des horreurs que vivait le Cambodge. +Mais Palme a trouvé plus important de montrer un front uni avec le tyran cubain que de se soucier des atrocités commises par les Communistes en Indochine. +Palme a rarement condamné l'oppression dans les pays du Tiers Monde. +Il n'a jamais critiqué la Chine de Mao, le régime le plus meurtrier de l'après Seconde Guerre Mondiale, mais a constamment condamné l'apartheid en Afrique du Sud. +Ce "deux poids, deux mesures" a été particulièrement pernicieux au Moyen- Orient, où Palme n'a jamais censuré un pays arabe, sans tenir compte de son niveau de corruption ou de cruauté. +Le seul pays qu'il y a attaqué de façon répétée était la seule démocratie de cette région, Israël. +Il a même comparé les Israéliens aux Nazis. +Quinze ans après son assassinat, la Suède et l'Ouest doivent se débattre avec ce que Palme a laissé derrière lui, son agitation anti-occidentale et son désir de voir les idéaux fondamentaux de la liberté comme de simples notions relatives. +C'est cet aspect de son prétendu moralisme qui devrait être rappelé. +L'ancien dans le nouveau anti-sémitisme +Pourquoi tant de survivants de l'Holocauste pressentent-ils les menaces anti-juives naissantes avant de les voir ? +Parce qu'ils savent comment les insinuations soi-disant « innocentes » se transforment en accusations et comment ces accusations peuvent se transformer en discrimination et bientôt après devenir lois. +C'est alors que l'hystérie est libérée. +En ce faisant, ils renforcent nos démocraties comme aucune autre personne ne le peut. +Nous écoutons les survivants afin de survivre. +Il est évident que nous avons raison de les écouter, comme le démontrent les résultats du premier tour de l'élection présidentielle française. +Mais il n'y a pas que les démagogues tels que Jean-Marie Le Pen et d'autres personnes de l'extrême droite populiste qui incitent à la discorde. +Tout au long du 20 +Prenez le cas de l'ambassadeur de France en Grande-Bretagne. +Lors d'un dîner à Londres il n'y a pas si longtemps, il décrivait Israël comme « ce petit pays de merde ». +Ses commentaires vulgaires ne sont pas particulièrement effrayants. +C'est la réaction qu'ils ont suscitée qui est inquiétante. +Il n'a pas été rappelé par son gouvernement ; le gouvernement de Tony Blair n'a pas demandé son rappel ; l'opinion publique a simplement traité l'anecdote comme un scandale banal. +En effet, la presse française a considéré que l'ambassadeur était la victime de la presse tabloïde anglaise, et non de ses sentiments méprisables. +Malheureusement, l'ambassadeur de France à la cour de St. James dispose de nombreux alliés parmi les élites européennes. +Mais M. Bernard, l'ambassadeur, nous a rendu service : il nous à aidé à prendre conscience de l'ampleur de cette nouvelle forme d'antisémitisme. +Comme l'a dit en particulier un chroniqueur, Israël est devenu « l'objet d'une haine qui n'ose pas dire son nom ». +Mais nous ne devons pas seulement oser, nous sommes obligés de parler. +Nous ne devons pas rester silencieux devant les attaques quotidiennes menées en France contre les juifs et les synagogues. +C'est une honte pour l'Europe entière que de nombreux juifs français ne puissent pas envoyer leurs enfants à l'école sans s'inquiéter de leur sécurité. +On retrouve ces affronts antisémites également partout ailleurs : à Berlin et à Londres, en Suisse, en Italie, en Suède, aux Pays-Bas, et dans certains pays d'Europe de l'Est. +Nous ne devons pas rester silencieux sur le fait que la dénégation de l'Holocauste est en train de devenir une habitude ; de même que les parallèles établis par les antisémites/anti-sionistes entre Israël et le Troisième Reich. +Nous devons « affronter le nouveau fléau nazi qui niche en Israël », écrivait un journal syrien tandis que la télévision palestinienne dépeint les soldats israéliens comme des violeurs et des meurtriers impitoyables. +Le mufti de Jérusalem a déclaré que « ce n'est pas de [sa] faute si Hitler haïssait les juifs, il les haïssait où qu'ils se trouvent ». +Le sermon du vendredi de la télévision palestinienne exhortait les Musulmans « à n'avoir aucune clémence envers les juifs, peu importe où [qu'ils soient]... tuez-les... ainsi que tous ces Américains qui leur ressemblent ». +Nous ne pouvons oublier, à propos de l'antisémitisme, que bien qu'il commence toujours avec les juifs, il ne s'arrête jamais avec eux. +La haine des juifs, si elle n'est pas contenue, se développe quasiment toujours en agression sur d'autres groupes et minorités et mine en fin de compte les institutions démocratiques et la loi. +Ainsi la lutte contre l'antisémitisme unit les juifs tout autant que les non-juifs. +Mais cette lutte est désormais bien plus diffuse que jamais car l'antisémitisme actuel possède une faculté étonnante : la souplesse. +Bien que l'antisémitisme n'ait jamais changé d'objectif - attaquer les Juifs - il change de visage, de stratégie, de justification, et même de vocabulaire. +La religion juive fut jadis la cible de persécutions. +Lorsque le judaïsme ne capitulait pas, les juifs étaient expulsés ou massacrés. +Au 19 +Je n'assimile pas la critique d'Israël à de l'antisémitisme. +Il est tout aussi légitime de s'opposer à certaines politiques et décisions israéliennes que d'examiner attentivement toute nation. +Mais l'anti-sionisme commence à ressembler à l'antisémitisme. +Parfois, certains anti-sionistes déclarent qu'ils ne sont pas contre les juifs, mais qu'ils sont « uniquement » contre l'État juif. +Mais supposons que quelqu'un déclare un jour : « Je suis uniquement contre l'existence de la Grande-Bretagne, je ne suis pas anti-britannique! » +Ou que quelqu'un me déclare : « J'aime les Suédois, mais la Suède doit être supprimée ». +Vous ne les croiriez pas. +Il est dur d'aimer ou de respecter un peuple et de haïr son État. +Cependant les gens prétendent que c'est le cas avec Israël. +Dans plusieurs bureaux de l'ONU, rabaisser Israël est devenu une habitude. +Cette diabolisation de la seule démocratie du Moyen-Orient occupe une place centrale dans le nouvel antisémitisme. +Lorsque Israël est décrit « comme l'ennemi du bien et le dépositaire de tout ce qui est mauvais », affirme le professeur Irwin Cotler, membre du parlement canadien, cela revient à « enseigner le mépris » au sein de l'ONU. +Cette constante distinction d'une nation en tant qu'ennemi de l'humanité est en fait une campagne dirigée contre le peuple juif. +En effet, beaucoup de manifestations antisémites dans de nombreux pays prennent racine dans les condamnations d'Israël qui exploitent la terminologie antisémite. +Les attaques contre les synagogues sont souvent déclenchées par un langage diffamatoire sur le Moyen-Orient. +Comparé aux précédentes éruptions, l'antisémitisme d'aujourd'hui constitue moins une attaque sur les Juifs en tant qu'individus qu'une attaque sur le « juif collectif », l'État d'Israël. +De telles attaques ont toutefois entraîné une réaction en chaîne d'agressions à travers l'Europe et l'Amérique latine contre les juifs et les institutions juives. +Dans le passé, les antisémites les plus dangereux étaient ceux qui cherchaient à rendre le monde Judenrein, sans juifs. +Aujourd'hui, les antisémites les plus dangereux sont ceux qui souhaitent rendre le monde Judenstaatrein , sans État juif. +Une poule mouillée peut-elle désarmer Saddam ? +chef des inspecteurs en désarmement de l'ONU et l'Irak se sont mis d'accord sur un calendrier provisoire pour la conduite des inspections, qui en théorie pourraient commencer dans deux semaines. +Mais le succès d'un tel accord dépend autant des hommes qui conduiront les inspections que des détails de lieux et de calendrier, ainsi que de la manière dont ces inspections seront menées. +Hans Blix dirige les inspections en désarmement de l'ONU qui doivent permettre de chercher, trouver et détruire les armes de destruction massive de Saddam Hussein. +Je connais M. Blix depuis plus de quarante ans. +En 1960, il m'assistait alors que je dirigeais l'Association suédoise des jeunes libéraux. +Depuis, j'ai suivi sa carrière de près. +Il fut ministre des Affaires étrangères de la Suède pendant un an avant de prendre le poste de directeur général de l'Agence Internationale de l'Énergie Atomique (AIEA) à Vienne. +Il m'est difficile de trouver les hommes politiques européens moins aptes que lui pour un face-à-face avec Saddam Hussein. +En fait, je n'en croyais pas mes yeux quand j'ai suivi le journal télévisé annonçant les négociations entre M. Blix et les hommes de confiance du dictateurs irakien. +Tout le monde sait à quoi s'en tenir quant aux faiblesses de M. Blix puisqu'il a déjà largement démontré son incapacité notoire. +Quand M. Blix dirigeait la AIEA, avant la Guerre du Golfe de 1991, il assurait avec insouciance à tout le monde, après plusieurs inspections, que la situation irakienne n'était pas alarmante. +Il produisit le rapport favorable que Saddam espérait le voir produire alors qu'il commençait à cacher ses ambitions et ses usines d'armement nucléaire. +Depuis, nous avons appris sans aucune ambiguïté possible que Saddam est obsédé par l'acquisition d'armes de destruction massive : les ogives chimiques et biologiques ainsi que les bombes atomiques et les missiles nécessaires à leur lancement. +D'anciens experts des programmes d'armement nucléaire irakiens ayant fui Bagdad pour passer à l'Ouest l'ont confirmé. +Ils ont raconté les efforts déterminés et coûteux mis en place pour l'acquisition de la puissance nucléaire. +En fait, il est maintenant clair qu'il ne fallait guère plus d'un an à Saddam pour s'approprier sa première bombe atomique quand la Guerre du Golfe fut déclenchée. +Après ce conflit, les inspecteurs de l'ONU trouvèrent et détruirent d'importants stocks d'ogives chimiques et biologiques ainsi que les installations nécessaires à la production d'armes atomiques. +En dépit de ses graves manquements en qualité de directeur de l'AIEA avant 1991, M. Blix fut une fois de plus nommé à la tête des inspecteurs en désarmement de l'ONU, accompagné cette fois d'un autre suédois, l'ambassadeur Rolf Ekéus. +M. Blix, naïf et relativement ignorant des détails techniques (c'est un spécialiste de la législation internationale), est facilement trompé. +Même après la guerre du Golfe, il ne parvint pas à déceler que les officiels irakiens qui, une fois de plus, assuraient l'ONU qu'ils n'avaient rien à cacher, n'étaient que d'éhontés menteurs. +En fait, M. Blix crut que l'Irak n'avait aucun programme d'armement nucléaire. +David Kay, peut-être l'inspecteur le plus efficace, persista à ne pas leur faire confiance. +Mais M. Blix reprochait à M. Kay son attitude. +Vous devez faire confiance aux informations officielles, sous-entendait M. Blix. +L'événement décisif se produisit quand M. Kay se lança dans des inspections de bâtiments suspects sans notifier d'avance les Irakiens de ses intentions. +Cette nouvelle stratégie d'inspection agressive eut des conséquences dramatiques : M. Kay découvrit les preuves confirmant que l'Irak n'était plus qu'à quelques mois de se lancer dans la production d'armes nucléaires. +Cette découverte historique mena à une confrontation sur un parking de Bagdad. +Les véhicules de l'ONU furent cernés par 200 soldats irakiens et toute une clique, et des représentants irakiens qui leur ordonnèrent de quitter les lieux. +Le siège se poursuivit pendant quatre jours et quatre nuits, tandis que M. Kay et ses collègues utilisaient leurs téléphones pour faxer via satellite des documents cruciaux vers l'Ouest. +M. Blix s'était opposé à ce raid. +Heureusement, l'ambassadeur, M. Ekéus l'appuya et soutint les inspecteurs pendant le siège. +J'ai rencontré un certain nombre d'experts dans le domaine des armes de destruction massive irakiennes et ils comparent souvent les deux Suédois : « M. Ekéus est brillant », disent-ils, « et M. Blix est terrible ». +Quand le groupe d'inspecteurs actuel fut mis sur pied, en 1999, MM. Ekéus et Blix faisaient tous deux partie des candidats possibles pour la direction de ce nouveau groupe d'inspecteurs. +Les sympathisants irakiens de Paris et de Moscou consultèrent Bagdad pour déterminer qui avait la préférence de Saddam. +La France et la Russie suggérèrent alors M. Blix. +Étrangement, le gouvernement Clinton accepta cette décision. +Les armes chimiques et biologiques de Saddam, et sa détermination à acquérir des armes nucléaires, représentent une menace pour le monde. +Ce dictateur pourrait utiliser ces armes lui-même ou les mettre à disposition d'organisations terroristes. +Et la question de la guerre ou de la paix dépend d'un homme qui a été maintes fois trompé par le régime irakien. +Le gouvernement Bush comprend probablement les faiblesses de M. Blix. +Il est fort probable que les États-Unis ne laisseront pas l'Irak tromper une fois de plus M. Blix et les inspecteurs qu'il dirige. +Quel que soit le déroulement de cette crise à partir d'aujourd'hui, l'ONU a négligé son devoir en demandant à une poule mouillée de diriger les inspecteurs qui sont censés affronter la brute de Bagdad. +L'Hérésie de l'ONU +Aucune autre organisation n'est autant respectée que les Nations unies. +Ceci est peut-être naturel, puisque l'ONU personnifie certains des rêves les plus nobles de l'humanité. +Pourtant, comme le montre le scandale actuel autour de la gestion onusienne du programme d'échange de vivres contre du pétrole en Irak, au moment où la communauté internationale se remémore le génocide rwandais qui se produisit il y a dix ans, le respect de l'ONU devrait être considéré comme une sorte de superstition, et le Secrétaire général, Kofi Annan, comme son faux prophète. +Depuis Dag Hammarskjöld, aucun autre leader des Nations unies n'avait été autant acclamé que Kofi Annan. +Et ceci est compréhensible, dans une certaine mesure. +Annan garde habituellement une attitude imperturbable, empreinte de dignité. +Il possède un certain charme, et selon certains un certain charisme. +Cependant, un leader doit se juger à l'aune de ses actes quand les situations en jeu sont importantes. +Les échecs d'Annan dans de telles situations sont presque toujours dissimulés. +Entre 1993 et 1996, Annan fut Sous-Secrétaire général adjoint aux opérations de maintien de la paix puis Sous-Secrétaire général. +Le massacre serbe de 7 000 personnes dans la ville bosniaque de Srebrenica est l'une des deux grandes catastrophes où sa responsabilité est largement impliquée, le pire massacre que l'Europe d'après-guerre ait jamais connu. +En 1993, il fut promis aux musulmans de Bosnie que les forces onusiennes les protégeraient. +Cet engagement représentait la condition sine qua non de leur désarmement. +Les Nations unies déclarèrent que Srebrenica était un " lieu sûr " que 600 casques bleus néerlandais allaient " protéger " au nom des Nations Unies. +En juillet 1995, les forces serbes attaquèrent et les Nations unies ne respectèrent pas leur serment. +L'administration d'Annan publia des communiqués confus et évasifs. +Inconscients, apparemment, de la gravité de la situation, elle fut incapable d'alerter la communauté internationale de manière appropriée et n'intervint pas. +Les casques bleus néerlandais ne tirèrent pas une seule fois. +La puissance aérienne de l'OTAN aurait pu arrêter les Serbes mais Annan ne demanda pas à l'OTAN d'intervenir. +Ratko Mladic, commandant serbe et criminel de guerre, déporta les femmes et les enfants sous les yeux des Nations unies tandis qu'il capturait et assassinait les hommes et les adolescents. +Personne ne devrait s'étonner de l'inaction des Nations unies, puisque l'année précédente, elles avaient fait preuve de leur totale incompétence à faire face au génocide le plus rapide de l'histoire : le massacre de 800 000 Tutsis modérés et les Hutus au Rwanda en quelque 100 jours. +Les forces des Nations unies au Rwanda en 1994 relevaient de la responsabilité d'Annan avant et pendant la crise. +Annan fut alerté quatre mois avant que les activistes Hutus n'entament leurs assassinats de masse par un fax du général canadien Roméo Dallaire, commandant des forces des Nations unies au Rwanda. +Dallaire décrivait en détail comment les Hutus préparaient " l'extermination anti-Tutsi ". +Il indiqua que sa source était " un Hutu " et que l'armement nécessaire avait été rassemblé pour le nettoyage ethnique qui se préparait. +Dallaire demanda la permission d'évacuer son informateur et de saisir les caches d'armes. +Annan rejeta ces deux demandes et proposa à Dallaire d'informer le Président rwandais, Habyarimana, un Hutu, de l'identité de son informateur bien que ce dernier ait expressément indiqué que l'entourage proche du Président était à l'origine du plan d'attaque du génocide. +Annan est resté d'une passivité extrême, même après le crash de l'avion où le Président Habyarimana trouva la mort, qui fonctionna comme déclencheur du génocide, facilité par l'indifférence des super-puissances (l'Amérique entre autres). +On pourrait penser qu'Annan s'était bien trop compromis pour le poste de Secrétaire général, mais ce n'est pas ainsi que fonctionnent les Nations unies. +Au lieu d'être obligé de démissionner après les événements du Rwanda et de Srebrenica, il fut promu Secrétaire général. +C'est la culture des Nations unies : croire les meilleurs des barbares, ne rien faire pour provoquer la controverse chez ses supérieurs et laisser à d'autres le rôle de cible pour les critiques après coup. +Même les révélations faites par la suite sur les responsabilités d'Annan dans les catastrophes rwandaises et bosniaques n'ont pas entamé sa position. +Bien au contraire, il fut réélu à l'unanimité et reçu le prix Nobel de la paix. +C'est le diplomate téflon par excellence. +Les médias font parfois grimper l'admiration pour Annan en précisant que sa femme est suédoise et une parente proche de Raoul Wallenberg. +Il nous faut donc en conclure qu'en plus de tous ses talents, Annan partagent les idéaux personnifiés pendant les derniers jours de la Deuxième guerre mondiale par le plus célèbre des Suédois des temps modernes. +Mais le nom de Wallenberg devrait nous consterner davantage quant au dossier Annan. +Wallenberg refusa d'ignorer la menace des massacres à venir et au lieu de laisser tomber ses responsabilités et de s'adonner à des tâches conventionnelles en Suède, il fit chemin jusqu'en Hongrie, scène de la dernière orgie homicide d'Hitler contre les juifs. +À Budapest, Wallenberg exploita le moindre contact disponible, ayant recours à des tours douteux, à la corruption, et à d'autres stratagèmes pour sauver de l'holocauste autant de personnes que possible. +Il ne se laissa jamais duper par la clique d'Hitler. +Peut-être ne devrait-on jamais juger le succès de quelqu'un en le comparant au succès de Wallenberg - un titan d'une force, d'un courage et d'une persévérance certains. +Le problème avec Annan est que, quand des événements similaires se sont produits, il fit véritablement défaut. +Annan ne peut pas dire qu'il craignait personnellement pour sa sécurité, tandis que Wallenberg en 1944 et 1945 était constamment en danger. +Pas plus qu'il ne peut vraiment s'excuser en décrétant qu'il ne fut pas averti ou qu'il manquait de ressources ou encore qu'il n'avait pas la position internationale nécessaire pour intervenir. +Annan avait à sa disposition tous les instruments de pouvoir et d'opinion qui manquèrent à Wallenberg. +Et pourtant quand des milliers ou des centaines de milliers de personnes furent soumises à des menaces de mort qu'il avait l'autorité et le devoir d'empêcher, de soulager ou du moins d'annoncer, il échoua misérablement. +Maintenant, en dépit des révélations récentes sur la corruption à l'œuvre au sein du programme onusien d'échanges de produits essentiels contre du pétrole en Irak, la communauté internationale s'apprête à mettre entre les mains d'Annan le futur de plus de 20 millions d'Irakiens qui ont survécu à la dictature dépravée de Saddam Hussein. +Cela est dû aussi bien à Annan et ce qu'il est qu'à ce que sont devenues les Nations unies : une institution où aucun défaut, semble-t-il, ne reste infructueux. +De l'antisémitisme à l'antiaméricanisme +L'antisémitisme, l'anti-sionisme et l'antiaméricanisme sont de plus en plus virulents et accointés les uns aux autres dans l'Europe d'aujourd'hui. +Ils trouvent leur source dans une espèce d'aveuglement combiné avec un étrange mélange d'aliénation, de sentiment de culpabilité et de peur envers Israël et les USA. +Des millions d'Européens évitent de voir en Israël un pays qui lutte pour sa survie. +Israël ne peut se permettre de perdre une seule guerre d'importance, car ce serait la fin de cet Etat juif et démocratique. +Mais beaucoup d'Européens pensent que les Israéliens font une erreur à la base : ils se refusent à tout compromis et préfèrent utiliser les moyens militaires pour résoudre des problèmes politiques. +L'attitude européenne est sensiblement la même à l'égard des USA. +"Regardez l'Europe", disent nombre d'Européens, "Nous avons éradiqué la guerre, les dangers du nationalisme et la dictature. +Nous avons crée une Union européenne pacifique. +Nous ne faisons pas de guerre, nous négocions. +Nous ne gaspillons pas nos richesses dans l'armement. +C'est la "suédisation" de l'Europe. +Il est vrai que l'existence de l'Union européenne tient du miracle sur un continent qui a donné naissance à deux totalitarismes, le communisme et le nazisme, qui sont à l'origine de gigantesques bains de sang. +Mais l'Europe oublie comment ces idéologies ont été vaincues. +Sans l'armée américaine, l'Europe de l'Ouest n'aurait pas été libérée en 1945. +Sans le plan Marshall et l'OTAN, elle n'aurait pas redémarré économiquement. +Sans la politique de confinement sous le parapluie américain, l'Armée rouge aurait étouffé le rêve de liberté en Europe de l'Est et aurait unifié l'Europe, mais sous un drapeau d'étoiles rouges. +Les Européens de l'Ouest ont aussi oublié que certaines régions du monde n'ont jamais connu la liberté. +Dans beaucoup de pays, les salles de torture sont la norme et non pas des bavures grotesques et honteuses de troupes mal encadrées. +Dans ce contexte, toute tentative de se comporter à l'européenne en négociant - sans la force militaire pour appuyer la diplomatie - est tout simplement vouée à l'échec. +Plutôt que d'aider ceux qui combattent le terrorisme international, beaucoup d'Européens rejettent la responsabilité de son accroissement sur Israël et les USA ; c'est une nouvelle illusion européenne. +Que se serait-il passé si l'Espagne et toute l'Europe avaient réagi d'une manière diamétralement opposée à l'attentat de Madrid en avril en disant : "A cause de ce massacre, nous allons redoubler d'effort dans notre engagement pour stabiliser l'Irak en envoyant deux fois plus de troupes, d'experts, d'ingénieurs, de professeurs, de policiers, de médecins, ainsi que des milliards de dollars pour aider les forces alliées et leurs partenaires irakiens." +Le triomphe des terroristes aurait été transformé en un triomphe de la guerre contre le terrorisme. +L'image que beaucoup d'Européens se font de l'Amérique et d'Israël crée un climat politique propice à de terribles préjugés. +Pour la propagande anti-sioniste moderne, Israël cherche à dominer tout le Moyen-Orient. +Ces idées se retrouvent dans les sondages qui montrent que les Européens voient dans Israël et les USA les véritables obstacles à la paix dans le monde. +L'écrivain britannique Ian Buruma estime que la rage antiaméricaine et anti-israélienne de l'Europe touche à un sentiment de culpabilité et de peur. +Les deux guerres mondiales ont conduit à de tels carnages que le "jamais plus çà" a été traduit en "bien-être chez soi et non-intervention à l'extérieur". +Le problème avec cette idée est qu'elle ne peut être appliquée que sous la protection de la puissance américaine. +L'extrémisme antiaméricain et anti-sioniste sont en train de fusionner. +Le slogan soi-disant pacifiste "Hitler a deux fils : Bush et Sharon" qui fleurit en Europe dans les manifestations contre la guerre banalise le nazisme tout en diabolisant ses victimes et ceux qui l'ont défait. +Cela vient en grande partie d'un sentiment de culpabilité sous-jacent de l'Europe qui est lié à l'Holocauste. +Les victimes de l'Holocauste - avec leurs enfants et leurs petits-enfants - feraient aux autres ce qu'on leur a fait. +En mettant sur le même plan l'assassin et sa victime, nous nous en lavons les mains. +Ce mélange d'anti-sionisme et d'antiaméricanisme revient sans cesse. +Le "méchant Israélien" et le "méchant Américain" semblent faire partie d'une même famille. +C'est la version moderne du vieux mythe qui veut que ce soient les Juifs qui gouvernent les USA. +Récemment, le rédacteur en chef de Die Zeit , Josef Joffe, a mis le doigt sur le fond du problème : comme les Juifs, les Américains seraient égoïstes et arrogants. +Comme les Juifs, ils seraient prisonniers du fondamentalisme religieux qui leur donne la conviction d'être dans leur droit et les rend dangereux. +Comme les Juifs, les Américains seraient des capitalistes avides pour lesquels l'argent est la valeur première. +"Les USA et Israël ont été fondés par des exclus, tout comme les Juifs l'ont été de tout temps", explique-t-il. +Les liens entre l'antisémitisme, l'anti-sionisme et l'antiaméricanisme sont indéniables. +A moins que les dirigeants européens condamnent sans ambiguïté cette triple alliance sinistre, elle va empoisonner la politique au Moyen-Orient et les relations transatlantiques. +Course aux armements en Europe et en Asie +Lorsque l'unification de l'Europe a été lancée, on pensait que cette " union sans cesse plus étroite " créerait une communauté capable de protéger les Européens du chantage politique. +On constate aujourd'hui -- même si la levée de l'embargo de l'UE sur les ventes d'armes à la Chine pourrait être retardée par les pressions américaines et l'agressivité chinoise - que l'Union européenne n'est plus qu'un instrument de corruption, utilisé par la France et la Chine pour des plans d'action conjoints. +La situation est d'une simplicité impitoyable : la plus grande dictature au monde se prépare à écraser et à occuper la première démocratie chinoise de l'histoire, Taiwan. +Et elle a besoin pour cela d'un arsenal beaucoup plus perfectionné que celui qu'elle possède pour le moment. +Les Etats-Unis n'exportent naturellement pas de telles armes vers la Chine, et essayent au contraire de dissuader les dirigeants chinois de lancer une attaque militaire contre les démocrates de Taiwan. +Mais si l'Union européenne proposait à la Chine des exportations importantes de systèmes militaires offensifs puissants, l'Armée populaire de libération pourrait venir à bout de la défense taiwanaise. +Plus de 600 missiles, déjà déployés sur le continent, sont orientés vers des villes et des installations militaires de l'île. +Pour le moment, le danger n'est pas très réel. +La Russie vend certaines armes à la Chine, mais évite d'exporter ses systèmes les plus perfectionnés, car le Kremlin considère la Chine comme une menace future potentielle. +Mais si des pays de l'UE commencent à se faire concurrence pour gagner des parts du marché chinois, les Russes pourraient bientôt être tentés de vendre leur meilleur matériel au régime communiste de Beijing. +Ce nouvel armement de la Chine, dans le contexte de la crise nord-coréenne, risque de pousser une demi-douzaine de pays de la région à renforcer leurs capacités militaires. +En levant l'embargo sur les ventes d'armes à la Chine, l'UE pourrait encourager une course aux armements dans l'est de l'Asie. +Comment la Chine et la France ont-elles réussi à convaincre l'UE d'envisager de participer à une telle initiative ? +Quand le gouvernement de Jacques Chirac a décidé de développer sa coopération économique avec la Chine, les armes sont devenues un élément stratégique essentiel. +Tout comme le Premier ministre Chirac avait vendu un réacteur nucléaire à Saddam Hussein dans les années 70, le Président Chirac se laisse aujourd'hui persuader de faire affaire avec une autre dictature agressive. +Pour le reste, il s'agit de chantage économique. +Les diplomates français ont bien entendu informé la Chine des réticences d'autres pays européens quant à la levée de l'embargo, imposé après le massacre de la place Tiananmen en 1989. +La Chine a alors simplement menacé d'abandonner ses accords commerciaux ou de ne plus jamais en conclure avec ces membres de l'UE. +En Allemagne, les Chinois doivent murmurer en coulisses Siemens et Volkswagen , et aux Pays-Bas, Philips . +La Chine suit les luttes de pouvoir au sein de l'UE par l'intermédiaire de ses amis français, et sait donc quels gouvernements elle doit mettre au pas. +En Suède, il a probablement suffi de chuchoter Ericsson et Volvo pour que le Premier ministre Göran Persson prenne conscience des enjeux commerciaux pour son pays. +En effet, quel pays européen oserait mettre en péril une commande chinoise de plusieurs milliards d'euros ? +Bien entendu, aucun pays de l'UE n'a évoqué Taiwan pour ne pas reprendre les exportations. +L'Union parle de " code de conduite " (ce qui ne veut pas dire grand chose, mais fait bon effet) et de " libre-échange " (euphémisme charmant pour désigner la vente d'armes à des régimes dictatoriaux). +Ce silence est du plus mauvais augure. +En pratique, l'UE fait savoir à la Chine que le problème taiwanais n'est pas le sien. +Si l'Union lève l'embargo, elle déclinera toute responsabilité dans une catastrophe éventuelle. +Comme d'habitude, c'est aux Etats-Unis qu'il incombe de venir à la rescousse d'un peuple libre pour éviter sa destruction. +Il y a soixante ans, les troupes et les armes américaines ont libéré l'Europe occidentale du joug nazi. +Bientôt, des armes européennes pourraient être utilisées par les Chinois contre des troupes américaines tentant de protéger une démocratie de 23 millions d'âmes (une population équivalente à celle de tous les pays nordiques réunis). +Comme l'a déclaré Tom Lantos, un député démocrate californien, l'Union européenne a perdu son sens moral. +Et Tom Lantos sait de quoi il parle : enfant, à Budapest, il fut sauvé de la déportation vers Auschwitz par Raoul Wallenberg. +Wallenberg était suédois. +Et pourtant la Suède fait elle aussi preuve aujourd'hui d'un manque de moralité politique. +Plusieurs de mes amis du groupe parlementaire conservateur sont engagés depuis longtemps en faveur de Taiwan. +Au cours des dix dernières années, nous avons organisé des conférences scandinaves sur Taiwan aux parlements de Copenhague, d'Oslo et de Stockholm. +Mais une intervention du Premier ministre suédois a suffi à amadouer le dirigeant du parti conservateur, Fredrik Reinfeldt. +Göran Persson n'avait pas la majorité au parlement suédois pour lever l'embargo, mais il semble être parvenu à ses fins grâce au mot magique, Ericsson . +Reinfeldt est ainsi le premier dirigeant du parti conservateur dans l'histoire de la Suède à encourager les exportations d'armes vers une dictature communiste. +Pourtant Reinfeldt, comme Chirac, a oublié quelque chose : aux prochaines élections, les libéraux pourraient bien vouloir autre chose qu'un premier ministre cynique ou un autre. +Ils préféreront peut-être un choix plus marqué. +L'ONU doit être au service de la liberté ! +Pour mon pays, la Suède, l'ONU était jusqu'à présent une vache sacrée. +Mais aujourd'hui, beaucoup de Suédois, comme beaucoup d'autres peuples dans le monde, considèrent l'ONU d'un autre œil. +Trois scandales expliquent ce revirement. +Il y a d'abord eu ce qui est sans doute le génocide le plus rapide jamais perpétré, le massacre de plus de 800.000 personnes au Rwanda en moins de 100 jours en 1994. +Il est clairement établi que Kofi Annan qui était alors vice-secrétaire général de l'ONU a interdit aux forces de l'ONU d'intervenir pour protéger les victimes. +Qu'il ait ensuite pu être nommé secrétaire-général de l'ONU malgré un échec de cette ampleur reste un mystère. +Les questions que cela pose sur l'ONU et sur Kofi Annan lui-même sont confortées par le scandale en cours lié au programme Pétrole contre nourriture de l'ONU. +Même si à ce jour Kofi Annan n'a pas été impliqué directement, ses erreurs de gestion sont évidentes. +Le troisième scandale est peut-être le plus désespérant, car il touche le défaut structurel et permanent de justice et d'éthique a l'intérieur même des principaux organes de l'ONU, notamment la Commission des droits de l'homme. +Ces dictatures ennemies de la liberté se tiennent cois sur la torture, l'oppression et les massacres perpétrés par les autres dictatures, mais elles sont toujours prêtes à s'élever contre les démocraties, en particulier les Etats-Unis. +Après plus de trente ans passés à l'ONU, même Kofi Annan a fini par admettre du bout des lèvres que la Commission des droits de l'homme constitue une honte. +Est-il raisonnable de nommer un pyromane à la tête d'une caserne de pompiers ? +Evidemment pas. +Alors comment se fait-il que des tyrannies comme Cuba, la Chine, le Soudan ou le Zimbabwe soient membres de la Commission ? +La Libye, le Vietnam, le Congo et la Syrie ont récemment été admis en son sein et la Libye a même été élue à la présidence de la Commission. +Comment cela est-ce possible ? +Malheureusement, beaucoup de pays libres semblent totalement indifférents à la campagne orchestrée contre Israël. +Pour sortir de cette situation absurde, les démocraties doivent s'unir pour empêcher qu'un pays qui viole systématiquement les droits de l'homme puisse être membre de la Commission des droits de l'homme. +La démocratisation en cours dans des régions qui n'ont connu que la dictature fait pencher la balance en faveur d'au moins un organe de l'ONU qui incarnerait la liberté. +Qui doit décider si un pays est démocratique ? +Cette fonction pourrait revenir à Freedom House, un laboratoire d'idées indépendant et prestigieux dont le siège est à New-York, tout comme celui de l'ONU. +S'il y a une lecture à recommander à quiconque fait une déclaration publique sur les droits de l'homme, c'est bien celle-ci. +Les pays libres devraient se fixer pour objectif de permettre aux seuls pays libres de siéger au sein de la Commission des droits de l'homme. +Ceux qui sont arrivés au pouvoir par la fraude ou par la violence n'ont aucune légitimité et ne devraient plus jamais ternir l'image de l'ONU du fait de leur appartenance à la Commission. +Malheureusement, beaucoup de démocraties n'ont pas la volonté de modifier la composition de la Commission qui est une véritable perversion. +L'Union européenne qui représente 25 démocraties constitue souvent une incitation à la lutte pour la liberté dans des pays opprimés ; cela a été le cas en Ukraine et au Liban. +Mais il n'est pas dans les habitudes de l'UE de combattre les extrémistes au sein de l'ONU, elle fait plutôt d'étranges compromis avec eux. +En conséquence de quoi, les Etats voyous font quelques concessions aux Européens et à certains autres pays pour ensuite revendiquer une parité morale avec les démocraties. +Les peuples libres doivent se souvenir que le totalitarisme ne peut être vaincu en se montrant aimable et accommodant. +La Commission des droits de l'homme doit se débarrasser des ennemis de la liberté qui figurent parmi ses membres. +Sinon, l'unique organe de l'ONU dédié à la liberté ne sera plus qu'un instrument au service de la tyrannie. +La Chine doit aller plus loin que la simple médiation +Le désespoir est dangereux en diplomatie et les dernières actions de la Corée du nord désespèrent une grande partie de l'Asie. +Seule la Chine, longtemps peu encline à faire usage de ses dons diplomatiques, a maintenant le pouvoir de trouver une solution diplomatique au problème nucléaire de la Corée du nord. +Mais la question que tout le monde se pose, de Tokyo à Séoul en passant par Washington et Moscou, reste : la Chine interviendra-t-elle à temps ? +L'influence de la Chine sur la Corée du nord est unique. +La Chine permet à son voisin, toujours plus désespéré, de survivre en fournissant la plupart de l'aide autre que alimentaire et de l'énergie que la Corée du nord reçoit de l'étranger. +Pourtant, pour empêcher la Corée du nord de réaliser un fait accompli dans la poursuite de l'arme nucléaire, la Chine doit aller plus loin que la médiation entre la Corée du nord et les États-Unis, rôle qu'elle a joué jusqu'à présent. +Au lieu de cela, elle doit maintenant inciter la Corée du nord à arrêter le développement des ses activités nucléaires et de revenir aux négociations multilatérales avec les États-Unis, le Japon, la Chine, la Russie et la Corée du sud qui ont été interrompues ces dernières semaines. +Les développements récents indiquent que la menace nucléaire que représente la Corée du nord est toujours plus sérieuse chaque jour. +Il y a deux semaines, la Corée du nord a déclaré qu'en juin, elle avait réussi à traiter quelques 8 000 barres de combustible nucléaire et possède donc aujourd'hui la dissuasion nucléaire, qui laisse croire que le régime de Kim Jong Il est peut-être bien en train de construire des bombes nucléaires. +Non seulement la Corée du nord ne montre qu'un intérêt relatif à la tenue d'une autre session de négociations multilatérales que le gouvernement Bush et les autres participants appellent de leurs voeux, mais elle veut également empêcher maintenant la participation des japonais. +Kim Jong Il accuse le Japon d'avoir introduit des obstacles et des complications inutiles dans la résolution du problème nucléaire en soulevant la question sensible de la prise de citoyens japonais par la Corée du nord. +Pourtant, cela n'est rien d'autre qu'une diversion politique. +Il est inconcevable que des négociations multilatérales puissent résulter en un progrès quelconque vers une solution diplomatique tandis que la Corée du nord prend une part active dans la poursuite de son programme d'armement nucléaire. +Il doit être clair maintenant que Pyong Yang est déterminée à garder son programme d'armement nucléaire pour obtenir des États-Unis l'assurance crédible que son régime étrange et répressif sera autorisé à survivre. +À moins que les États-Unis ne réponde à la demande coréenne de signature d'un traité de non agression et de cessation des politiques « hostiles », le régime de Kim Jong Il conservera probablement son programme d'armement nucléaire comme la dissuasion la plus effective contre toute attaque préemptive des États-Unis, chose que le gouvernement Bush, en fait, refuse d'exclure. +La victoire militaire des États-Unis en Irak a probablement renforcé la volonté de la Corée du nord de s'appuyer sur l'option nucléaire comme moyen principal d'assurer la survie du régime. +Toutefois, cela ne devrait surprendre personne : le régime nord-coréen s'est toujours engagé à faire de son budget militaire la « priorité principale » de son budget national. +Ce qui forme un contraste étonnant avec les politiques de la Chine et du Vietnam, les deux autres puissances communistes d'Asie. +Dans ces deux pays, le gouvernement place le budget militaire à la dernière place dans ses stratégies de développement national. +Il serait difficile pour les États-Unis de modifier la priorité principale de leur propre stratégie de sécurité nationale : barrer la route au terrorisme et s'opposer à la diffusion des armes de destruction massive, particulièrement au moment où une nouvelle menace nucléaire surgit en Iran. +Tant que l'objectif d'empêcher la prolifération des armes nucléaires dans la péninsule coréenne est en cause, les États-Unis ont réussi en soutenant un ensemble de pouvoirs ad hoc jusqu'à présent avec la Chine, le Japon, la Russie et la Corée du sud. +En fait, dans leur première déclaration conjointe, la première de l'histoire, le premier ministre chinois Wen Jiabao, le premier ministre japonais Junichiro Koizumi et le président sud-coréen Roh Moo Hyun ont publié un appel en marge du sommet de l'ASEAN qui s'est tenu à Bali le 8 octobre pour une péninsule coréenne sans armes nucléaires. +Tous ont réalisé qu'un échec dans ce domaine résulterait probablement en une réaction nucléaire en chaîne avec le Japon, la Corée du sud et peut-être même Taiwan se lançant dans le développement de leur propre programme d'armement nucléaire. +Ce scénario représente le pire cauchemar de la Chine. +La question est donc de savoir ce que la Chine peut faire pour suspendre et si possible renverser le programme nucléaire de la Corée du nord. +La Chine se trouve dans une position délicate, tiraillée dans un sens par son désir d'éviter un effondrement précipité du régime nord-coréen, et dans un sens opposé par son besoin sans égal d'approfondir ses relations économiques avec les États-Unis, le Japon et la Corée du sud. +C'est pourquoi la Chine s'est opposée aux sanctions militaires ou économiques contre la Corée du nord lors de l'assemblée du conseil de sécurité des Nations unies, un pays pour lequel elle sacrifia près d'un million de soldats pendant la guerre de Corée de 1950-53. +C'est dans l'intérêt national vital de la Chine de stopper la Corée du nord dans sa quête pour devenir une nouvelle puissance nucléaire déclarée. +Un succès de la Chine dans ce domaine rehausserait son prestige international et contribuerait également à améliorer immensément la promotion de la stabilité de la région et la prospérité de toute l'Asie. +Le Retrait américain d'Asie +Le retrait prévu par les Etats-Unis des troupes américaines stationnées en Asie, que le Président George W. Bush a annoncé le 16 août, ne doit pas nuire à la paix et à la stabilité de la région en général et de la Corée en particulier. +Mais les consultations rapprochées des Etats-Unis avec ses alliés reste l'une des principales conditions à un redéploiement sans heurt des troupes américaines, ce qui n'a jamais été ben géré encore à ce jour. +L'opinion de la Corée du Sud et du Japon doit être prise en compte sérieusement si ce retrait maintenant inévitable doit se faire avec succès. +Par contre, l'annonce unilatérale du retrait des troupes - et la mise en œuvre unilatérale de ce retrait - pourrait bien faire du tort à la cause que le reste des troupes américaines en Asie est destiné à servir : représenter une force de dissuasion, la stabilité et empêcher la prolifération des armes nucléaires en Corée et en Asie. +Le retrait prévu provoque d'innombrables inquiétudes. +Au Japon, certains s'inquiètent de se voir mis sur la ligne de front du poste de commande américain en Asie, et probablement au-delà de la portée de son accord bilatéral de sécurité signé avec les Etats-Unis. +Il en résulte que la Chine n'est pas rassurée quant aux implications de tout développement du partenariat militaire américano-japonais. +Toutefois, l'impact des retraits prévus de troupes américaines se ressent âprement en Corée du Sud. +En juin, le gouvernement Bush a révélé ses projets de retrait pour quelque 12 500 des 37 000 soldats américains stationnés en Corée du Sud d'ici la fin de l'année 2005. +Cela comprend les 3 600 hommes de la 2ème Brigade de la 2ème Division d'infanterie, qui sont déjà affectés au redéploiement des troupes en Irak. +Le Département de la défense américain justifie ce changement comme faisant partie de ce qu'il appelle " la révision générale de ses positions " mise en place pour une plus grande flexibilité et mobilité du déploiement des troupes là où elles sont le plus urgemment nécessaires à travers le monde. +Mais la nature unilatérale de l'annonce, et le timing brusqué du plan, incite à l'inquiétude en Corée du Sud, et peut-être au Japon : ce retrait pourrait poser des risques sérieux pour le rôle essentiel que les forces américaines jouent dans la dissuasion pour empêcher un nouveau conflit en Corée. +Les Sud-coréens craignent véritablement que ce projet n'affaiblisse la dissuasion en envoyant comme message à la Corée du Nord - qui exige le retrait des troupes militaires américaines tout en refusant d'abandonner son arsenal nucléaire -- que l'intransigeance paie. +En effet, il ne faut pas oublier que la Corée du Nord entretient une armée de 1,1 million d'hommes. +De plus, la façon dont le gouvernement Bush a dévoilé ses projets de retrait a affaibli la crédibilité de l'alliance américano-sud-coréenne. +L'annonce unilatérale américaine a alimenté les rumeurs soutenant que le retrait à quelque chose à voir avec la marée montante de l'anti-américanisme en Corée du Sud, et plus particulièrement avec l'hésitation et les retards que le pays affiche dans le déploiement supplémentaire de 3 600 de ses propres soldats en Irak. +Le gouvernement Bush essaie de repousser ces accusations en expliquant que ce projet n'affaiblit pas les capacité de dissuasion des forces américaines puisque la présence navale et aérienne des forces américaines, bien plus puissantes, est maintenue dans la région. +De plus, les Etats-Unis prévoient de renforcer les forces sud-coréennes en leur fournissant de l'équipement électronique de pointe pour une valeur de quelque 11 milliards de dollars dans les cinq ans qui viennent. +D'un point de vue militaire, cet argument fait sens. +Politiquement et psychologiquement, cependant, la méthode, sans parler du timing et de la réalisation du retrait, soulève de nombreuses questions sur la viabilité à long terme de l'accord de sécurité américano-coréen, puisque l'alliance semble maintenant partir à la dérive, sans objectif commun et peu d'orientation de chaque côté. +Pourtant, le gouvernement Bush insiste : " les Etats-Unis considèrent la Corée du Sud comme un allié fort et stable. +Nous sommes totalement engagés dans le maintien de la sécurité de la Corée du Sud et dans notre alliance et partenariat avec Séoul. " +Si Washington s'exprime sérieusement avec ces mots, alors il faudra transformer cet engagement en alliance totale à long terme pour survivre à la marginalisation actuelle - et continue après la réunification avec la Corée du Nord - en faisant une déclaration conjointe avec le gouvernement coréen au plus haut niveau. +Pour dissiper les doutes et restaurer la confiance dans l'alliance, il faudra que les Etats-Unis et la Corée du Sud réaffirme leurs intérêts et valeurs communs dans la poursuite de la dissuasion, de la non prolifération des armes nucléaires, de la stabilité et de la démocratie dans la péninsule coréenne et en Asie. +Une fois la résolution prise de poursuivre l'alliance dans ce but, il devrait être possible pour les responsables officiels de travailler sur des principes directeurs pour une coopération concrète en matière de sécurité. +Des négociations spécifiques sur le retrait des troupes américaines de Corée ou leur redéploiement depuis la DMZ jusqu'au sud de Séoul devrait se faire selon ces principes. +Ce faisant, l'Amérique doit traiter la Corée du Sud comme un partenaire à part entière avec sa propre voix dans la prise de décisions qui affectent les intérêts de sa sécurité. +En qualité d'allié américain depuis 51 ans et de troisième plus grosse économie d'Asie de l'Est, la Corée du Sud a gagné le droit d'être consultée sur de telles décisions. +Malgré le sentiment anti-américain des Sud-Coréens, une majorité de la population du pays veut que les forces américaines restent en place comme force stabilisatrice. +Assurer que la péninsule coréenne se développe en toute sécurité et sans nucléaire, péninsule qui reste un lieu où les intérêts de la Chine, du Japon, de la Russie et de l'Amérique se croisent directement, est un des objectif de sécurité les plus importants de toute la planète. +C'est pour cette raison que l'Amérique et la Corée du Sud doivent rétablir une vision stratégique pour l'avenir. +L'UE doit entamer les négociations avec la Turquie +Une reconnaissance formelle par la Turquie de la République de Chypre, comprenant son extension à la partie nord de l'île, ne fait pas partie des conditions pour débuter les négociations. +Il s'agit là d'une question complexe liée aux efforts de négociation du secrétaire général de l'Onu Kofi Annan pour parvenir à un accord global qui mènera à la réunification de l'île.   +L'année dernière, la Turquie et la communauté chypriote turque ont accepté les propositions du secrétaire général, qui ont cependant été rejetées par les Grecs chypriotes. +Il y a toutes les raisons de penser qu'Annan reprendra bientôt ses bons offices et trouvera une solution positive au problème bien avant l'entrée possible de la Turquie dans l'UE, autour de 2015. +La question de Chypre ne devrait donc pas être interprétée comme un obstacle au début des négociations. +Cela vaut aussi pour l'intention prêtée à certains gouvernements de l'UE de voir le soi-disant concept de "partenariat privilégié" inclus de façon explicite dans le cadre de négociations en tant qu'alternative à une adhésion complète. +Cette proposition a été débattue et rejetée lors du Conseil européen de décembre dernier, et les conclusions du Conseil y font référence sous la mention "négociation ouverte."  Le choix des termes, jamais utilisés lors des élargissements précédents, a pu agacer la Turquie, mais il a finalement été accepté comme le genre d'ambiguïté constructive si souvent utilisée en diplomatie internationale. +Il est cependant évident, de par la nature même des négociations, que l'adhésion complète doit en être le but. +Sans cette perspective, aucun pays candidat ne s'infligerait la douloureuse procédure d'adoption des dizaines de milliers de lois et de règlements contenus dans l'Acquis Communautaire (ensemble des lois de l'UE). +Après tout, le but principal des négociations d'adhésion est de s'assurer que le candidat s'y plie. +En outre, il est difficile d'imaginer quels avantages pourraient être offerts à la Turquie dans le cadre d'un "partenariat privilégié" au-delà de son statut à long terme de Membre associé de l'UE. +L'union douanière conclue il y a dix ans permet le libre-échange de tous les produits hormis ceux de l'agriculture. +La Turquie est invitée à des réunions du Conseil, elle peut participer à divers programmes européens et à des manifestations de la Politique étrangère européenne commune, et, en tant que membre de l'Otan, c'est un partenaire de la coopération de sécurité entre l'Otan et l'UE. +Enfin, à l'instar de tous les pays candidats, la Turquie bénéficie d'une assistance financière et technique pour soutenir ses programmes de réforme actuels. +À part l'adhésion à part entière, la relation de la Turquie et de l'UE ne laisse plus beaucoup de place à une quelconque valeur ajoutée. +Le commissaire à l'élargissement Olli Rehn l'a énoncé avec la clarté qui s'impose : "Si, comme nous le devrions, nous nous tenons à ce que nous avons décidé au plus haut niveau politique au Conseil européen, je suis raisonnablement persuadé que les négociations débuteront le 3 octobre." +Cette déclaration est tout à l'honneur de la Commission européenne, et il n'y a pas grand-chose à y ajouter, sauf peut-être souligner qu'il revient aux gouvernements européens de traiter la Turquie avec l'équité que méritent tous les pays candidats. +Revenir sur des décisions formelles et sur des promesses, ou opposer des obstacles de dernière minute décrédibiliserait l'Union européenne. +Les négociations doivent par conséquent commencer le 3 octobre.   +L'Europe doit assumer ses responsabilités au Kosovo +Malheureusement, nous ne pouvons encore tourner la page de ce conflit pernicieux qui a conduit à tant de tragédies et qui est depuis bien trop longtemps une cause d'instabilité dans les Balkans. +Le problème ne va pas disparaître, car la Serbie persiste à rejeter la nouvelle réalité et fait tout ce quelle peut pour empêcher une normalisation. +Sur ordre du gouvernement serbe, les Serbes du Kosovo qui représentent 5% de la population refusent de coopérer avec le gouvernement du Kosovo et la mission de l'UE. +En faisant cela - c'est le paradoxe de l'histoire - ils freinent l'application rapide des nombreux droits que leur accorde le plan Ahtisaari afin de leur assurer une vie normale et la sécurité. +Avec le ferme soutien de la Russie, la Serbie essaye de bloquer l'entrée du Kosovo aux Nations unies, ainsi que son intégration aux autres organisations au niveau régional et mondial. +Il est difficile de comprendre l'objectif de la Serbie. +Personne ne nie que la perte d'une partie de son territoire est pour un pays quelque chose de douloureux, même s'il est peuplé très majoritairement d'un autre groupe ethnique. +L'histoire récente offre pourtant des exemples de séparation consensuelle. +Dans le cas du Kosovo, le comportement brutal du régime de Milosevic dans les années 1990 (répression, atteintes massives aux droits de l'homme et expulsion à grande échelle des Albanais du Kosovo) a poussé l'OTAN à intervenir, l'ONU à prendre la responsabilité de l'administration du pays et a rendu impensable un retour du régime serbe. +Les dirigeants démocrates de la Serbie d'aujourd'hui doivent comprendre que la perte du Kosovo - même si elle n'est pas de leur fait - est une réalité irréversible. +Avec leur politique de refus, la seule chose à laquelle ils peuvent aboutir est de retarder la stabilisation pourtant si nécessaire de la région après l'éclatement de la Yougoslavie et de rendre la vie difficile pour le Kosovo et sa population. +Ne serait-il pas plus sage de tendre la main à ce pays en train de naître, de transformer l'hostilité en amitié et d'assurer ainsi le maintien des Serbes au Kosovo ? +Le Kosovo est avant tout un problème européen et l'UE a la responsabilité première d'en faire un succès. +Malheureusement, l'incapacité de l'Union à s'accorder sur une politique commune non seulement affaiblit son rôle sur la scène internationale, mais constitue aussi un obstacle majeur à une action déterminée dans le pays lui-même. +Les cinq pays de l'UE qui ne reconnaissent toujours pas le Kosovo doivent réaliser que leur position encourage ceux qui rejettent toute forme de coopération avec la mission de l'UE et essayent de la gêner dans son travail. +Et pour les forces modérées de Serbie, il est de ce fait beaucoup plus difficile de s'adapter à la nouvelle situation. +Un seul élément pourrait à la longue amener la Serbie à infléchir son attitude : une position commune de l'UE et la prise de conscience par la population et le gouvernement serbe que l'entrée de leur pays dans l'UE est hors de question tant que le conflit n'est pas entièrement résolu. +Par ailleurs, le Kosovo a besoin d'une perspective européenne claire et d'une aide déterminée pour faire face à tous les problèmes auxquels il doit faire face. +Or pour l'instant, ces deux éléments font défaut. +Personne ne doit se méprendre sur le calme relatif qui règne actuellement au Kosovo. +Les récentes tragédies des Balkans montrent que les problèmes laissés en l'état se transforment tôt ou tard en conflit ouvert dont le prix est insupportable pour tous. +Le temps n'est plus à l'autosatisfaction. +Tous ceux qui se sentent concernés devraient porter attention aux paroles de Barack Obama lors de son discours inaugural : "L'époque de la passivité, de la protection d'intérêts particuliers et de la remise au lendemain des décisions déplaisantes, cette époque est définitivement terminée." Martti Ahtisaari, ancien président de Finlande, est prix Nobel de la paix 2008. +Olayide Akanni et Jamillah Mwanjisi +Cet état de fait empêche les personnes qui pensent être contaminées de se faire soigner. +Dans bon nombre de régions -- et tout particulièrement dans les zones rurales -- la croyance selon laquelle les tuberculeux ont été ensorcelés, empoisonnés, ou selon un médecin nigérian : « maudits par les dieux », persiste de nos jours. +Plus d'un demi million d'Africains et deux millions de personnes dans le monde meurent chaque année de la tuberculose, qui est la première cause infectieuse de décès chez les personnes touchées par le VIH/SIDA. +Et pour ne rien arranger, la résurgence déplorable de la tuberculose est alimentée par le VIH/SIDA. +Par exemple, le nombre de cas de tuberculose a été quasiment multiplié par six entre 1983 et 2003 en Tanzanie : il est passé de 12.000 à 64.500. +Le VIH/SIDA est à l'origine d'une augmentation annuelle de 6 % des cas de tuberculose au Nigeria, qui a désormais le plus fort taux de nouveaux cas déclarés en Afrique. +Et pourtant, la tuberculose est souvent vue comme un mal appartenant au passé. +La plupart des gens -- même les plus susceptibles d'être infectés, y compris ceux qui vivent avec le VIH/SIDA -- manquent d'informations précises sur les symptômes de la maladie ou sur les endroits où les traitements sont administrés. +Même si dans une grande partie de l'Afrique subsaharienne plus de la moitié des patients sont VIH positifs, la majorité des centres de dépistage du VIH/SIDA ne proposent pas de services de diagnostic et de thérapeutique de la tuberculose. +Il est alors bien plus difficile pour ces centres d'établir un diagnostic exact sur les patients atteints des deux maladies, car les tests actuels ne détectent pas la tuberculose active chez 60 à 80 % des porteurs du VIH/SIDA. +Les responsables politiques du monde entier ont pris une série d'engagements publics pour combattre le double impact mortel de la tuberculose et du VIH/SIDA. +Il y a un an à Maputo, au Mozambique, des ministres de la santé africains ont notamment déclaré la tuberculose « urgence régionale » et se sont associés dans le cadre d'un nouveau Plan mondial « Halte à la tuberculose », qui comporte des objectifs spécifiques et des lignes directrices pour lutter contre la co-infection. +Des mesures positives ont été entreprises. +La Tanzanie a mis à l'essai des programmes de proximité consistant à envoyer des travailleurs sanitaires chez les patients souffrant de tuberculose, afin de suivre l'observance du traitement et de proposer un soutien. +Néanmoins, ces efforts n'ont pas été entrepris à grande échelle et sont insuffisants pour enrayer la résurgence inquiétante de la tuberculose provoquée par le VIH/SIDA. +La volonté politique de mettre en œuvre les engagements pris par les gouvernements fait cruellement défaut. +Les actions menées contre la maladie continuent à manquer des ressources nécessaires pour traiter le nombre croissant de malades et, qui plus est, les travailleurs sanitaires sont à la fois débordés et sous-payés. En outre, le manque d'outils plus performants pour le diagnostic et la prise en charge des cas de co-infection tuberculose/VIH demeure un sérieux problème. +Pour Fatima et des milliers d'autres personnes comme elle, les déclarations du gouvernement ne prendront un sens que lorsqu'elles se traduiront par l'amélioration des services. +Ce qui nécessite un développement rapide des centres de dépistage et de traitement de la tuberculose, afin que les patients n'aient plus à choisir entre se faire soigner et s'occuper de leurs familles. +Cela implique également une coordination rigoureuse des programmes sur la tuberculose et sur le VIH, pour que ceux qui vivent avec les deux maladies puissent être traités au même endroit. +Enfin, il importe que les pays aisés prêtent leur concours à cette lutte et s'investissent dans la recherche et dans le développement en vue de rendre le traitement de la tuberculose véritablement efficace et accessible à tous. +La recrudescence des cas de la maladie est devenue une urgence sanitaire critique et nous ne pouvons plus nous permettre de rester léthargiques lorsqu'il s'agit d'y faire face. +Selon les termes de Stephen Lewis, envoyé spécial du Secrétaire des Nations Unies sur le VIH/SIDA en Afrique : « le VIH et la tuberculose agissent l'un sur l'autre de façon mortelle -- c'est une combinaison infernale ». +Les militants de la lutte contre le VIH/SIDA et les responsables politiques doivent concentrer davantage leur attention sur la tuberculose. +Fatima et ses semblables ne méritent pas moins. +La Turquie joue la carte de l'Europe +Élu avec une majorité parlementaire presque suffisamment importante pour pouvoir changer la constitution du pays, le nouveau gouvernement islamiste turc doit faire face à de terribles défis. +Le plus urgent étant la guerre qui couve entre l'Amérique et l'Irak. +La Turquie restera-t-elle l'alliée indispensable, diplomatique et logistique des États-Unis ? +Les solidarités religieuses vont-elles changer la position de la Turquie alors que le nouveau gouvernement rejoint d'autres pays musulmans dans leur opposition à toute invasion de l'Irak ? +Évidemment, les islamistes turcs ne sont pas les seuls à se poser de sérieuses questions à propos de la guerre. +Nombreux sont les Turcs qui partagent l'idée que la guerre pourrait avoir de dures conséquences pour leur pays, aussi bien à court terme qu'à long terme. +L'économie vacillante n'a pas besoin du bouleversement qu'apporterait un conflit militaire même s'il restait bref. +Les institutions turques (l'armée aussi bien que le corps diplomatique) s'inquiètent de la possibilité que cette guerre crée en Irak une fracture qui mènerait à un gouvernement kurde indépendant à la frontière sud de la Turquie, ce qui servirait sans aucun doute à renforcer le nationalisme kurde à l'intérieur de la Turquie et poserait de nouvelles menaces sur l'unité et la stabilité de la Turquie. +Les institutions bureaucratiques turques laïques sont pro-occidentales par tradition mais teintées d'une forte dose de nationalisme. +Mis à part la question kurde, leur attention se concentre aussi maintenant sur Chypre. +La question chypriote vient d'atteindre un tournant critique, suite à la proposition de paix mise en avant par le Secrétaire général des Nations unies, Kofi Annan, et son ultimatum de la fin février, qui approche rapidement. +Au même moment, les Chypriotes grecs se sont vu offrir leur billet d'entrée dans l'UE en dépit du fait qu'il n'existe encore aucun accord sur la question chypriote. +Chypre est donc devenue maintenant une question clé sur la route de l'admission de la Turquie au sein de l'UE. +Si elle reste sans solution, cette question fournira une raison solide d'empêcher l'entrée de la Turquie dans l'UE pour ceux qui s'opposent à son admission. +Cela constitue un autre piège potentiel pour le nouveau gouvernement. +En dépit de l'importance de Chypre, c'est l'éventualité de la guerre contre l'Irak qui représente la menace la plus sévère contre le fragile équilibre qui existe aujourd'hui entre la vieille garde conservatrice de la Turquie et le camp plus libéral des réformateurs au sein du Parti pour la justice et le développement au pouvoir. +Cela pourrait-il mener à de nouvelles luttes de pouvoir au sein du Parti ? +Le fait que l'élection à la chambre des députés puis au poste de Premier ministre du dirigeant du Parti, M. Erdogan, fut empêchée pour des questions de formalité rend le maintien de cet équilibre encore plus difficile. +Toute rupture affichée affaiblira le pouvoir des réformateurs qui veulent garder des liens serrés avec l'Ouest et les États-Unis. +Bien que le Parti pour la justice et le développement n'ait pris les rênes du pouvoir que depuis peu, il donne déjà des signes clairs quant à ses choix. +Très au fait des doutes de l'Ouest à propos de son Parti, dès son élection, M. Erdogan a immédiatement entrepris de se rendre dans les capitales occidentales pour défendre ses arguments : un changement à la tête du gouvernement ne signifie pas que l'orientation fondamentale de la Turquie ait changé. +Il est parfaitement conscient du contraste de cette approche en comparaison de celle du gouvernement turc islamiste précédent. +Élu en 1996, après une campagne marquée par de fortes revendications religieuses, M. Necmettin Erbakan du Parti du bien social avait mis un point d'honneur à effectuer ses premières visites officielles en Iran, en Libye, en Indonésie et en Malaisie. +M. Erdogan a mis de nouveau l'accent sur son orientation pro-occidentale très rapidement, quelques semaines plus tard, au sommet de l'UE sur l'élargissement, qui s'est tenu à Copenhague à la mi-décembre. +La campagne agressive du nouveau gouvernement avant le sommet fut perçue sur le plan intérieur comme sur le plan international comme le signe évident de son engagement envers la cause européenne. +Rejetant les accusations lancées précédemment par M. Erbakan selon qui l'UE ne serait qu'un « club de chrétiens », M. Erdogan a ouvertement fait campagne pour une adhésion totale. +Il a reçu en cela le soutien enthousiaste du gouvernement Bush qui espère que M. Erdogan ait réussi à trouver là le moyen d'associer démocratie et islam. +Jusqu'à présent, M. Erdogan a joué la carte européenne avec adresse, rassurant les alliés occidentaux de la Turquie et encadrant l'armée turque, qui reste sceptique quant aux intentions de son parti. +En acceptant de se plier aux exigences européennes de réforme démocratique comme préalable à l'adhésion à l'UE, M. Erdogan a joué un rôle libéral, renforçant son affirmation quant à la représentation de son parti : une authentique voie démocratique pour un pays à majorité islamiste. En fait, son parti représente la version islamiste des partis chrétiens démocrates qui ont longtemps dominé le paysage politique de la droite européenne. +Il est évident que le programme politique et économique de M. Erdogan et de son parti se distingue radicalement de l'islamisme turc traditionnel. +Les mouvements islamistes se sont généralement caractérisés par leur attitude fortement opposée au libre échange et à l'occident. +Pourtant, le premier ministre, M. Gul décrit habituellement son gouvernement comme étant « favorable au monde des affaires ». +Les mois qui viennent seront essentiels. +Pour convaincre les sceptiques, le parti devra rompre avec les politiques turques classiques à l'encontre de Chypre et avec les doutes islamistes habituels à l'encontre de l'Europe. +Pour couronner le tout, la Turquie doit parvenir à un accord avec son allié le plus proche, les États-Unis, s'il décide d'agir contre l'Irak. +L'ouverture insistante de M. Erdogan vers l'Europe pourrait être la solution clé. +En insistant sur son adhésion à l'UE, il renforce l'orientation européenne dont la Turquie fait preuve depuis longtemps. +Cela lui donnera peut-être l'occasion de se distancier de la politique américaine en quelque sorte. +Après tout, en devenant plus européenne, la Turquie n'est-elle pas autorisée aussi à partager les doutes que l'Europe entretient au sujet de la guerre contre l'Irak ? +L'Inde est sur une pente dangereuse +Comme les membres de ces bas-fonds sont imperméables au patriotisme et à la moralité, les terroristes peuvent facilement les recruter, particulièrement s'ils ont des raisons d'être aigris. +A Bombay, une grande partie d'entre eux sont des musulmans exclus de l'économie formelle qui ont développé un sens profond de leur intérêt propre au cours des 50 dernières années. +On ne connaît pas encore tous les détails sur les atrocités de Bombay où des terroristes ont tué une centaine de personnes. +On sait néanmoins qu'au moins 30 hommes armés de fusils d'assaut AK47 et de grenades ont pris en otage le centre financier et le centre d'affaires de l'Inde, ciblant tout à la fois Indiens et étrangers, notamment les Américains et les Britanniques. +Il est probable que cette opération a été mise au point au Pakistan par le Lashkar-e-Taiba, une organisation terroriste qui se nourrit de la haine de l'Inde laïque, qui est soutenue dans l'ombre par des agences pakistanaises et bénéficie d'un support populaire. +Sous la pression des événements, un élément essentiel nous échappe peut-être. +Cette opération a dû demander des mois de préparation : des armes lourdes ont été employées, une véritable petite armée a été mobilisée, des cibles ont été soigneusement choisies, des moyens de transport organisés et les points faibles identifiés. +Des centaines de personnes ont dû être impliquées dans ce plan, et malgré toutes ses infrastructures, le gouvernement indien n'a rien vu venir. +Le responsable des forces anti-terroristes indiennes, Hemant Karkare qui a été tué au cours des combats de la nuit, avait reçu des menaces de mort venant de la ville voisine de Pune, mais sa propre unité, surtout engagée dans les magouilles des responsables politiques, avait décidé de ne pas s'en préoccuper. +L'autosatisfaction et la politique ont mieux protégé les terroristes que n'auraient jamais pu le faire silence et le camouflage. +Mais cette opération terroriste représente bien plus qu'un échec de la police, elle symbolise l'effondrement de la gouvernance de l'Inde, elle est la conséquence de l'incompétence de l'administration et de l'incurie des politiciens. +L'Inde est un pays dur, autant ne pas se faire d'illusion à ce sujet. +Elle combat les terroristes musulmans au Cachemire, les terroristes Sikh au Punjab, les terroristes chrétiens au Nagaland et les terroristes hindous en Assam et à travers le pays, tout en sachant que l'on ne peut blâmer toute une communauté pour les mauvaises actions de quelques-uns. +Mais avec une gouvernance inefficace, notamment lors des trois dernières années, l'Inde risque de se transformer en un pays sans colonne vertébrale. +Au lieu d'être en tête dans la guerre contre le terrorisme, elle sombre dans le rôle de la victime perpétuelle. +Elle arrive en deuxième position derrière l'Irak en termes de nombre de victimes du terrorisme. +Il y a trois ans, le Premier ministre indien, Manmohan Singh, avait déclaré d'un ton suffisant au président Bush en visite à Delhi que les musulmans d'Inde n'étaient aucunement impliqués dans le terrorisme. +Il sous-entendait ainsi qu'ils étaient parfaitement intégrés dans la société indienne et qu'ils bénéficiaient de tous les avantages de la démocratie, une conclusion que Bush s'est empressé de reprendre. +Mais les terroristes ne se sont pas laissés prendre à ses mots et ils y ont peut-être même trouvé incitation à agir. +Je suis Indien et musulman et fier de l'être. +Comme n'importe quel Indien aujourd'hui, je suis en colère, frustré et déprimé. +J'en veux aux chiens de guerre égarés qui ont envahi Bombay. +Je suis affligé par l'impuissance de mon gouvernement à Bombay et à Delhi et par sa surdité face à l'anxiété de mes compatriotes. +Je suis atterré par le dommage fait à l'image de l'Inde dans le monde. +L'arche de Putin +Je me suis derničrement rendu ŕ Moscou aprčs cinq années d'absence. +La ville, qui m'a semblé différente et étrange, m'a impressionné par son aptitude au changement. +Mes journées en Russie se sont partagées entre des réunions officielles, des heures perdues dans les embouteillages et des nuits passées avec de vieux amis qui ont essayé de me montrer le meilleur de la vie nocturne de Moscou. +Lors de ma premičre soirée libre, j'ai été invité ŕ un endroit appelé Shinok. +Le restaurant possédait nombre des caractéristiques propres aux restaurants ethniques de n'importe quel pays. +Le kitsch, cette fois-ci ukrainien, était richement représenté par divers objets. +Mais la décoration intérieure se résumait ŕ un seul ornement, un mur artificiel ŕ fenętres qui séparait une partie de l'entrée du restaurant. +Derričre ce mur se trouvait un décor de cour de village. +Une véritable vache ainsi que de véritables poulets et oies peuplaient cet ersatz de cour de ferme. +Par moments, une vieille femme en habit traditionnel apparaissait pour nourrir les animaux. +Les visiteurs dégustant le borscht et les pirogi observaient ses efforts avec satisfaction. +« Elle travaille pour le restaurant, m'a expliqué un ami. +Elle nourrit les animaux et s'assoit dans la cour pour créer l'ambiance rustique. » +Shinok n'était qu'une initiation ŕ la nouvelle vague actuelle de la culture de restaurant ŕ Moscou. +Quelques jours aprčs, j'ai visité The White Sun of the Desert, un autre lieu ethnique. +Le White Sun existait déjŕ dans l'Empire Soviétique. +A cette époque, il s'appelait l'Uzbekistan et n'était rien d'autre qu'une démonstration culinaire obligatoire de l'union soi-disant sacrée entre les quinze républiques fraternelles de l'URSS. +Bien que l'intérieur du restaurant ait complčtement changé depuis lors, ses thčmes décoratifs sont restés les męmes. +De nos jours, toutefois, l'établissement tire son nom d'un western (ou « eastern ») bortsch soviétique populaire filmé en 1969 et dont l'action se déroule en Asie Centrale lors de la Guerre civile de 1919. +Le restaurant est décoré non seulement avec des tapis orientaux, mais également avec des représentations grandeur nature des héros du film tirant avec des mitrailleuses ou assis sur des caisses de dynamite. +Cet « orientalisme » soviétique est renforcé par de jolies serveuses qui portent des tenues sexy davantage inspirées des Mille et Une Nuits que de n'importe quelle réalité d'Asie Centrale, passée ou présente. +Mais le passé soviétique, et non les motifs ethniques, domine de loin la conception du restaurant moscovite contemporain. +Le restaurant club Major Pronin est commodément situé dans le voisinage du quartier général du KGB-FSB. +Il tire son nom du héros des romans d'espionnage médiocres de l'čre soviétique, un personnage qui était également la cible de plusieurs plaisanteries sous le manteau. +L'intérieur du restaurant est décoré avec divers objets du matériel d'espionnage. +Mais le clou du décor est le stand de tir oů les clients peuvent tester leur adresse entre les plats. +Les cibles représentant des tueurs en série et des trafiquants de drogue comportent des devises telles que « Sauvez une femme » ou « Sauvez un jeune garçon ». +La partie centrale du mur accueille une cible représentant le World Trade Center de New York duquel s'approche un avion, avec l'inscription « Sauvez l'Amérique ». +Un nouveau club appelé Zone (camp de concentration en argot russe) vise ŕ reproduire la vie dans un goulag. +Des bergers allemands aboyants, des gardes sévčres et des serveurs portant des uniformes de détenus travaillent beaucoup pour recréer l'atmosphčre sinistre d'un goulag. +La littérature russe n'est pas oubliée. +Si le restaurant Pushkin sur Tverskoy Boulevard non loin du monument dédié au grand počte russe vise ŕ recréer « l'atmosphčre aristocratique » du début du dix-neuvičme sičcle, le bar-restaurant Gogol sur Stoleshnikov Lane tente de recréer une institution soviétique disparue appelée « rumochnaia ». +Une « rumka » est un verre de vodka qui ressuscite les prolétariens épuisés. +Bien entendu, la rumochnaia n'a rien en commun avec Nikolai Gogol, mais l'établissement qui a reçu le nom du célčbre écrivain comporte une patinoire qu'un homme habillé comme Gogol fréquente quotidiennement. +A mon retour ŕ Washington, je suis allé dîner avec un politicien américain qui revenait juste d'un voyage ŕ Saint-Pétersbourg. +Pour lui faire honneur, ses hôtes russes avaient organisé une excursion ŕ Strelna, le « Versailles russe », qui avait été récemment restauré alors qu'il menaçait ruine, pour devenir la résidence pétersbourgeoise du président Vladimir Putin. +Le palais n'a pas impressionné l'Américain. +La quantité de marbre utilisé pour la rénovation lui a paru excessive et son appréciation du luxe semblait correspondre aux critčres d'un Holiday Inn. +Les hôtes russes enthousiasmés de l'Américain lui demandaient constamment son opinion sur le palais. +Tout au long de la visite, l'Américain leur a répondu par des exclamations polies en employant des adjectifs tels que « exquis » ou « saisissant ». +Puis ils sont montés dans le grenier. +Enfin, l'Américain a fait preuve d'enthousiasme. +Le grenier de la résidence présidentielle s'apparentait au ventre d'un bateau du dix-septičme sičcle. +« La derničre fois que j'ai vu quelque chose de semblable, c'était dans une brasserie ŕ Hambourg dans les années 1960 », m'a avoué le politicien. +Quelle perfection, pensais-je, tout en imaginant le président de la Russie monter les escaliers menant au grenier de son palais pour endosser le rôle de Pierre le Grand. +Tout comme les clients de ce restaurant village ŕ l'ukrainienne, peut-ętre Putin trouvait-il son arche-grenier rassurante dans un coin de son inconscient. +Une vague historique dépassant son contrôle avait arraché l'ancien lieutenant colonel du KGB de l'ombre pour le hisser au faîte du pouvoir. +Mais le destin pouvait également l'emporter au loin tout aussi soudainement. +Quoi de mieux que d'avoir une arche ŕ portée de main si un jour, la chance politique tourne ? +Veuillez cliquer sur ce lien pour obtenir des photos grandeur nature : +Rushdie à la russe +Juin sera un mois douloureux dans les tribunaux russes. +Le 16 juin, l'oligarche rebelle Mikhail Khodorkovsky et son compagnon d'armes Platon Lebedev se sont finalement retrouvés confrontés aux juges du tribunal d'instance de Meshchansky. +Il ne fait aucun doute que cette affaire attirera la presse russe et internationale. +Les auditions ont commencé la veille de l'ouverture du procès de Khodorkovsky dans une autre affaire qui n'en est pas moins significative. +Mais cette affaire ne concerne pas la tentative des oligarches à interférer dans la vie politique ; elle concerne un groupe d'artistes et de conservateurs dont les activités professionnelles sont devenues, contre toute attente, une question brûlante de politique. +En janvier 2003, une bande d'activistes orthodoxes russes a détruit une exposition au Musée et au Centre public Sakharov intitulée " Attention ! +Religion ". +Les organisateurs de cette exposition ont déclaré qu'ils souhaitaient attirer l'attention sur le nouveau rôle des institutions religieuses dans la vie russe. +Mais les fondamentalistes orthodoxes ont jugé les oeuvres blasphématoires et offensantes, et certains ont saccagé l'exposition. +En décembre dernier, des procureurs ont inculpé deux représentants du Musée Sakharov et trois organisateurs de l'exposition pour incitation à la haine religieuse. +Ils risquent désormais jusqu'à cinq ans de prison. +Les vandales, entre-temps, ont été acclamés par les représentants de l'Eglise comme des héros. +Toutes les accusations contre eux ont été abandonnées. +Les vandales possédaient des protecteurs influents. +Tous étaient membres de la congrégation de St. Nicholas à Pyzhi, dont l'archiprêtre, Alexander Shargunov, est un fondamentaliste radical bien connu. +En 1997, il a fondé un mouvement appelé Social Committee For the Moral Revival of the Fatherland (Comité social pour le renouveau moral de la mère-patrie). +En 2001, le site Web du Comité indiquait comment saccager des panneaux d'affichage " immoraux " en les éclaboussant de peinture. +Des disciples ont aussitôt détruit 150 panneaux d'affichage à Moscou. +Un groupe d'intellectuels nationalistes célèbres, notamment le metteur en scène Nikita Mikhalkov, l'artiste Ilya Glazunov et les écrivains Valentin Rasputin et Vasily Belov, sont intervenus avec une pétition désignant l'exposition comme " une nouvelle étape d'un satanisme conscient ". +Ils ont écrit que les ennemis de la Russie avaient pour objectif d'humilier " le peuple russe [désarmé], leurs objets de culte et leurs valeurs historiques ". +Qui, précisément, étaient ces puissants ennemis ? +Les intellectuels ne les ont pas nommés, mais le parti politique fasciste Pamyat (Memory) n'a pas eu les mêmes hésitations. +L'appel publié sur son site Web demandait aux Chrétiens orthodoxes de protéger " notre Seigneur Jésus-Christ " des " youpins dégénérés ", utilisant le terme russe le plus péjoratif pour désigner les Juifs. +Ces événements alarmants dans le monde de l'art se sont produits dans un contexte de nationalisme et d'arrogance orthodoxe montants en Russie. +L'Eglise orthodoxe a acquis une énorme influence politique au cours des dernières années et peu de politiciens prennent le risque de l'offenser. +L'exposition du Musée Sakharov a été l'objet d'une campagne médiatique injurieuse et l'affaire a été reprise quasiment immédiatement par la Douma, où des députés nationalistes ont rivalisé entre eux pour dénoncer les artistes et louer les vandales. +En février 2003, la Douma a promulgué un arrêté stipulant que l'objectif de l'exposition du musée Sakharov était d'inciter à la haine religieuse et d'insulter les croyants et l'Eglise orthodoxe. +Le procureur d'Etat a reçu l'ordre d'agir contre les organisateurs, 265 députés sur 267 approuvant la mesure. +En avril 2003, la Douma a voté pour renforcer la loi contre l'incitation à la haine religieuse en ajoutant des peines de prison allant jusqu'à cinq ans pour les coupables. +En décembre 2003, le directeur du Musée Sakharov Yuri Samodurov a été inculpé d'actions " menant à la provocation de la haine et de l'inimitié ". +S'il est jugé coupable, il pourrait être condamné à cinq ans de prison maximum. +Les représentants de l'Eglise ne demandent pas une peine aussi sévère. +En mars 2004, le Département des relations extérieures du patriarcat de Moscou a émis un communiqué qui s'est révélé une surprise pour tous. +Il affirmait en effet que les organisateurs de l'exposition du Musée Sakharov avaient commis une infraction administrative plutôt que criminelle. +La différence est que les infractions administratives sont passibles d'amendes, au plus, et non de peines de prison. +Un tel adoucissement de la position de l'Eglise résulte probablement du tollé général dans la presse libérale russe. +Toutefois, le pogrom au Musée Sakharov a provoqué une cascade d'attaques similaires sur des oeuvres d'art contemporain par des fondamentalistes orthodoxes que l'Eglise s'est révélée incapable à contrôler. +Anna Alchuk, une artiste qui a participé à l'exposition au Centre Sakaharov et qui a été inculpée par la suite, a affirmé qu'elle avait lu les 14 volumes de preuves recueillies par le procureur et que 11 volumes consistaient uniquement en des lettres émanant de " travailleurs " exprimant leur indignation face à l'exposition et exigeant que les artistes soient punis. +Quasiment aucun des auteurs de ces lettres n'avaient vu l'exposition, la majorité ayant signé des lettres circulaires. " +Les événements entourant l'exposition discréditent l'Eglise orthodoxe russe, tout comme la fatwah condamnant Salman Rushdie à mort a discrédité l'Islam ", a déclaré Elena Bonner, la veuve d'Andrei Sakharov. +Le jugement qui sera rendu suite aux auditions du tribunal est difficile à prédire, mais il déterminera si les Russes ont perdu leur libre expression artistique de la liberté, qu'ils ont gagnée après la chute du communisme. +La désillusion, avec une " démocratie à la Boris Yeltsin ", a poussé le président Vladimir Putin à rechercher une idéologie basée sur le nationalisme et la glorification de l'Etat. +Putin appelle cette idéologie du " pluralisme géré ". +Comme nous pouvons le voir aujourd'hui, le Social Committee For the Moral Revival of the Fatherland souhaite faire partie des dirigeants. +La mondialisation de la science +Par exemple, nous savons qu'une personne qui fume deux paquets de cigarettes par jour risque d'avoir de sérieux problèmes de cancer une quarantaine d'années plus tard. +La science prévoit aussi que, à moins de réduire conséquemment la consommation de pétrole et de charbon, le climat va continuer à se réchauffer, en augmentant le volume des océans et en faisant fondre de gigantesques morceaux de glace dans l'Arctique et l'Antarctique, ce qui entraînera de désastreuses élévations du niveau de la mer. +Ce ne sont là que deux exemples parmi les milliers de sujets sur lesquels il est intéressant que les politiciens consultent les scientifiques. +Pourtant, les connaissances scientifiques sont bien trop souvent négligées lorsqu'il s'agit d'enjeux importants. +Cela ne veut pas dire que les scientifiques devraient dominer le débat politique. +C'est aux politiciens, non aux scientifiques, qu'il appartient d'évaluer les avantages et les défauts relatifs des choix qu se présentent à eux, puis d'adapter leurs conclusions en conséquence. +Toutefois, ces conclusions risquent d'être bien mauvaises sans une participation scientifique efficace. +Par exemple, le gouvernement des États-Unis a à son service un organisme baptisé National Academies ("Académies nationales"), formé par trois organisations composées des plus éminents scientifiques, ingénieurs et professionnels de santé du pays (respectivement : la National Academy of Sciences, la National Academy of Engineering, l'Institute of Medicine). +Cet organisme indépendant et non gouvernemental produit chaque année plus de 200 rapports, la plupart en réponse à des demandes spécifiques du gouvernement américain. +Ces demandes vont des questions sur les risques pour la santé que posent les traces d'arsenic retrouvées dans l'eau potable à des questions sur la meilleure manière d'aider la recherche scientifique sous ses diverses formes. +À travers une procédure rigoureuse, les "Academies" insistent sur le fait que chaque rapport se limite à ce que la science peut dire sur le sujet, en se basant sur des preuves et sur la logique, sans anticiper les décisions devant être prises par d'autres. +Ainsi, par exemple, le rapport sur l'eau potable prévoyait la fréquence des cancers de la vessie qui finiraient par toucher des populations exposées à des taux d'arsenic de 5, 10 ou 20 parts par milliard. +Mais il n'indiquait pas au gouvernement la concentration maximum d'arsenic à autoriser. +Les textes complets des quelque 3 000 rapports des "Academies" sont accessibles (sur www.nap.edu) et téléchargeables gratuitement dans 146 pays. Les dangers de l'arsenic sont les mêmes dans le monde entier et le rapport américain peut donc être utile dans tous les pays. +Il existe toutefois d'autres sujets importants relevant de la science qui devraient être étudiés par des organismes internationaux afin d'être traités à grande échelle. +C'est pour cela qu'a été fondé, à Amsterdam en 2000, l'InterAcademy Council (IAC) par une organisation internationale d'académies scientifiques baptisée InterAcademy Panel (IAP). +L'IAC est dirigé par un conseil comprenant un groupe tournant de 15 présidents d'académies du monde entier, représentant des nations de niveaux économiques différents. Ses rapports présentent une perspective véritablement internationale, soutenue par les meilleurs scientifiques et ingénieurs du monde. +L'IAC prodigue des conseils sur des sujets avancés par les Nations Unies et d'autres organismes internationaux, qui sont tous disponibles gratuitement sur www.interacademycouncil.net. +Le premier rapport de l'IAC était intitulé Inventing a Better Future: A Strategy for Building Worldwide Capacities in Science and Technology ("Inventer un avenir meilleur : stratégie pour renforcer les capacités mondiales en matière de science et de technologie") . Il démontrait de manière convaincante l'importance de soutenir, dans tous les pays, les institutions scientifiques et technologiques qui s'occupent d'exploiter les connaissances scientifiques et techniques internationales afin de répondre aux besoin de leur nation. +Inventing a Better Future expliquait aussi de manière détaillée aux gouvernements et aux organismes internationaux comment mettre en place les institutions scientifiques et technologiques nécessaires aussi bien dans les pays en développement que dans les pays industrialisés. +Le dernier rapport de l'IAC, intitulé Lighting the Way: Toward a Sustainable Energy Future ("Éclairer la voie : vers un avenir aux énergies renouvelables"), présente un calendrier ambitieux et scientifique destiné à répondre à l'important problème des besoins énergétiques du monde. +Chaque rapport de l'IAC est lu attentivement par un public de choix : les 100 académies scientifiques appartenant à l'IAP. Chacune a en effet la responsabilité spéciale de transmettre les recommandations du rapport dans son propre pays, ce qui peut considérablement accroître l'efficacité de l'académie à influer sur les politiques nationales. +L'alliance de l'IAP et de l'IAC est une nouveauté importante en matière de recommandations scientifiques internationales -- une nouveauté qui commence à peine à montrer son efficacité potentielle à diffuser les bienfaits de la science et de la technologie dans le monde entier. +• Seuls les fonctionnaires ainsi que quelques dirigeants du secteur privé jouissent d'une retraite, alors que rien n'est prévu pour les pauvres dans les zones rurales. +• L'enseignement universitaire gratuit constitue une forme de redistribution de l'argent des pauvres vers les riches, car les pauvres paient des impôts qui servent à l'université mais ils y accèdent rarement. +• Les dépenses consacrées à l'enseignement primaire finissent souvent dans l'escarcelle des syndicats d'enseignants, servant à perpétuer les privilèges de leurs membres. +• Les dépenses de santé sont consacrées le plus souvent à des hôpitaux situés dans des zones urbaines relativement prospères et politiquement importantes. +• La gratuité de l'eau et de l'électricité constitue surtout une subvention en faveur des classes moyennes urbaines et des paysans aisés. +L'équilibre reste à trouver pour une Constitution européenne +Romano Prodi, le président de la Commission européenne, a proposé un plan de renforcement de l'exécutif de l'Union. +La Grande-Bretagne, la France et l'Espagne travaillent actuellement à un plan d'opposition qui vise à la consolidation du pouvoir exécutif de l'UE au sein des principaux États de l'UE. +Que doit en penser le citoyen européen ordinaire ? +Les citoyens européens comprennent difficilement les enjeux au coeur de la Convention constitutionnelle de Bruxelles. +De nombreux détails viennent obscurcir la question et les discussions nationales stériles et fallacieuses qui opposent les « Eurosceptiques » aux « Europhiles » créent une certaine agitation, mais ne clarifient rien. +La question semble si compliquée que déjà journaux et télévisions ne mentionnent plus les travaux de la Convention. +Les citoyens européens ne peuvent appréhender clairement les enjeux de la Convention qu'en s'interrogeant sur le partage des fonctions gouvernementales entre l'UE et ses États membres. +Pour répondre à cette question, il faut comprendre la mission fondamentale d'un gouvernement. +Un gouvernement est avant tout censé garantir à ses citoyens un service public : biens collectifs, législation et réglementation, application et sanctions. +Ces services peuvent être dispensés à différents niveaux de gestion: local, régional, national ou supranational, à savoir l'Union européenne. +Mais quel est aujourd'hui le niveau approprié ? +Dans certains domaines, la décentralisation fonctionne car elle reconnaît les préférences des diverses communautés locales ou nationales. +Toutefois, les décisions locales, dans notre monde interdépendant, ont tendance à avoir un impact sur les citoyens des autres communautés et des autres pays. +Certains services doivent ainsi être alloués à une unité géographique plus vaste. +Les décisions de l'Europe sur le mode d'assignation des prérogatives de gestion à différents niveaux doivent être basées sur le principe suivant : les institutions européennes doivent être seules responsables des activités qui comportent des économies d'échelle ou des coûts sociaux (à savoir, l'interdépendance des effets) et de celles où les différences d'opinion parmi les membres sont minimes. +D'autres fonctions - qui comportent de faibles coûts sociaux et où les différences sont élevées - doivent être laissées aux pouvoirs nationaux ou locaux. +Les raisons sont évidentes : de faibles interdépendances impliquent que les avantages dérivés de la centralisation seront limités ; des divergences élevées impliquent des coûts élevés d'harmonisation. +La lire ne peut plus être dévaluée pour favoriser les exportations italiennes au détriment des exportations françaises, provocant alors une réaction française, etc. +Toutefois, en matière de politique éducative, imposer le même système d'éducation publique à tous les membres ne créera aucune économie d'échelle. +Parmi les domaines de la politique publique qui comportent des économies d'échelle élevées ou des coûts sociaux, deux domaines ressortent : le marché commun et la concurrence ; la politique étrangère et la défense. +Le premier couvre la loi antitrust, le commerce et la devise commune. +Selon certains, les politiques fiscales - de la structure de l'impôt à l'aide sociale, aux disponibilités budgétaires - doivent également être harmonisées. +Mais si elles sont imposées sans discernement, elles iront à l'encontre des diverses préférences nationales et risquent d'inciter à la résistance. +D'un point de vue constitutionnel, les politiques fiscales n'ont aucune réelle raison d'être . +La constitution américaine, par exemple, ne préconise pas l'équilibre des États fédérés. +Ce n'est que dans des circonstances exceptionnelles qu'une harmonisation fiscale peut être justifiée : des interdictions, par exemple, sur des avantages fiscaux utilisés pour limiter la concurrence ou le commerce international, ou des interdictions sur la restriction des mouvements de capitaux. +Ce serait absurde qu'en Amérique, New York mette en oeuvre une politique étrangère différente de celle du Texas. +Il en va de même en Europe. +L'adhésion de nouveaux membres à l'Union implique que des différences encore plus prononcées se produiront, ce qui signifie que les politiques centralisées sont plus difficilement justifiables. +Ces considérations suggèrent une série de principes aux membres de la Convention : +1. +La constitution européenne doit établir clairement les prérogatives de l'Europe et celles des pays membres. +En cas de doute, le principe de subsidiarité suggère que les États nationaux demeurent l'autorité suprême ; +2. +Les institutions européennes doivent garantir le fonctionnement des marchés, y compris la concurrence et les politiques commerciales et monétaires ; +3. +Les activités fiscales doivent pour la plupart demeurer décentralisées, sauf rares exceptions ; +4. +La politique extérieure et la défense sont des domaines relevant de la compétence fédérale et doivent être déléguées à l'Europe au moment opportun et de manière appropriée ; +5. +La création de nouveaux domaines de compétence fédérale doit être accompagnée de mécanismes de prise de décision réels dans des démocraties véritablement représentatives. +Ainsi il ne peut y avoir « de centralisation sans représentation ». +A. Alesina, I. Angeloni & L.Schuknecht, CEPR Discussion Paper no. 3115 +L'Europe se trouve face à une chance historique. +Les pères fondateurs de la constitution américaine ont rédigé un document qui, dans sa structure essentielle, a duré plus de 200 ans. +La tâche à laquelle les membres de la Convention européenne sont confrontés diffère sous plusieurs aspects et se révèle bien plus complexe. +Espérons qu'ils possèdent la même sagesse et la même clairvoyance. +Les premiers - avec en tête le Brésil, suivi par l'Argentine et le Vénézuéla - veulent construire une Communauté des Nations d'Amérique du Sud. +Les pays du Mercosur - le Brésil et l'Argentine, ainsi que le Paraguay et l'Uruguay - veulent défendre leurs intérêts nationaux respectifs et aller vers un ordre international plus juste et plus démocratique, mais ils ne cherchent pas une confrontation avec qui que ce soit. +Les seconds - les pays qui ont une relation privilégiés avec Washington - comportent deux groupes : ceux qui agissent isolément comme la Colombie, l'Equateur et le Pérou, et ceux qui agissent dans une perspective régionale, essentiellement les pays d'Amérique centrale ainsi que la République dominicaine. +Mais ils sont tous dans la ligne politique initiée par le Mexique et à un moindre degré, par le Chili. +Mais c'est le paysage idéologique de la région qui offre les contrastes les plus marqués. +Si la confrontation entre le Vénézuéla et les USA s'aggravait et si le Front sandiniste de libération nationale remportait une victoire électorale au Nicaragua, l'onde de choc pourrait affecter politiquement toute la région. +Le gouvernement Bush pourrait considérer la formation possible d'un triangle formé par Cuba, le Vénézuéla et le Nicaragua comme une menace directe vis-à-vis de la stabilité régionale, et placer l'Amérique latine dangereusement en tête de son agenda sécuritaire. +L'avenir du pétrole irakien +Depuis quelques mois, la production pétrolière de l'Irak dépasse les deux millions de barils par jour, nettement au-delà des prévisions (de même que les exportations). +Pourtant, les experts prédisaient que l'insuffisance du financement, l'absence de sécurité, les problèmes liés à la mise en place d'un gouvernement légitime et la dégradation des installations limiteraient fortement la production pétrolière irakienne. +Malgré ces difficultés, depuis l'invasion elle a atteint en mars le niveau record de 2,5 millions de barils par jour. +Plusieurs éléments ont concouru à cela. +Le plus important est sans doute l'enveloppe de 2,3 milliards de dollars que le gouvernement Bush a versé à l'Irak pour l'aider à restaurer sa production pétrolière. +Au lendemain de l'invasion, personne ne s'attendait à ce que l'Irak obtienne des prêts, et encore moins des subventions. +Pourtant, 2,3 milliards de dollars ont été investis directement dans l'industrie pétrolière irakienne. +Pour protéger les champs de pétrole et diverses installations, les Américains ont envoyé massivement des troupes et engagé des sociétés militaires privées. +C'est un niveau de protection sans précédent, même comparé au régime de Saddam. + +Le gouvernement Bush a fait appel aux meilleures sociétés de service pour la remise en état des champs pétroliers, qui sont parmi les plus riches du monde et permettent d'extraire le pétrole sans trop d'effort ni d'investissement. +En fin de compte, l'évolution des cours du pétrole durant les 12 derniers mois a été une chance inespérée pour le budget irakien qui a pu ainsi financer d'autres secteurs sans léser l'industrie pétrolière. +C'est également ce qui a permis à l'Autorité provisoire de la coalition d'augmenter la participation des sociétés militaires privées pour protéger les raffineries et les pipelines. +L'apport de fonds à l'Irak pour redresser son industrie pétrolière a été l'une des meilleures décisions d'après-guerre du gouvernement Bush. +C'est ainsi que l'Irak a pu commencer à traiter les questions de sécurité, de production et les problèmes techniques du secteur pétrolier. +Mais une question reste posée : l'augmentation de la production pétrolière va-t-elle se poursuivre maintenant, après le transfert du pouvoir à un gouvernement irakien ? +Depuis l'invasion, malgré un apport massif de fonds et un niveau de sécurité sans précédent, les rebelles ont plusieurs fois réussi à stopper ou à limiter la production pétrolière et les exportations. +Les attentats contre les pipelines et les autres infrastructures pétrolières sont quasi quotidiens et jusqu'à présent le transfert du pouvoir n'a pas permis de réduire leur nombre. +Le nouveau gouvernement irakien, même avec l'appui de la puissance militaire américaine, ne pourra pas garantir un niveau de production donné, et celui-ci restera difficilement prévisible. +Il est cependant essentiel de continuer à soutenir financièrement le secteur pétrolier irakien, non seulement pour assurer sa croissance, mais sa simple survie. +L'argent permet une remise à niveau de la technologie et apporte la sécurité. +Même sous les auspices les plus favorables et un prix du baril élevé, les fonds disponibles pour maintenir et moderniser l'industrie pétrolière vont rester limités. +Si le prix du baril baisse, l'industrie pétrolière va subir le choc de plein fouet. +Cette situation met l'Arabie saoudite en position d'intervenir sur la situation de l'Irak. +Seule l'Arabie saoudite pèse suffisamment sur la production mondiale de pétrole pour laisser de la place si elle le veut à l'Irak et maintenir les cours à un niveau élevé. +Mais elle peut aussi inonder le marché et provoquer une chute des cours. +Une diminution des revenus pétroliers pourrait être désastreuse pour un gouvernement irakien qui n'en est qu'à ses débuts. +Les revenus actuels, à peine suffisants pour couvrir les dépenses de l'Etat, ne permettront pas de financer la reconstruction, le remboursement de la dette et le payement des dommages de guerre. +Même en cas de réélection du président Bush, il est improbable que les USA continuent à verser des fonds à un Irak devenu souverain. +Théoriquement, ce financement pourrait être remplacé par des prêts internationaux. Mais un gouvernement instable, et qui plus est un gouvernement dont la légitimité n'est pas entièrement établie, pourra-t-il trouver un bailleur de fonds ? +Or une privatisation est également exclue pour l'instant. +Le nouveau gouvernement sera confronté à cette situation et devra prévoir du temps pour redresser son industrie pétrolière, à l'image de ce qu'avait fait le régime de Saddam. +Néanmoins, la logique d'un soutien renouvelé de l'Amérique à l'industrie pétrolière irakienne reste très présente. +Mais un financement de type habituel n'est probablement pas imminent. +Seule une injection de capitaux américains permettrait de réduire l'imprévisibilité de la production pétrolière. +Depuis 1973, chaque pic du prix du baril a été lié à un événement concernant l'Irak. +Le régime de Saddam a été la cause principale de la volatilité des cours du pétrole lors des 30 dernières années. +On aurait pu espérer que sa disparition diminuerait la volatilité du marché et stabiliserait les prix. +Malheureusement, à cause d'une production erratique, l'Irak continuera sans doute à être une cause majeure de la cherté du pétrole. +Dans l'avenir prévisible, la grande volatilité du marché pétrolier et un prix élevé du baril resteront comme l'une des conséquences notables de l'invasion de l'Irak. +Le dangereux fantasme de l'indépendance énergétique +accroît en réalité l'insécurité de leur approvisionnement en énergie. +Les hommes politiques qui appellent à l'indépendance énergétique préféreraient sans doute qu'il en soit autrement, mais c'est le marché qui a fait du pétrole une source d'énergie de première importance. +Aussi, seraient-ils avisés de tenir compte tant des moyens à mettre en oeuvre pour parvenir à cette indépendance que de l'intérêt légitime des pays exportateurs de pétrole et de leur réaction à la rhétorique sur l'indépendance énergétique. +Les dirigeants isolationnistes ne veulent peut-être pas en compte les autres pays, mais ils devraient y réfléchir à deux fois avant de se lancer sur une voie nuisible à leur propre pays. +Les plus grandes menaces qui pèsent sur la sécurité énergétique de la planète ne sont ni les attentats terroristes ni un embargo des pays producteurs - des événements à court terme auxquels il est possible de réagir rapidement et efficacement, notamment par le recours aux réserves stratégiques de pétrole, une augmentation de la production et une diversion des circuits d'approvisionnement. +En réalité, la principale menace à long terme est le déséquilibre entre d'une part l'augmentation de la demande en énergie et d'autre part l'investissement en infrastructure et en capacité de production supplémentaire. +En réponse à la stratégie des pays importateurs pour réduire leur dépendance à l'égard du pétrole ou s'en affranchir, les principaux pays producteurs pourraient réagir d'une manière qui risque d'envenimer la situation de l'énergie au niveau international, en décidant d'une baisse relative des investissements en capacité de production. +Dans ce cas de figure, une crise de l'énergie est quasi inévitable si ceux qui en appellent à l'indépendance énergétique n'apportent pas une solution alternative applicable en temps et en heure. +Mais les solutions de remplacement ne parviendront sans doute pas à se substituer au pétrole suffisamment tôt, car n'étant pas soutenues par le marché, elles devront être fortement subventionnées. +La rhétorique hostile des dirigeants politiques incite les pays exportateurs à augmenter leur production de manière à faire tomber les prix à un niveau qui réduira à néant la faisabilité économique des projets d'énergies alternatives - une politique interventionniste logique pour contrer la politique interventionniste des pays importateurs. +Une chute des cours du pétrole serait une condamnation à mort pour nombre de technologies de remplacement et augmenterait la demande en or noir. +Même si les pays producteurs ne font pas chuter volontairement le cours du pétrole, ils pourraient à coût terme accroître au maximum la production, pendant que le pétrole a encore de la valeur. +Mais une baisse des cours, couplée avec l'attente d'une baisse de la demande conduirait les pays producteurs à diminuer leurs investissements en capacité de production ou même à suspendre les projets les plus importants, comme ils l'ont fait dans le passé, ce qui conduira à une baisse de production. +Aussi, si les sources d'énergie alternatives ne sont pas disponibles lorsque la production de pétrole baissera, la pénurie mondiale sera inévitable. Et combler le déficit en matière d'investissement prendra des années, même en cas de hausse des cours. +Mettons de coté ces scénarios et plaçons nous dans le cas de la réussite de la politique d'indépendance énergétique, plusieurs pays européens, les USA, le Japon, la Chine et l'Inde devenant autosuffisants. +Comme le pétrole aura perdu sa valeur, les principaux pays producteurs pourraient l'utiliser sur le plan intérieur pour accroître leur industrie lourde. +Au lieu d'exporter directement leur pétrole, ils produiraient et exporteraient des métaux, des produits chimiques et des produits manufacturés, notamment vers l'Europe et les USA. Leur prix défierait toute concurrence en raison de la dépendance des pays importateurs à l'égard de sources d'énergie alternatives très coûteuses. +L'indépendance énergétique conduirait alors au démantèlement d'industries entières, dans le secteur de la pétrochimie, de l'aluminium et de l'acier. +Le pétrole bon marché des pays producteurs pourrait rendre leurs nouvelles industries compétitives à l'égard de celles de la Chine, de l'Inde et de l'Asie du Sud-Est. +Il en résultera une montée du chômage et des économies affaiblies. +L'indépendance énergétique pourrait ouvrir la voie à la dépendance à l'égard de l'acier ou de la pétrochimie. +Que nous réserve l'avenir ? +Les dirigeants politiques, avec leur fascination pour "l'indépendance", vont-ils essayer d'éliminer la dépendance à l'égard de différentes matières premières, les unes à la suite des autres ? +Autrement dit, la cause de "l'indépendance énergétique" va-t-elle renverser le cours de la mondialisation ? +Le pétrole est une ressource finie. +Seule une stratégie énergétique viable à long terme et appuyée sur le marché peut assurer la croissance à la fois dans les pays producteurs et dans les pays consommateurs. +Les politiques isolationnistes conduisent toujours à la pénurie et au mécontentement. +Quelle que soit la voie empruntée pour tenter de parvenir à l'indépendance énergétique, ce n'est jamais rien d'autre qu'un fantasme irréalisable et potentiellement dangereux. +Le paradoxe de la crise iranienne +On entend souvent dire que l'Iran, du fait de ses ressources pétrolières et de ses réserves en gaz naturel, n'a pas besoin du nucléaire. +Mais dans le contexte d'une économie fragile et des pressions politiques dont il est l'objet, le gouvernement iranien doit fournir davantage d'électricité à une population qui augmente. +Les quantités croissantes de pétrole et de gaz naturel destinées à produire de l'électricité à son propre usage menacent les exportations de ces produits, première source de revenue de l'Etat. +La consommation intérieure de pétrole augmentant plus rapidement que la production, les revenus liés aux exportations de pétrole sont déjà en baisse. +L'énergie nucléaire permettrait de mettre fin à la baisse des revenus de l'Etat, car le pétrole et le gaz ainsi économisés pourraient être exportés. +Les réserves iraniennes en gaz naturel ne sont pas un substitut à l'énergie nucléaire bon marché, car son utilisation est plus rentable dans d'autres secteurs que celui de la production d'électricité. +Le gouvernement iranien craint qu'une pénurie d'électricité, une croissance économique insuffisante et un taux de chômage élevé n'entraînent le mécontentement de la population. +Si les tensions sociales augmentent, il y aura des conséquences politiques. +L'énergie nucléaire permet d'obtenir de l'électricité bon marché et en abondance, ce qui favorise la stabilité sociale et politique. +Les experts iraniens estiment que le gouvernement iranien doit choisir entre des troubles intérieurs et des sanctions internationales, entre la sécurité intérieure et la sécurité internationale. +Les pressions intérieures pourraient abattre le régime, mais pas les pressions internationales. +L'Histoire est du coté du gouvernement iranien. +La Révolution islamique a survécu à une guerre brutale avec l'Irak, à des sanctions économiques et à des décennies de pressions internationales et d'isolation de la part des USA. +Et les dirigeants iraniens se souviennent que malgré le fort soutien international dont il disposait, le Shah a été contraint à l'exil en 1979. +S'il y a des raisons pour que dans l'avenir le gouvernement américain - quel qu'il soit - s'oppose à un programme nucléaire iranien, même civil, les décideurs américains reconnaissent aussi que l'énergie nucléaire contribuerait à stabiliser le régime iranien. +Depuis 1979, les USA et l'Iran s'affrontent par alliés interposés et le conflit qui se prolonge entre eux signifie que les combats vont continuer au Liban, en Afghanistan et dans la région de la mer Caspienne, de même que la guerre commerciale et financière. +Aussi longtemps que la Chine et la Russie ont de l'argent à investir et des armes à vendre, les sanctions de l'ONU resteront sans effet. +L'Iran menace d'utiliser l'arme du pétrole, mais c'est très improbable. +Quel que soit le scénario, il n'est pas dans son intérêt de diminuer les exportations de pétrole, et encore moins de les arrêter. +Néanmoins, la pression intérieure, un certain sens du nationalisme et la nécessité de se placer en meilleure position pour négocier avec les pays occidentaux pourraient contraindre le gouvernement iranien à réagir face à des sanctions un peu trop brutales de l'ONU ou à une frappe aérienne sur ses installations nucléaires. +Mais même dans ces circonstances extrêmes, l'Iran ne pourra se passer des revenus du pétrole. +Il pourrait décider d'un embargo ou d'une suspension symbolique de l'approvisionnement pétrolier, mais sans impact réel sur le marché mondial du pétrole. +Le gouvernement iranien dispose de moyens plus efficaces pour répondre à une attaque des USA et de ses alliés. +Ses sympathisants en Irak pourraient s'en prendre aux exportations de pétrole de Bassora - ce qui porterait un coup aux plans américains pour l'Irak tout en dopant les revenus pétroliers de l'Iran - ou restreindre l'approvisionnement en carburant des forces américaines en attaquant les routes et les ponts, notamment l'axe Koweït City-Bagdad. +La communauté internationale continuera à payer le prix fort pour cette crise qui va peser sur le marché pétrolier dans les années à venir. +Selon certains experts, elle a déjà entraîné une hausse de quelques 15 dollars du prix du baril. +Paradoxalement, le programme nucléaire civil iranien contribuerait à renforcer la sécurité énergétique des USA et du reste du monde en accroissant la quantité de pétrole et de gaz disponible sur le marché mondial. +Mais la volonté américaine de déstabiliser l'Iran et la détermination du gouvernement iranien à conserver le pouvoir rendent ce scénario improbable. +Comment le cours du dollar affecte-t-il le prix du pétrole ? +Fixer le prix du pétrole en une seule monnaie a des implications bien plus vastes que ce que l'on pourrait croire. +Par exemple, certains pays producteurs de pétrole demandent à leurs clients de payer en euros, mais cela ne veut pas dire que le prix est en euros. +Et même si les prix en dollars devaient passer en euros, les conséquences du prix fixé en une seule monnaie seraient les mêmes pour le marché du pétrole.    +Bien que les pays exportateurs de pétrole encaissent des revenus en dollars (ou en euros), ils utilisent d'autres monnaies pour importer des biens et des services. +Toute modification du taux de change du dollar affecte le pouvoir d'achat de ces pays et donc leur revenu réel.  +En outre, les sociétés pétrolières internationales vendent la majeure partie de leur pétrole en dollars, mais elles opèrent dans plusieurs pays et règlent une partie de leurs dépenses en monnaies locales. +Tout changement du cours du dollar affecte donc la structure de leurs coûts et leur rentabilité, puis touche les réinvestissements en exploration, développement et maintenance. +La relation qui existe entre le cours du dollar et le prix du pétrole est très complexe. +S'ils peuvent s'alimenter l'un l'autre dans un cercle vicieux, leur relation à court terme est différente de celle à long terme. +À court terme, la dépréciation du dollar n'affecte pas l'offre et la demande, mais a des conséquences sur la spéculation et les investissements dans le secteur pétrolier. +Lorsque le dollar chute, les produits de première nécessité -- dont le pétrole -- attirent les investisseurs. +Investir dans le secteur pétrolier devient à la fois un rempart contre la chute du dollar et un moyen de placement pouvant entraîner des profits substantiels, en particulier dans un climat de déclin de la capacité de production excédentaire, de hausse de la demande, de chute des taux d'intérêts, d'effondrement du marché de l'immobilier et de crise du secteur bancaire. +L'OPEC n'a peut-être pas tort de dire que les politiques américaines et les spéculateurs sont responsables de la hausse des prix. +Il est aussi vrai que si l'OPEP avait une capacité excédentaire, elle s'en serait déjà servie pour se débarrasser des spéculateurs et baisser les prix du pétrole. +L'OPEP peut reprendre le contrôle de deux manières : se servir de sa capacité excédentaire "prétendue" pour "inonder" les spéculateurs, ou utiliser ses excédents financiers pour les dépasser. +Le recours à cette dernière option implique que, même sans capacité excédentaire, l'OPEP peut rester aux commandes. +Sur le long terme, cependant, l'analyse statistique de plusieurs variables de l'industrie pétrolière indique qu'un dollar faible a des conséquences sur l'offre en réduisant la production, que le pétrole appartienne à, ou soit produit par, des compagnies pétrolières nationales ou internationales. +La faiblesse du dollar affecte également la demande en augmentant la consommation. +Si l'offre baisse et que la demande s'accroît, les prix augmentent. +La faiblesse du dollar réduit également le pouvoir d'achat des exportateurs de pétrole. +Si le prix nominal du pétrole reste constant tandis que le cours du dollar chute, le revenu réel des pays producteurs de pétrole diminue, entraînant une baisse des investissements en capacité additionnelle et en maintenance. +Il en va de même pour les compagnies pétrolières. +En conséquence, le prix du pétrole augmente. +En fait, les prix du pétrole ayant augmenté pendant que le dollar chutait, l'expansion de capacité des compagnies pétrolières n'a pu correspondre aux prévisions pour les pays non-membres de l'OPEP durant ces trois dernières années. +Même aux États-Unis, la production de pétrole n'a pu correspondre à la hausse des prix, car la hausse des coûts d'importation de matériel et d'équipement -- due en partie à la faiblesse du dollar, mais aussi à d'autres facteurs -- a entraîné des retards et des annulations de projets. +Bien entendu, la chute du dollar rend le pétrole moins cher en Europe, en Asie, et dans tous les pays dont les monnaies sont en appréciation. +Le prix du pétrole a atteint des sommets aux États-Unis en 2004 et 2005, mais pas Europe, ce qui explique en partie pourquoi la croissance économique n'y a pas été affectée. +Lorsque les Américains paient le baril 120 $, les Européens ne le paient que 76 € environ ! +Ces dernières années, plusieurs facteurs ont empêché la hausse du prix du pétrole d'avoir des conséquences sur la demande en produits pétroliers aux États-Unis, comme l'augmentation des dépenses gouvernementales, les taux d'intérêt bas, les réductions d'impôts et une augmentation des revenus réels. +La faiblesse du dollar a, à n'en pas douter, forcé certaines familles américaines à passer leurs vacances aux États-Unis plutôt qu'en Europe. +Mais, de nombreux Américains utilisant des 4X4 très gourmands en essence pour leurs vacances, la demande en pétrole est restée élevée. +Tant que les modèles de consommation américains n'auront pas changé ou qu'une hausse du dollar n'augmentera pas la production de pétrole, les Américains paieront la majeure partie des coûts engendrés par le fait que le prix du pétrole est fixé en une seule monnaie.   +La nouvelle mission de l'Europe en Afrique +Pour certains, la puissance militaire brute est la seule véritable mesure du pouvoir. +Mais les 16 missions militaires de l'Union européenne actuellement menées dans le cadre de la PESD ont bien plus à leur avantage. +Un soutien est nécessaire dans de vastes régions d'Afrique, auxquelles l'Europe peut et doit prêter main forte. +En outre, le nouveau style d'engagement politico‑militaire de l'Union européenne n'est pas un vestige du colonialisme en Afrique. +Il est vrai que bon nombre de pays africains souffrent actuellement d'instabilité, d'échecs gouvernementaux, de conflits régionaux, de violentes luttes intestines politiques et d'autres maux connexes, y compris des massacres et une brutalité à grande échelle, des guerres civiles, des mouvements massifs de réfugiés, des bouleversements économiques et des dégâts écologiques. +Pourtant, le tableau d'ensemble n'est pas uniformément sombre. +Certains pays africains sont relativement stables et prospères, et le continent est doté d'une population jeune qui dépassera bientôt le million d'individus, d'abondantes réserves minérales et d'un dynamisme intrinsèque. +En même temps, nous, Européens, ne pouvons nous permettre d'ignorer les problèmes de l'Afrique comme s'ils n'avaient pas d'impact sur nos propres sociétés. +Le projet européen a été construit sur des valeurs que nous considérons comme universelles, et nous devons faire un réel effort pour les faire respecter : non seulement parce qu'il s'agit d'un impératif moral, mais parce que c'est aussi dans notre intérêt stratégique. +L'Union européenne est de loin le plus grand marché d'exportation de biens africains, qui plus est, elle offre un foyer à de grandes communautés issues de presque tous les pays d'Afrique. +A l'inverse, de nombreux citoyens et détachés européens sont éparpillés dans toute l'Afrique. +Aux premiers stades d'une crise, l'intervention européenne -- par l'assistance politique et financière, l'intervention diplomatique et même les actions militaires -- peut empêcher que la violence n'éclate. +De plus, lorsqu'une crise touche à sa fin et qu'il devient possible de modérer les influences, l'intervention extérieure s'avère utile pour faire régner la paix et amener les factions en conflit à la table des négociations. +Dans les pays qui ont connu les horreurs de la guerre civile, l'arrivée d'une force militaire active extérieure est généralement la bienvenue, comme c'était le cas en 2003 et 2006 pour les opérations au Congo. +Par sa simple présence, une force de ce type témoigne de la bonne volonté et de l'engagement des nations qui l'ont envoyée. En apportant un sentiment d'ordre public, elle sert de force d'appui précieuse aux négociateurs honnêtes qui s'efforcent de parvenir à un accord de paix. +Si la politique européenne à l'égard de l'Afrique n'est peut-être pas parfaite, elle a au moins le mérite d'exister et d'avoir pour but de soutenir les États africains et les organisations régionales, comme l'Union africaine, chaque fois que c'est possible, nécessaire et par-dessus tout, sollicité. +La PESD prend en compte la politique européenne dans son ensemble et vise à fournir une aide en matière d'organisation, de formation et de logistique aux missions et aux forces créées par les États ou groupes d'États africains. +Par exemple, la notion récente de « renforcement européen des capacités de l'Afrique en matière de prévention, de réaction aux crises et de résolution des conflits » (connue sous le nom de « Recamp ») invite ouvertement l'Afrique à jouer un rôle majeur dans ce processus. +L'Europe n'a jamais prétendu avoir les moyens de redresser les déséquilibres stratégiques qui existent en Afrique -- elle n'a pas non plus l'intention de le faire. +Les pays de l'Union européenne possèdent toutefois des atouts considérables, notamment la capacité militaire nécessaire pour conduire des opérations décisives. +Mais l'atout le plus précieux est culturel : des soldats disposés à et capables d'interagir avec les populations locales, prudents dans leur façon d'employer leur force létale et prêts à accepter les nombreuses tendances au sein des parties en conflit. +Cependant, les capacités militaires européennes sont limitées et exigent que les planificateurs élaborent des options « minimales », avec l'inconvénient que des engagements moindres nécessitent généralement des perspectives de long terme. +La PESD n'est pas opérationnelle depuis assez longtemps pour avoir fait ses preuves. +Néanmoins, nos modestes tentatives en cours au Congo − une mission de conseil de la police (EUPOL) et une mission de réforme de la défense (EUSEC) − et au Soudan, où 60 Européens soutiennent le personnel de la mission AMIS II de l'Union africaine au Darfour, donnent de bonnes raisons d'espérer. +Il importe avant tout que les membres de l'Union européenne reconnaissent que les problèmes de l'Afrique doivent être résolus par les Africains. +C'est tout autant une question de principe qu'un froid calcul stratégique, et c'est pour cela que la PESD a beaucoup à offrir : une vision de long terme soutenue par une économie puissante disposant des atouts nécessaires pour mener à bien les opérations humanitaires, la prévention des conflits, la gestion des crises et le maintien de la sécurité. +L'avantage essentiel de la PESD est la connaissance et la compréhension culturelle que l'Europe a de l'Afrique. +A l'heure actuelle, les anciennes puissances coloniales évoluent singulièrement, tout comme leurs anciennes colonies. +Des deux côtés de la Méditerranée, les générations ont changé et de nouveaux liens se sont formés. +La connaissance, la compréhension et le respect mutuel demeurent et doivent être les pierres angulaires sur lesquelles construire la politique européenne pour l'Afrique. +Peut-on perdre la Turquie ? +À la fois le Parti pour la justice et le développement (AKP) et ses rivaux laïques s'engagent publiquement à rechercher l'adhésion à l'UE, mais en pratique des doutes sont apparus. +L'insistance du président français Nicolas Sarkozy pour qu'un référendum soit organisé conditionnant l'adhésion de la Turquie laisse penser que des années d'ajustement douloureux aux normes européennes ne se verront jamais récompenser par l'adhésion. +De toute évidence, les États-Unis et la Turquie sont convaincus que la Turquie n'a pas d'autre issue. +Les Turcs, pensent-ils, accepteront toute rebuffade avec fatalisme. +Mais cette hypothèse pratique néglige un changement tectonique dans la position géopolitique de la Turquie. +Lorsque l'Union soviétique s'est effondrée, la Turquie a considéré les États d'Asie centrale nouvellement indépendants avec une certaine nostalgie panturque. +Ces patries ancestrales exerçaient une emprise sur les imaginations turques, mais aujourd'hui il s'agit d'opportunités de travail, de ressources énergétiques et d'autres faits pratiques plutôt que d'unité ethnique qui créent une sorte de "commonwealth" turc. +Le plus frappant est le renouveau des relations entre la Turquie et la Russie, sans porter atteinte à ses liens avec les États post-soviétiques indépendants depuis peu. +L'ancien antagonisme de la Turquie envers la Russie a brièvement ressuscité lorsque l'Union soviétique a implosé. +Au début des années 1990, des généraux turcs ont considéré l'humiliation des troupes russes en Tchétchénie comme le début d'une vengeance longuement attendue. +Mais, alors que la Russie (et l'Iran) étaient autrefois les grands rivaux géopolitiques de la Turquie, aujourd'hui ce sont des marchés pour l'exportation et des fournisseurs d'énergie. +L'énergie est la clé de la nouvelle position géopolitique de la Turquie. +Son industrie et sa population connaissent une croissance dynamique, ses demandes énergétiques produisent par conséquent une synergie géopolitique avec la Russie et l'Iran, sans qu'aucun des deux ne puisse se permettre d'interrompre le flux de pétrole et de gaz sous peine de provoquer une crise interne massive. +Pendant ce temps, alors que l'attitude de la Turquie envers ses voisins a changé, son élite au pouvoir a vu l'UE s'associer à des pays anciennement communistes aux économies de marché bien moins assurées et au passé démocratique bien plus bref. +Comme l'a souligné un général turc, "si nous avions rejoint le pacte de Varsovie plutôt que l'Otan, nous serions membre de l'UE aujourd'hui." +La réélection, l'été dernier, de l'AKP du Premier ministre Recep Tayyip Erdogan, suivie de l'élection d'Abdullah Gul comme premier président à l'épouse voilée, semblent confirmer les craintes des Européens anti-islamiques. +Pourtant, même si de nombreux activistes et d'électeurs de l'AKP sont de fervents musulmans, Erdogan et Gul restent convaincus par l'intégration européenne. +Mais il est urgent de parvenir à l'adhésion européenne s'ils veulent satisfaire leurs partisans et intimer silence à leurs détracteurs. +Le problème est que les victoires de l'AKP, ainsi que les sollicitations de l'Amérique d'Erdogan et de Gul, ont déclenché une crise de direction parmi l'élite laïque autrefois dominante et pro-occidentale de Turquie. +Même si l'AKP peut s'appuyer sur l'allégeance de millions d'électeurs et sur des myriades de nouveaux membres soucieux de rejoindre le camp des vainqueurs, les laïcistes sont profondément établis dans les institutions, les universités, les médias et le monde des affaires turques. +Mais à la fois les partisans ordinaires de l'AKP et les laïcistes déçus éprouvent aujourd'hui quelques soupçons face aux agissements de l'Amérique et à ses motifs dans la région. +Le soutien tacite par des personnalités militaires majeures du refus du Parlement turc d'adhérer à l'invasion américaine de l'Irak de mars 2003 suggère que le nationalisme turc pourrait unir la base des députés AKP avec leurs ennemis implacables du camp laïc. +Si l'UE rejette ouvertement la possibilité d'adhésion de la Turquie, ou si l'Amérique se montre trop laxiste face au problème kurde du nord de l'Irak, une grande partie des deux camps pourrait bien s'unir. +Les liens de la Turquie et d'Israël, par exemple, ont été mis à rude épreuve par l'investissement israélien au Kurdistan. +Alors que Shimon Peres a fait un geste de réconciliation en choisissant Ankara comme cadre du premier discours par un président israélien au parlement d'un pays à prédominance musulmane, les inquiétudes d'Israël au sujet de l'Iran sont bien plus sérieuses que celles de la Turquie. +Les deux pires ennemis jurés d'Israël, l'Iran et la Syrie, figurent en fait parmi les supporters les plus enthousiastes de la position radicale turque envers les Kurdes. +La conquête de l'Irak par l'Amérique a déstabilisé l'orientation occidentale de la Turquie plus que les États-Unis ne veulent bien l'admettre. +La plupart des Turcs ne veulent pas que leur pays soit exclu de l'Occident, mais si l'UE les éconduit tout en accélérant le processus d'entrée de candidats plus faibles, la Turquie pourrait se sentir suffisamment forte et amère pour choisir de changer d'orientation géopolitique. +L'arche de l'euro +Confronté à la plus grande épreuve de son histoire, l'euro est loin de voguer droit au désastre, comme l'économiste nobélisé Milton Friedman l'avait pourtant prédit il y a dix ans. +Au contraire, l'Union économique et monétaire européenne s'avère être un atout de taille en cette période de tumulte. +Les sceptiques feraient bien de se rappeler que l'euro est lui-même né d'une crise. +La monnaie unique a été conçue comme une réaction aux bouleversements de l'après-guerre -- inflation à deux chiffres, forts taux de chômage et attaques spéculatives sur la livre, la lire et le franc français. +C'est la crise du Système monétaire européen qui a conduit au lancement de l'euro, le 1er janvier 1999. +En dix courtes années, l'euro a bouleversé l'environnement économique, s'élevant au statut de deuxième monnaie mondiale et rivalisant avec le dollar comme moyen de paiement international, pour le commerce et la finance. +L'Union monétaire européenne est aujourd'hui le plus vaste marché du monde, et elle continue de grandir. +Avec l'entrée de la Slovaquie le 1er janvier, l'euro concerne désormais 16 pays et 329 millions de citoyens. +Les bénéfices d'une union monétaire basée sur un cadre économique stable et gouvernée par une banque centrale indépendante sont manifestes : la zone euro a connu une inflation et des taux d'intérêt bas pendant la majeure partie de la dernière décennie, un élan dans les domaines du commerce et de l'investissement, et une intégration rapide des marchés financiers. +En outre, 16 millions d'emplois ont été créés au cours des 10 dernières années -- record encore plus élevé qu'aux États-Unis. +Les troubles financiers et la récession économique que nous traversons ne font que souligner les avantages de l'Union monétaire de plusieurs importantes façons. +Tout d'abord, l'euro a éliminé les possibilités de turbulences de taux de change et d'attaques spéculatives sur les devises auxquelles les économies les plus vulnérables auraient pu s'attendre dans le contexte d'agitation actuelle. +En tant que devise mondiale stable et forte, l'euro limite aussi l'instabilité des taux de change internationaux. +Ensuite, la zone euro bénéficie d'une Banque centrale européenne indépendante dont les actions rapides visant à débloquer les tensions de liquidités et à coordonner la politique monétaire ont récemment contribué à éviter un effondrement financier. +Des démarches aussi rapides et coordonnées par 16 banques centrales distinctes auraient été impensables. +Enfin, le cadre macroéconomique orienté vers la stabilité de l'Union monétaire a mieux préparé les pays de la zone euro aux tempêtes économiques. +Grâce aux règles fiscales du Pacte de stabilité et de croissance, la zone euro a atteint sa position budgétaire la plus solide en 2007, amenant les déficits à leurs plus bas niveau depuis 25 ans. +Cela a permis à de nombreux pays de l'Union européenne d'aborder la crise avec une bonne marge de manœuvre. +Les bénéfices de l'Union monétaire sont tels que les coûts visibles de la non-adhésion contribuent à relancer le débat politique autour de l'adoption de l'euro dans plusieurs pays non-membres. +Certes l'euro n'est pas une panacée, et n'a pas non plus fonctionné sans heurts au cours des dix dernières années. +Les divergences entre économies de la zone euro en termes de croissance et d'inflation ont constitué un défi permanent. +Même si les différences ne sont pas plus importantes que celles que l'on trouve à l'intérieur de grandes économies comme celles de l'Allemagne ou des États-Unis, elles risquent de se voir amplifier par la crise. +C'est pourquoi il est encore plus important de continuer à perfectionner le fonctionnement de l'Union monétaire. +Cela ne demande pas simplement la consolidation des systèmes de résilience face à la crise, mais nécessite aussi d'équiper les économies de la zone euro en vue des défis à long terme que représentent la mondialisation, le vieillissement, la raréfaction des ressources et le réchauffement climatique. +Dans une économie mondiale potentiellement plus instable au XXIe siècle, il nous faut récolter des bénéfices maximum de l'intégration économique en termes de croissance et d'emplois. +La clé d'un meilleur fonctionnement de l'Union monétaire réside dans une surveillance plus rapprochée et une coordination plus approfondie des politiques économiques. +Les dirigeants doivent se montrer à la hauteur des responsabilités qui accompagnent le partage d'une monnaie. +Ils doivent reconnaître l'impact des politiques économiques nationales sur la zone euro dans son ensemble, et ainsi discuter et coordonner les programmes économiques au niveau de la zone euro. +À cet égard, le lancement du Plan de relance économique européen -- une initiative d'incitation fiscale à l'échelle de l'UE équivalant à 1,5 % de son PIB, approuvée par les chefs de gouvernements européens en décembre -- constitue un pas en avant décisif. +Il doit à présent être suivi d'un contrôle budgétaire plus rapproché, d'autant que les mesures d'incitations fiscales, la récession économique et les plans de sauvetage des banques vont ébranler les finances publiques. +Le Pacte de stabilité et de croissance doit demeurer la pierre angulaire du cadre budgétaire de l'UE, et la surveillance efficace et le soutien des pairs seront essentiels pour aider les États-membres à se diriger vers des budgets équilibrés une fois que l'économie se sera ressaisie. +Une surveillance fiscale plus approfondie doit s'accompagner d'une plus large surveillance économique, notamment parce que les déséquilibres des balances courantes se sont accentués pendant la crise. +La Commission européenne travaille aujourd'hui à étendre la cible de la surveillance au-delà de la politique fiscale pour qu'il devienne possible d'identifier les risques issus de déséquilibres macroéconomiques ou de changements de compétitivité et de s'en occuper avant qu'il ne soit trop tard. +Enfin, les pays de la zone euro doivent travailler davantage à trouver des positions communes sur les sujets internationaux afin de parler d'une seule voix dans l'arène mondiale. +C'est la seule manière de promouvoir et de défendre les intérêts économiques de l'Union monétaire face à des défis mondiaux, et, pour en venir à bout, la coopération multilatérale sera de plus en plus nécessaire. +Prenons le sommet international de novembre sur la crise financière. +Le fait d'être parvenu à un accord avant la réunion a donné à l'Europe un rôle plus conséquent. +Quand la zone euro parviendra à adopter rapidement une position commune, cela permettra de parvenir à un accord à l'intérieur de l'UE comme sur la scène internationale. +Il faut absolument que nous bâtissions sur ce succès et que nous développions une vraie stratégie internationale pour l'euro. +La monnaie unique européenne a été un grand succès, mais elle reste en chantier. +Dix ans après l'introduction de l'euro, nous devons suivre l'exemple de ses fondateurs et transformer la crise en opportunité en nous unissant dans un esprit de coopération et d'ambition -- et, ainsi, consolider les fondations de l'Union monétaire européenne. +Les droits de l'Homme survivront-ils au récent boom pétrolier en Afrique +L'économie de la région a été dopée en 2003 par la mise en service du pipeline Tchad-Cameroun, un projet de 4,2 milliards de dollars soutenu par la Banque mondiale qui est supposé stimuler l'exploration et la production pétrolière au Tchad, ainsi que celle des sites offshore de Nouvelle Guinée, et apporter des bénéfices aux régions traversées. +Ainsi, du fait que le pipeline traverse son territoire sur 890 kilomètres, le Cameroun va engranger 450 millions de dollars net par an en droit de passage et en royalties pendant 25 à 30 ans. +Tout cela a été possible grâce à ce qui a été, historiquement parlant, une période exceptionnellement longue de stabilité politique. +Au Tchad, le pétrole a été découvert en 1975 dans le sud du pays, dans la région de Doba ; 300 puits y ont été creusés. +Mais ces gisements n'ont été exploités qu'à partir de 1988, à la fin de la guerre civile qui a longuement déchiré le Tchad. +On aurait pu croire qu'avec le pétrole, la vie des Tchadiens et des Camerounais allait s'améliorer, tant au niveau individuel que local ou national. +Mais c'est la pauvreté généralisée dans un contexte de corruption endémique et de gestion calamiteuse par les autorités. +Jusqu'à présent, ni le gouvernement tchadien ni le gouvernement camerounais n'ont rendu public le bilan financier lié au projet de pipeline. +Ce manque de transparence n'a rien de surprenant. +C'est pour cela que la Banque mondiale a imposé des conditions très strictes au Tchad et au Cameroun. +Elle a exigé que ces deux pays déposent 10% des revenus pétroliers attendus sur un compte bloqué à l'étranger, ceci au bénéfice des générations futures. +Au moins 80% de ces revenus devaient être investis dans l'éducation, la santé, les infrastructures routières et électriques et l'eau potable, 5% devaient être réservés aux populations habitant dans les zones pétrolières et sur le parcours du pipeline. +Et les comptes du pétrole devaient faire l'objet d'audits périodiques. +Initialement, le Tchad et le Cameroun devaient participer au projet à hauteur de 140 millions de dollars chacun, mais ces sommes ont été entièrement versés par la Banque mondiale et la Banque européenne d'investissement. +Il est entré en service en juillet 2003, 16 mois plus tôt que prévu, avec un débit qui a culminé à hauteur de 225.000 barils de pétrole par jour à la fin de cette année là. +Aujourd'hui, soit 30 mois plus tard, la population s'agite et demande quand elle va bénéficier de la manne pétrolière. +On a beaucoup parlé des "Host Government Agreements", les accords entre le consortium ExxonMobil et les gouvernements hôtes du Tchad et du Cameroun qui régissent la construction et l'exploitation des champs pétroliers de Doba et du pipeline. +D'après ce rapport, les "Host Government Agreements" fixent un coût aux droits de l'homme en prévoyant de lourdes indemnités en cas d'interruption de l'exploitation du pipeline ou des champs pétrolifères, même si c'est pour appliquer des lois en vigueur. +Et durant cette même période, l'espérance de vie a augmenté de 11 ans. +Pourtant, cette évolution n'a pas empêché une formidable amélioration du niveau de vie des retraités. +D'ici à 2040 (on prévoit qu'à cette date il n'y aura plus que deux personnes en âge de travailler pour subvenir aux besoins d'un retraité alors qu'il y en a quatre aujourd'hui), pourquoi le scénario que nous avons connu depuis la guerre ne se reproduirait-il pas ? +La raison en est simple : les obligations en matière de solidarité ne sont plus ressenties aujourd'hui comme elles l'étaient hier. +Après la guerre, les retraites étaient notoirement faibles et leur coût modeste pour les actifs. +Dans ce contexte, la croissance économique aidant, les actifs ont accepté volontiers une progression continue de leurs charges pour les financer. +Mais aujourd'hui, dans tous les pays le revenu moyen des retraités s'est considérablement amélioré et il est même parfois supérieur, comme en France, à celui des personnes actives. +La revalorisation des retraites d'une part, l'accroissement continu des cotisations et des impôts d'autre part ont conduit à une situation dans laquelle les actifs ne sont plus disposés à à accroître leur contribution en faveur des retraites obligatoires. +Dans les années qui viennent, le développement en Europe des régimes de retraites complémentaires par capitalisation est incontournable. +Mais son essor est aussi une chance pour le développement de nos marchés financiers européens qui accusent un retard dommageable à la croissance économique et à l'emploi. +Les pays où les fonds de pension sont les plus développés (les Etats-Unis et la Grande-Bretagne) sont aussi ceux qui ont la plus forte capitalisation boursière. +Enfin il faut associer l'entreprise à la constitution de cette retraite complémentaire. +Il y a sur la table une proposition de directive de la Commission concernant les retraites professionnelles. +Mais il faut être plus ambitieux. +L'Union Européenne devrait ainsi mettre en place un cadre fiscal commun minimum adaptable à tous les produits d'épargne retraite par capitalisation quels qu'ils soient : fonds de pension, assurance vie, épargne salariale. +Concrètement les salariés qui ouvriraient ces plans dans l'organisme de leur choix, et sous la forme qui a leur préférence (fonds de pension …), pourraient déduire leur cotisation (plafonnée) de leur impôt sur le revenu ou à défaut recevoir un crédit d'impôt. +Ces versements devraient être systématiquement abondés par l'employeur à due concurrence. +Le dispositif fiscal devrait favoriser la sortie en rentes, sans exclure (moyennant le paiement d'un ticket de sortie) la possibilité d'une sortie en capital. +Certes, l'Europe ne saurait s'orienter dans cette voie sans que deux conditions préalables soient réunies : d'abord un changement d'attitude vis-à-vis de l'épargne. +Les Européens doivent cesser de battre leur coulpe au motif qu'ils ne consommeraient pas assez et qu'ils épargneraient trop. +En effet, l'Europe qui doit investir plus a en réalité besoin de plus d'épargne. +Ensuite, un infléchissement des politiques économiques, qui doivent être plus résolument orientées vers la promotion des investissements, la productivité et de la croissance. +Car si ce surcroît d'épargne ne devait servir qu'à financer les déficits publics, voire les investissements industriels Outre-atlantique (comme c'est encore trop le temps aujourd'hui), alors on pourrait s'interroger sur l'intérêt à la stimuler. +Régulièrement, l'Europe se doit d'accomplir des actes politiques fort. +Ce fut le cas avec l'euro. +Souhaitons qu'elle saisisse l'occasion qui se présente aujourd'hui avec les retraites. +L'Europe et le Président Bush +ROME : Que va-t-il advenir des relations transatlantiques ? +La question se repose avec chaque nouvelle administration américaine. +Depuis le début des années 70 on n'a cessé de se préoccuper de l'élargissement du fossé transatlantique, il est donc tentant de continuer à faire comme si les relations transatlantiques allaient garder à peu près le même ton. +Mais en fait, les Etats-Unis et l'Union Européenne sont en train d'avancer rapidement sur des chemins différents : chaque côté de l'Atlantique doit donc relever le défi en gérant une relation de plus en plus complexe. +Deux autres tentations doivent être combattues. +Du côté européen, celle d'accélérer l'émergence de l'Union en tant qu'acteur international en proclamant sans cesse autonomie ou indépendance vis-à-vis des Etats-Unis. +Un anti-américanisme sous-jacent refera inévitablement surface, et comme dans toute longue relation déséquilibrée, le partenaire le plus faible aura tendance à faire des déclarations qui donneront lieu à de fausses interprétations. +Les Européens ne devraient pas succomber à cette tentation, car la distance entre la dépendance et le partenariat ne se mesure pas en termes de rhétorique. +Les Européens doivent, au contraire, assumer une part honnête du fardeau transatlantique, mettre en place une politique étrangère européenne vraiment commune, penser et agir comme un pouvoir régional à la portée mondiale. +Si l'Euro est un succès, comme je le crois, en tant que monnaie mondiale, et si la force de réaction rapide de l'Europe devient une réalité prochainement- comme je le crois également- l'Union Européenne se sera assurée les premières conditions nécessaires à un partenariat équitable- en plaçant son argent (et ses soldats) là où elle a annoncé qu'elle les mettrait, joignant ainsi littéralement l'acte à la parole. +Du côté des Américains, la tentation est celle de jouer la carte de la "super puissance unique" en agissant de manière unilatérale. +Ce qui équivaut à déguiser un sentiment de solitude en autorité, et n'agit pas dans l'intérêt de l'Amérique. +Les intérêts nationaux ne peuvent plus être poursuivis de façon unilatérale ; les intérêts mondiaux des Etats-Unis sont mieux servis par des ensembles multilatéraux +Même si, en termes militaires, l'Amérique demeure la seule superpuissance, la force armée est d'une utilité limitée dans la conduite quotidienne de la politique étrangère. +L'Amérique profiterait autant que l'Europe d'un système efficace de direction mondiale pour atteindre ses objectifs, qu'il s'agisse de libéralisation du marché, d'un régime de non-prolifération nucléaire viable, de la maîtrise et de la prévention des conflits régionaux ou de la meilleure régulation des marchés financiers. +Dans cette optique, la maturation de l'Union Européenne en tant qu'acteur international représente pour les Etats-Unis un intérêt vital à. +Elle devrait donc se libérer de l'ambivalence traditionnelle entre l'exigence d'une Europe plus mûre et plus active d'un côté et un sentiment de malaise à ce propos de l'autre. +Il est vrai que l'Amérique est officiellement favorable à la promotion d'une politique de défense et de sécurité européenne commune. +Mais il existe des signes récurrents de nervosité de la part des Etats-Unis à propos de la nature de cette évolution. +Les Américains demandent fréquemment si elle concerne l'amélioration des moyens européens, ce qui conviendrait à l'OTAN, ou l'unification européenne (c'est à dire en vue d'à un projet politique). +Ma réponse est que cela concerne les deux sujets et que Washington devrait les soutenir tous deux. +Une simple évaluation de cette évolution me conduit à affirmer qu'une Europe plus compétente et plus unie mènera à une Alliance Atlantique plus efficace et non comme certains le croient au désengagement progressif de l'Amérique dans les questions européennes. +Le but de l'Union Européenne n'est pas de copier les structures de l'OTAN ou de créer une alternative à l'Alliance Atlantique. +L'Union Européenne se prépare à agir- soit avec les forces américaines, soit avec des forces purement européennes si l'OTAN, en tant qu'ensemble, décide de ne pas s'engager - dans des crises qui concernent l'Europe. +Plus que sa défense, dont le centre restera l'OTAN, l'Europe construit son rôle dans la sécurité en tant que modérateur régional: un rôle que renforcera l'élargissement de l'Union Européenne pour accueillir des pays candidats venant de l'Europe Centrale et Orientale. +Car, contrairement à ce que l'on entend régulièrement au Congrès américain, l'Europe assume déjà la part du lion en ce qui concerne la charge de sauvegarder la paix (sans parler de l'aide à la reconstruction) dans les Balkans. +Il va sans dire qu'il ne devrait pas y avoir de "contributions sans représentation". +Si la politique de l'Europe en matière de relations étrangères et de défense est couronnée de succès, l'OTAN devrait devenir une organisation plus européenne. +Mais Washington ne devrait pas s'inquiéter à ce propos: si les Européens considèrent l'Alliance comme une organisation plus européenne, ils investiront certainement plus (en termes de budget également) dans la poursuite de son succès. +Une logique similaire de partenariat devrait s'appliquer à un élargissement. +Le concept d'Europe n'est pas immuable, et à juste titre. +Sur la base d'une idée large de la sécurité et de la stabilité, l'élargissement de l'Union Européenne est tout aussi important que son approfondissement. +Ici, une approche transatlantique commune à propos de l'élargissement de l'Union Européenne mais aussi de l'Otan accroîtrait le degré de stabilité et d'unification dans l'Europe de l'après guerre froide - au profit de tous. +Une nouvelle division fonctionnelle du travail entre Européens et Américains est donc envisageable, à condition qu'elle soit adoptée dans le cadre d'engagements politiques communs et de partage des responsabilités. +Mais il faut éviter une division du travail rigide, verticale et artificielle, dans laquelle les Etats-Unis joueraient le rôle du dirigeant mondial solitaire (avec l'Europe dans son sillage) tandis que l'Europe poursuivrait uniquement le but d'élargir sa "maison" (les Etats-Unis se désengageant de la sécurité du Continent). +Cela serait malsain et rendrait le complexe transatlantique impossible à maintenir. +L'antidote dans ce cas est un partage véritable des choix et des décisions. +Si des décisions conflictuelles doivent être prises, un partenariat sain exige qu'elles soient discutées ouvertement et honnêtement. +Par exemple, le problème du système américain de défense antimissiles (NMD). +Quelle que soit la politique adoptée par l'administration Bush, elle devra prendre en compte les doutes et les réserves de l'Europe. +Si les Européens souhaitent exercer une influence sur ce point, ils devront jouer un rôle unitaire en encourageant, par exemple, l'Amérique à réviser le Traité ABM en accord avec Moscou. +Cela favoriserait la stabilité stratégique, permettrait de ne pas irriter Moscou (qui reste un facteur fondamental de la sécurité européenne) et d'éviter de détériorer le climat de sécurité en Asie. +Cela est vrai également pour le problème des soi-disant " Etats hors-la-loi", là encore, une meilleure combinaison des stratégies américaines et européennes pourrait aboutir à une approche plus efficace, appuyée sur une association d'engagement et de résolution. +Une nouvelle division du travail et un nouveau partage des responsabilités dépendent autant de l'économie que de la sécurité. +Un Euro stable renforce et assure une plus grande coopération: non seulement pour contrer l'instabilité financière mondiale mais aussi pour éviter le risque de conflits entre blocs de devises. +A condition que l'Administration Bush fasse pression pour plus de libre-échange, nous réussirons à renforcer l'unification du marché transatlantique, ce qui agira en faveur de nos deux économies. +Il y aura alors également des possibilités de relancer l'OMC, un fort engagement Américano-européen étant une condition préalable nécessaire, mais pas la solution complète. +Une sérieuse réévaluation de nos techniques de négociations et de nos vieilles habitudes est nécessaire. +L'OMC, mais aussi le FMI et la Banque Mondiale, doivent comprendre les besoins en cours de mutation des sociétés les plus vulnérables à l'impact de la mondialisation. +Nous devons nous ouvrir sur le reste du monde d'une manière plus directe et persuasive. +Le G-8, que l'Italie préside cette année, aidera à tester cette résolution, sur laquelle repose la légitimité de tout le processus. +Un partenariat américano-européen renouvelé et s'appuyant sur nos styles et moyens respectifs en termes de politique étrangère sera bénéfique aux deux parties. +L'Union Européenne cherche à juste titre son identité en tant qu'acteur collectif. +Alors que l'Europe change, c'est également ce que fait l'Amérique - en termes de composition sociale, de structures politiques et économiques, d'orientation géopolitique et de mentalité nationale. +Je reconnais que la diversité transatlantique risque de causer des querelles. +Mais l'interaction mutuelle et le partenariat égalitaire demeurent la seule réponse -- particulièrement s'ils se reflètent dans les réformes longtemps attendues des institutions multilatérales et dans un accroissement de la part de la direction mondiale. +Opérer à l'intérieur de cadres multilatéraux, même si cela se révèle parfois fatigant, a plus souvent servi les intérêts nationaux des Etats-Unis que le contraire, sans parler de ceux de l'Europe. +Cela ne changera pas. +Une Union Européenne plus forte est la partenaire naturelle de l'Amérique, sa concurrente occasionnelle mais certainement pas sa rivale. +Il est du devoir des gouvernements -- de chaque côté de l'Atlantique -- d'en persuader leur public. +L'Europe, petit à petit +Il est certain que l'impatience et la frustration sont depuis le début des forces motrices de l'intégration européenne. +Comme l'affirmait Robert Schuman dans sa Déclaration de 1950 : « l'Europe ne se fera pas d'un coup ». +De même, comme l'a écrit sur le tard Altiero Spinelli, autre père fondateur de l'Union européenne, sans visionnaires européens, il n'y aurait pas d'Europe ; mais sans hommes d'État pragmatiques, les visionnaires seraient allés nulle part. +Les points faibles du Traité de réforme sont évidents. +L'abandon de l'intitulé « constitution » était probablement nécessaire pour remettre les États membres en selle. +Toutefois, il n'était pas utile de faire durer les incertitudes quant à la plateforme politique commune sur laquelle la voix européenne devra compter en politique étrangère. +Qui plus est, l'espace de liberté, de sécurité et de justice exige toujours l'unanimité pour les décisions essentielles en matière de lutte contre le crime et le terrorisme -- ce qui signifie que les processus sont parfois d'une lourdeur insoutenable. +Le Traité ne suffit pas non plus pour renforcer la coordination des politiques économiques et budgétaires européennes. +Par ailleurs, des agences telles qu'Europol et Eurojust seront elles aussi soumises à un examen parlementaire approfondi ; quand à la procédure budgétaire, elle sera plus simple et démocratique. +La Charte des droits fondamentaux de l'Union européenne deviendra juridiquement contraignante et la protection judiciaire des citoyens sera améliorée grâce à un accès simplifié à la Cour européenne de justice et à l'élargissement de sa compétence. +De plus, le rôle de l'Union sur la scène mondiale sera consolidé par le fusionnement du poste de Haut représentant avec celui de Commissaire aux relations extérieures, et par la mise en place d'un service diplomatique unique. +Le Futur constitutionnel de l'Europe +La semaine dernière, le Président de la Convention européenne, M. Valéry Giscard d'Estaing, a proposé un "squelette" pour la future constitution de l'Europe. +Tous les ingrédients d'une constitution - valeurs, principes, droits des citoyens, les compétences de l'Union et ses institutions constitutifs, etc. - y sont inscrits. +Ce document existe en dépit du fait que le mandat de la Convention ne donne aucun pouvoir à ses délégués pour produire une constitution. +Selon la Déclaration de Nice, à laquelle je pris part en qualité de premier ministre participant, nous ne devions que simplifier et restructurer les traités fondamentaux de l'UE. +Selon le fonctionnement de la C onvention, notre mandat fut transformé à la suite de diverses pressions. +Ces pressions viennent des pays membres, des organisations de la société civile, et de lettres, de documents et de courriers électroniques en provenance de l'Europe toute entière. +C'est la pression populaire qui a changé notre mandat. +Quand c'est le ministre des affaires étrangères de la Grande-Bretagne, pays qui s'enorgueillit depuis des siècles de ne pas avoir de constitution écrite, qui réclame lui-même une constitution européenne écrite, alors, oui, les temps changent ! +Pourtant, des chercheurs universitaires tels que Ralph Dahrendorf et Joseph Weiler suggèrent qu'une constitution européenne n'a pas de sens puisqu'une constitution démocratique nécessite un sentiment d'identité commune suprême qui manque à l'UE, où les loyautés nationales individuelles ont encore cours. +D'autres, comme Robert Dahl, soutiennent que la démocratie se fonde sur des communautés plus petites elles-mêmes fondées sur des intérêts partagés et des relations personnelles. +Pour eux, l'Europe semble être trop grande pour donner naissance à des institutions réellement démocratiques. +De telles objections théoriques doivent être examinées à la lueur de l'existence factuelle de l'Europe : en fait, des décisions qui déterminent nos vies sont prises quotidiennement à l'échelle de l'Europe. +Nous n'aimons peut-être pas cela, mais l'UE fait partie de notre système de gouvernement, comme les municipalités, les régions et les États souverains. +Ainsi la question n'est pas de savoir si l'Europe existe ou pas, mais bien plutôt de savoir si nous sommes satisfaits de son mode de fonctionnement. +Si nous ne le sommes pas, que pouvons-nous y faire, et une constitution représente-t-elle le meilleur moyen de parvenir à nos buts ? +Le premier problème ayant besoin d'une solution "constitutionnelle" à résoudre porte sur la question d'une identité européenne claire et unifiée. +Peu de gens comprennent qu'à cause du patchwork des traités qui ont donné naissance aux institutions européennes contemporaines, l'Europe n'est pas une entité unitaire. En fait, l'Union Européenne et la Communauté Européenne dénotent de deux choses différentes. +La Communauté est un ensemble d'institutions créées dans les années 50 pour établir un marché commun. +Quand on décida par la suite de mettre en place une politique étrangère commune, et de coopérer au niveau juridique et policier, nous inventâmes alors l'Union. +L'Union s'occupe de politique étrangère et la Communauté de l'intégration économique. +Une des conséquences de cet état de fait implique que tout accord avec des pays tiers qui comporte ces deux aspects de politique économique et de politique étrangère nécessite deux traités distincts : un pour l'Union, un autre pour la Communauté. +Cela confond même les diplomates étrangers aguerris dans leurs négociations avec l'Europe. +Si cela les confond, imaginons combien cela peut-être confus pour les citoyens ordinaires ! +Comment le citoyen européen peut-il réellement s'identifier à l'Europe s'il n'existe aucune "Europe" unique ? +L'identité légale indistincte de l'Europe a un autre effet délétère. +Si la Communauté agit de sorte à affecter les droits d'une personne, cette personne peut engager un procès. +Mais si l'Union entame les droits d'une personne, le recours aux tribunaux est impossible puisque l'Union n'a pas valeur d'entité légale ! +Le second problème à résoudre qui a encore des implications constitutionnelles concerne la nature anonyme et bureaucratique des actes législatifs européens. +La critique des institutions est aussi vitale à la démocratie que la protection des droits légaux inscrits. +Mais les institutions européennes sont difficilement critiquables puisqu'elles produisent des actes que le citoyen ordinaire ne peut définir ni comprendre. +À l'échelle nationale, les actes parlementaires s'appellent "décrets" ou "lois" et portent des noms auxquels on peut s'identifier ou que l'on peut combattre. +À l'échelle de l'UE, nous avons des "règlements" et des "directives", des "décisions" et des "directives générales", des "stratégies communes", des "actions communes", des "positions communes" : une myriade d'appellations que seuls les experts peuvent comprendre. +Quand une "directive" est formulée, personne ne sait qui en est le responsable. Au lieu de cela, on la connaît sous l'appellation "Directive 17.62" (indiquant que c'est la directive n° 17 de l'année 1962). +En Italie, il existe aujourd'hui un décret qui porte à controverse changeant les règles de procédure criminelle qui pourrait se montrer très pratique pour les personnages de la scène publique. +Le nom du sénateur Cirami est attaché à cette loi. +On peut ainsi se battre la "loi Cirami"! +En serait-il de même si la loi était intitulée "Régulation 75" ? +Puisque l'Europe tant de corps légiférant (le Conseil des ministres, le Conseil pour l'agriculture, le Conseil pour l'industrie, le Conseil pour l'environnement, etc.), on ne peut savoir qui fait quoi et pourquoi. +Nous avons besoin d'un conseil législatif unique, un parlement européen avec deux chambres, l'une où siègeraient les représentants des États membres, l'autre où siègeraient les élus européens. +Dans ce système simplifié, la législation s'appellerait législation et les décisions exécutives, comme dans la plupart des systèmes légaux, combleraient les manques de la législation principale. +C'est un système que les citoyens européens peuvent comprendre. +L'embryon de document constitutionnel introduit la semaine dernière propose quelques petits changements significatifs qui pourraient permettre aux citoyens européens de s'identifier à l'Europe et d'en faire la critique. +Il fait appel à une entité légale unique et unifiée. +Quel que soit sa dénomination, Union Européenne, États-Unis d'Europe, Europe Unie ou autre, elle permettra un système simplifié, uni d'actes nominatifs qui permettront une plus grande transparence et une plus grande responsabilisation. +La structure institutionnelle envisagée par cette proposition de Constitution européenne devra aussi refléter les aspirations les plus larges de l'Europe, qu'elle permettra ainsi de développer. +L'Europe doit représenter plus qu'un véhicule de l'intégration économique, qui de toute façon est maintenant pratiquement réalisée. +Au mieux, on s'attend à ce que l'Europe soit équitable. +Nous espérons voir notre modèle social réalisé. +Nous espérons connecter les questions économiques et sociales. +Nous espérons que l'Europe jouera un rôle positive à l'échelle internationale. +Bien sûr, bien des écueils nous attendent. +L'un deux repose sur l'impossibilité de toujours plus centraliser l'Europe. +Les gouvernements démocratiques sont trop compliqués pour cela. +Réaliser l'équilibre idéal des institutions européennes, nationales, régionales et locales reste un défi important. +Mais si l'on doit décréter une Constitution pour l'Europe, tous les liens et toutes les valeurs qui rassemblent ces entités devront être respectés par cette Constitution. +La crise de leadership de l'Europe +Sur une note nettement moins positive, les États membres de l'UE ont tardé à agir de concert. +Dans un premier temps, c'est surtout la Commission européenne qui a été critiquée pour ne pas avoir soumis de proposition pour rassembler les gouvernements et les décideurs nationaux. +Aujourd'hui, ce sont les États membres qui résistent à la nécessité urgente d'une réponse politique concertée face à une crise qui va s'aggravant. +La rapidité et la sévérité du ralentissement économique sont de loin les plus sérieuses de toutes les contractions des  dernières soixante années. +En Europe, nous avons pour l'essentiel négligé les signaux d'alerte de la crise des prêts hypothécaires à risque américains lorsqu'elle s'est produite à la fin de l'été 2007, et n'avons donc pas été préparés à l'étape suivante de la crise lorsqu'elle s'est étendue aux banques européennes. +La leçon à retenir est que l'UE doit réagir avec plus de rapidité et de détermination qu'elle ne la fait jusqu'à présent. +Dans toute l'Union européenne, les citoyens demandent, « Que fait l'Europe pour répondre à la crise ? ». +La réponse est « pas assez et de loin » et le prix politique à payer risque d'être élevé lors des élections parlementaires européennes de l'été prochain. +Les dernières semaines de 2008 seront déterminantes pour faire en sorte que l'Europe tente de reprendre l'initiative et d'atténuer les retombées de la crise, tout en s'attelant à résoudre les problèmes inhérents au programme de réformes de l'UE. +En tant qu'administrateurs des « Amis de l'Europe », nous souhaitons appeler les institutions et les dirigeants politiques européens à renouveler leurs efforts concernant à la fois le Traité et le programme communautaire de Lisbonne. +La présidence française de l'UE a grandement contribué à améliorer la coordination entre les réponses des États membres à la crise financière et la Commission européenne a de son côté commencé à assumer le rôle plus actif que les Amis de l'Europe avaient appelé de leurs vœux le 10 octobre. +L'enjeu est maintenant pour la présidence et la Commission européenne de donner un nouvel élan politique au processus de réforme, aujourd'hui bloqué, de l'UE. +La réunion du Conseil européen des 11 et 12 décembre devrait être l'occasion de préciser clairement le calendrier envisagé pour la relance du processus de ratification du Traité de Lisbonne, faute de quoi les problèmes politiques risquent de s'aggraver après les prochaines élections européennes de juin 2009. +Le Traité de Lisbonne est un pas en avant pour adapter les processus décisionnaires de l'UE au XXIème siècle et à une Union élargie à 27 membres ou plus. +La nature globale de la crise actuelle rend évident le fait que l'Europe doit pouvoir prendre des décisions rapidement et de manière cohérente, sous peine de souffrir de conséquences funestes. +Il est avéré que l'opinion publique, dans toute l'Union européenne, arrive de plus en plus à la même conclusion. +Le droit souverain du peuple irlandais à décider de son avenir ne peut être remis en cause. +Mais l'Irlande doit aussi permettre aux autres États membres de l'UE d'aller de l'avant avec le Traité de Lisbonne s'ils le désirent. +Même dans l'éventualité d'un nouveau référendum dans ce pays, le gouvernement irlandais devrait prévoir une procédure qui, quelle que soit l'issue du référendum, permette aux autres États membres d'appliquer les clauses essentielles du Traité de Lisbonne. +La Commission européenne doit maintenant agir pour garantir que les États membres redoublent d'efforts en ce qui concerne le programme de Lisbonne, destiné à rétablir la compétitivité globale de l'Europe. +Malgré l'adoption par l'UE d'un programme convenu d'objectifs de réformes sur dix ans, les États membres ont parfois manqué de volonté politique pour le mettre en œuvre. +Les perspectives de plus en plus sombres pour l'Europe rendent ces réformes plus nécessaires que jamais. +L'influence de Gazprom sur la sécurité énergétique européenne +Les préoccupations concernant la sécurité énergétique au sein de l'UE, alimentées par une dépendance croissante envers la Russie, n'ont jamais été aussi fortes. En même temps que l'expropriation de la compagnie pétrolière Ioukos par les autorités russes, les sociétés étrangères ont été évincées du secteur de l'extraction en Russie. +Sans surprise, nombreux sont ceux aujourd'hui en Europe qui doutent de la parole du Kremlin. +Mais au lieu de se retirer, l'UE doit chercher à approfondir les engagements et la réciprocité des échanges. +Elle doit encourager une plus grande intégration de Gazprom dans le marché de l'UE par une libéralisation du marché et une intégration en aval. +Elle doit toutefois exiger aussi une restructuration de Gazprom et un véritable accès au marché russe pour les sociétés occidentales, parce que la réticence de la Russie dans ce domaine est source d'insécurité énergétique pour l'Europe. +En effet, l'administration Poutine a tout un historique d'intimidation des investisseurs étrangers et de contravention aux lois, avec le soutien de procureurs, des autorités fiscales, des agences de réglementation et de tribunaux. +Dans le même temps, Gazprom s'est imposé comme le principal faiseur de marché du gaz en Europe, ridiculisant les efforts de l'UE en vue d'une plus grande coopération avec la Russie. +La stratégie de Gazprom repose sur trois tactiques : la cooptation -- en entretenant des partenariats privilégiés avec certains pays, dirigeants politiques et entreprises, pour faire valoir ses intérêts ; la préemption -- en utilisant le pouvoir en amont et la diplomatie russe pour manipuler les conditions en aval et acquérir des actifs : et la désagrégation -- en divisant l'UE au moyen d'accords bilatéraux. +La cooptation de l'Europe par Gazprom s'est principalement faite par l'entremise de l'Allemagne, où des partenariats noués avec des compagnies énergétiques et des banques ont entraîné un alignement des autorités sur les objectifs de la Russie. +Des pressions intenses, tant directes que par procuration, sont exercées pour persuader les législateurs européens de permettre des contrats d'approvisionnement à long terme -- malgré leur impact extrêmement négatif sur la concurrence. +La préemption exercée par Gazprom s'est manifestée par une multitude d'acquisitions. +Gazprom a inondé le marché en Turquie, a coupé l'approvisionnement en gaz de l'Ukraine, a menacé le Belarus de faire de même, et offert un accès préférentiel au marché à des partenaires obligeants, comme l'Italie. +Dans le Caucase, le Kremlin a empêché l'Iran de mettre en place des infrastructures qui lui auraient permis de concurrencer la Russie pour l'approvisionnement en gaz de l'Europe. +Pour barrer l'accès à l'Iran, la Russie a en fait racheté la quasi totalité du secteur gazier arménien, alors que son soutien au programme nucléaire iranien contribue à l'isolement de l'Iran et bloque les investissements occidentaux dont le pays aurait besoin pour devenir compétitif au plan des exportations de gaz. +La position dominante de Gazprom est renforcée par des mesures coordonnées par le Kremlin pour établir son influence sur des marchés comme l'Espagne et l'Italie. +En échange de contrats avec des fournisseurs concurrents, comme l'Algérie, la Russie leur propose des contrats d'armement avantageux et des taux de crédit préférentiels. +Dans d'autres cas, le Kremlin prend des mesures punitives, en coupant par exemple le gaz à la Lituanie après que le gouvernement ait vendu la raffinerie de Mazeikiu Nafta à une société polonaise, ou à l'Ukraine après que les électeurs aient voté pour le « mauvais » parti. +L'exemple type de la déségrégation est le cas du gazoduc Nord Stream, qui bénéficie à l'Allemagne tout en indisposant sérieusement la Pologne et les pays baltes. +Ce pipeline sous-marin coûtera trois fois le prix de la construction d'un nouveau gazoduc le long de tracés terrestres existants, fragilise la sécurité énergétique des pays à l'est de l'Allemagne et menace le fragile écosystème de la mer Baltique. +Mais en fournissant directement l'Allemagne, la Russie sera en position de couper le robinet de gaz de l'Ukraine, de la Pologne et des pays baltes sans que l'approvisionnement des pays de l'Ouest de l'Europe n'en souffre -- et le comportement récent de la Russie donne à penser que ce ne sont pas des menaces en l'air. +Mais Gazprom s'inquiète de ses capacités en amont, comme le prouve sa décision d'acheminer le gaz du gisement de Chtokman vers l'Europe au lieu de le liquéfier pour les marchés nord-américains. +Tant que Gazprom restera une société aussi opaque, l'Europe n'aura aucun moyen de savoir si son principal fournisseur investit suffisamment dans l'exploitation de réserves futures. +La bataille politique qu'a livrée le Kremlin pour obtenir le contrôle sans partage du secteur énergétique russe s'est traduite par une baisse substantielle du taux de croissance de la production russe de pétrole et de gaz. +Cette situation est un problème pour l'Europe. +Gazprom ne peut pas être un partenaire fiable pour l'Europe si la société n'investit pas dans ses infrastructures, tout en jouant un rôle de premier plan pour dépouiller les entreprises privées russes du secteur, en investissant 14 milliards de dollars dans des activités non centrales, comme les médias, et en étant gérée depuis le bureau de l'administration présidentielle. +Les lumières ne doivent pas pour autant s'éteindre en Europe. +Bruxelles doit exiger la transparence, la symétrie et l'état de droit de la part de Moscou, avec pour objectif une intégration révolutionnaire des marchés énergétiques russe et européen. +Dans le même temps, en diversifiant ses sources d'approvisionnement, en investissant massivement dans le gaz naturel liquéfié et en prenant fermement position en faveur du gazoduc Nabucco et pour des connexions entre les pays riverains de la Méditerranée, l'Europe se rapprochera de la sécurité énergétique. +L'accès en aval au marché européen que demande Gazprom est précisément l'atout de l'UE. +L'Union européenne doit clairement faire comprendre à Gazprom que son accès aux actifs en aval est conditionné à l'ouverture réciproque du secteur énergétique russe. +Il serait alors possible pour ses partenaires internationaux de respecter et de faire confiance à la Russie, qui trouverait naturellement sa place sur le marché énergétique européen. +Un libre-échange pour une croissance libre +Les choses ne vont guère mieux en Europe. +La France a porté un coup aux négociations du cycle de Doha de l'Organisation mondiale du commerce (OMC) en rejetant l'idée d'un accord pour l'agriculture. +José Manuel Barroso, président de la Commission européenne, estime que les pressions protectionnistes s'accentuent. +Quand le cycle commercial de Doha a été lancé, peu après le 11 septembre 2001, la bonne volonté internationale ne manquait pas. +Mais le désenchantement provoqué par la mondialisation et, dans certaines régions, la peur de l'immigration, se sont installés depuis. +Un récent sondage Financial Times/Harris aux États-Unis, en Allemagne, en France, au Royaume-Uni, en Italie et en Espagne dévoile que les gens ont trois fois plus tendance à trouver la mondialisation négative plutôt que positive. +Le libre-échange provoquerait une explosion du bien-être partout, et surtout dans les pays en voie de développement. +Savoir saisir ces bénéfices constituera peut-être l'un des plus grands défis de cette génération. +L'amplification d'un sentiment négatif pourrait avoir le pire résultat possible : non seulement l'échec de Doha, mais aussi l'édification de barrières douanières et migratoires. +Ces barrières persistent en grande partie parce que davantage de libéralisation génèrerait une redistribution des emplois, des revenus et des richesses, ce qui ferait craindre aux gouvernements une réduction de leurs chances de rester en place -- et de leurs propres richesses dans des pays où la corruption est florissante. +Le plus grand espoir consiste donc à remettre le cycle de Doha sur les rails. +Mais il y a une grande différence entre un résultat de piètre qualité et un autre plus complet. +En outre, l'impact à long terme du libre-échange est énorme. +Repensé en tant que valeur actuelle nette du flux des bénéfices futurs, un résultat réaliste de Doha pourrait augmenter le revenu mondial de plus de 3 000 milliards de dollars, dont 2 500 milliards iraient aux pays en développement. +En outre, les expériences réussies de réformateurs comme la Corée, la Chine, l'Inde et le Chili suggèrent que la libéralisation du commerce provoque une augmentation des taux de croissance économiques annuels de plusieurs points de pourcentage pour plusieurs années. +Éliminer les subventions et les barrières douanières signifierait que les ressources pourraient être utilisées de manière plus efficace, ce qui permettrait de bénéficier d'une plus grande marge de manœuvre pour réduire les inégalités et la pauvreté, les tensions sociales, la dégradation environnementale, la malnutrition et les maladies. +Il y aurait des coûts, bien sûr. +Les entreprises et les travailleurs auraient un travail d'ajustement à faire lorsque des réformes forceraient certaines industries à faire des coupes ou à fermer, et en laisseraient d'autres s'agrandir. +En outre, il faut considérer aussi les coûts sociaux. +Pourtant, les bénéfices d'un cycle de Doha fructueux sont de 45 à 440 fois supérieurs à ces coûts. +Il s'agit clairement d'un investissement extrêmement solide. +Une "alternative" à Doha, par laquelle d'autre pays à hauts revenus suivraient la proposition de l'Union européenne d'un accès hors taxes aux produits de pays moins avancés (PMA) et de petits pays d'Afrique, des Caraïbes et du Pacifique (ACP), n'impliquerait qu'une minuscule fraction des gains mondiaux provenant de la réforme du commerce. +En outre, cela pourrait bien porter préjudice à d'autres pays pauvres -- aggravant ainsi les inégalités -- en encourageant l'allocation des ressources à des activités qui perdent leur compétitivité après l'accord de l'OMC suivant. +La révolution militaire de l'Europe +BRUXELLES - La création de l'euro est une innovation révolutionnaire pour l'Union Européenne qui -- de par sa nature- évolue lentement et par palliers, et cette création a fait l'objet de débats à travers tout le continent et même au-delà. +Au contraire, les plans concernant une politique commune de défense de l'UE n'avaient pas suscité le même intérêt jusqu'à présent, mais ce n'est plus vrai aujourd'hui. +Tout en rappelant l'efficacité de l'OTAN, les Américains demandent avec de plus en plus d'insistance quelle serait l'utilité d'une politique commune de défense. +Les Européens sont souvent mal à l'aise pour répondre, en partie parce qu'il n'y a pas de réponse unique. +Pour ceux qui croient en une Europe forte, une coopération étroite dans le domaine de la défense est de toute évidence souhaitable. +Pour les pragmatiques, les membres de l'UE gagneront en efficacité à avoir une politique étrangère et de sécurité commune. +Ils soulignent que le nombre croissant des crises à l'extérieur de l'UE, dans les Balkans, au Moyen-Orient, en Afrique et ailleurs requiert une réponse concertée. +Un troisième argument est avancé par certains gaullistes français et par une partie importante de la gauche de l'UE : l'Europe a besoin d'une politique étrangère et de sécurité commune pour résister à l'hégémonie américaine. +Cet anti-américanisme reste cependant minoritaire. +Les avocats d'une politique étrangère et de sécurité commune considèrent qu'une Europe capable d'assurer elle-même sa défense constitue un meilleur partenaire pour les USA. +Aujourd'hui, doutes et confusion sont soulevés par le rôle incertain donné à la Force de Réaction Rapide, étape-clé dans la construction d'une politique étrangère et de sécurité commune. +La Force de Réaction Rapide doit, dit-on, être capable d'effectuer ce que l'on appelle "les missions de Petersberg". +Mais "le rétablissement de la paix", qui est l'une de ces missions, peut recouvrir n'importe quoi : de l'opération Alba en 1997 au cours de laquelle l'Italie a mené une force européenne de 6000 hommes en Albanie pour rétablir l'ordre, à une offensive contre les rebelles du Sierra Léone qui s'opposaient aux forces de maintien de la paix de l'ONU, en passant par des conflits du type guerre du Golfe. +Toutefois, étant donné que tous les gouvernements de l'UE savent qu'à court terme l'Europe ne peut réaliser que des opérations militaires de faible envergure, il n'est guère utile de définir pour l'instant le rôle de la Force de Réaction Rapide. +L'Amérique devrait se réjouir du sens des responsabilités accru et de l'importance croissante de l'Europe, symbolisés par la Force de Réaction Rapide. +Il est vrai que le rôle de l'Amérique au sein de l'OTAN - dispositif astucieux qui lui permet, avec la bénédiction de l'Europe, de maintenir son influence à travers tout le continent - ira sans doute en diminuant. +L'OTAN deviendra alors un cadre dans lequel deux grandes puissances, et non pas une grande puissance et 18 petits pays, coordonneront leurs politiques et les réponses apportées aux crises. +Les bénéfices l'emportent sur l'inconvénient que représente une réduction de marge de manœuvre pour l'Amérique. +Un potentiel européen plus fort permettrait à l'Amérique de se décharger sur ses alliés de la gestion des multiples foyers d'instabilité à l'intérieur de l'Europe et dans son voisinage. +De plus, si une défense commune vient s'ajouter à l'acquis déjà existant que les candidats à l'UE doivent intégrer, la pression en faveur d'un élargissement de l'OTAN ira en diminuant. +Une UE qui s'implique pour sa propre défense, même si elle n'offre pas les mêmes garanties formelles que l'OTAN, ouvre aux pays candidats la perspective d'appartenir à une véritable communauté de défense. +Plus fondamentalement, la création d'une Europe entière et libre, mais également unie, constitue le plus grand succès de l'Amérique en politique étrangère des cinquante dernières années. +Afin que cet objectif soit entièrement réalisé, l'UE doit encore devenir un acteur de la scène internationale à part entière. +Ainsi, la politique étrangère et de sécurité commune en Europe représente avant tout un défi psychologique lancé à l'Amérique. +En Europe, pourtant, ce défi est une question de volonté et de leadership politique, ce que l'on ne peut attendre d'une commission. +Nous proposons ici un certain nombre de réformes institutionnelles et politiques, dont : +· Fusionner les fonctions de Chris Patten, le Commissaire aux relations extérieures, et de Javier Solana, le Haut représentant pour la politique étrangère et de sécurité commune ; ceci pour que l'Union Européenne parle d'une seule voix. +· Renforcer le statut du nouveau Comité politique et de sécurité basé à Bruxelles de manière à rapprocher le point de vue intergouvernemental et celui de la Commission en matière de politique étrangère. +· Avoir comme objectif au niveau européen que tous les Etats membres consacrent au moins 2% de leur PIB à la défense et un quart de leur budget de défense à l'achat d'armes et à la recherche et au développement. +· Créer un budget de défense spécifique pour l'UE, de manière à financer les missions, les capacités militaires et les programmes d'armement communs. +· Constituer au sein du secrétariat du Conseil des ministres un groupe de surveillance en matière de forces militaires ; il servira à coordonner les pressions sur les gouvernements afin qu'ils améliorent leurs capacités militaires. +Le pouvoir de mettre sur pied des coalitions, de veiller à ce que les gouvernements respectent les délais impartis, d'apporter une aide ou d'assumer la responsabilité d'un échec doit venir de la source traditionnelle de l'autorité, l'Etat-Nation. +Comme aucun Etat au sein de l'UE ne peut remplir seul le rôle dominant que jouait l'Amérique au sein de l'OTAN durant la guerre froide, c'est à l'Angleterre, à la France et à l'Allemagne de remplir ce rôle en Europe. +Que l'un de ces pays s'oppose à l'action commune, et c'est la cohésion et la crédibilité des actions entreprises par l'UE qui sera détruite. +Mais si ces trois pays sont décidés à aller de l'avant, ils incarneront la volonté des autres membres de l'UE, ou en tout cas de la majorité d'entre eux. +L'appartenance à ce groupe des Trois ne confère pas le pouvoir de commander, mais la responsabilité de prendre des initiatives. +En cas de crise, si ces trois pays ne parviennent pas à s'entendre, l'Europe restera sur le bord du chemin ; mais s'ils sont unis dans l'action, c'est l'Europe toute entière qui sera impliquée. +L'Angleterre, la France et l'Allemagne doivent commencer à penser l'UE comme un tout dont ils portent la plus lourde part et dont ils assument la plupart des risques. +Leur leadership devra être informel, transparent et exhaustif. +Malheureusement, à l'heure actuelle aucun de ces pays n'est prêt à tenir ce rôle peu enviable, bien qu'inévitable. +Leur engagement dans la révolution militaire de l'Europe devrait cependant les pousser à l'assumer. +Si nous n'agissons pas maintenant, nous le payerons plus tard -- sur le plan financier comme sur le plan humanitaire. +Le recul des progrès socio-économiques que l'ensemble du continent a accompli lors de la dernière décennie nous met tous en position de perdant. +D'une part, les marchés en expansion, et les possibilités d'investissement qui les accompagnent, pourraient s'évaporer. +Toute chute d'un point du taux de croissance a des retombées sociales directes, sur la qualité de la nutrition, le taux de mortalité infantile ou la présence à l'école. +Les personnes repoussées dans la pauvreté sont autant de pas qui nous éloignent des Objectifs du millénaire pour le développement. +C'est pour toutes ces raisons que l'engagement et le soutien continus de tous les partenaires de l'Afrique, notamment des pays du G8, sont vitaux. +Comme l'indique le rapport DATA de l'organisme non gouvernemental de soutien à l'Afrique ONE, nombre de donateurs ont honoré leur promesse en dépit du ralentissement économique. +Pourquoi il faut juger Charles Taylor +Nous avons déposé un recours devant la Haute cour fédérale du Nigeria en mai dernier, pour qu'elle examine la décision du Président Olusegun Obasanjo d'accorder le statut de réfugié à l'ancien président du Liberia, Charles Taylor, inculpé en Sierra Leone pour crimes de guerre par un tribunal spécial établi en collaboration avec les Nations Unies. +Nous faisons partie des nombreuses victimes de Taylor. +Il y a sept ans, nous étions deux jeunes hommes d'affaires nigérians, faisant commerce de matériel électronique et d'équipement médical sur la côte ouest de l'Afrique. +Nous achetions nos marchandises au Nigeria et les exportions vers le Liberia et la Sierra Leone. +Pendant l'été 1997, David se trouvait à Monrovia au moment de l'investiture de Charles Taylor, devenu président du Liberia après huit années de guerre civile. +Un an plus tard, l'Onu et la Communauté économique des Etats d'Afrique de l'Ouest déployaient une force de maintien de la paix en Sierra Leone, pour faire respecter un cessez-le-feu dans ce pays voisin ravagé par un conflit de près d'une décennie, à l'initiative des rebelles du Front révolutionnaire uni (RUF, Revolutionary United Front). +A l'automne 1998, nous nous sommes rendus séparément pour affaires à Freetown, la capitale du Sierra Leone. +Lors de séjours précédents, nous avions entendu parler d'atrocités - amputations, viols et mutilations de civils - commises par les rebelles du RUF dans les campagnes. +Mais la présence de la communauté internationale nous a rassurés et nous avons pensé que nous pouvions continuer à faire affaire dans le pays en sécurité. +Notre gouvernement et nos amis sierra-léonais étaient aussi de cet avis. +Nous avons prévu de passer Noël et le Jour de l'An à Freetown avant de rentrer au Nigeria au début de l'année 1999. +Puis tout a basculé. +Peu avant Noël, des rumeurs d'une attaque imminente des rebelles ont atteint la capitale sierra-léonaise. +Des personnes déplacées ont commencé à arriver, d'abord quelques-unes, puis une multitude. +Nous avons essayé de modifier nos billets pour rentrer au Nigeria, mais tous les avions étaient complets. +Le 6 janvier, les rebelles ont pris possession de la maison où nous habitions à Freetown. +Nous étions neuf Nigérians. +Les rebelles - plus de cent, beaucoup de jeunes adolescents - ont encerclé le bâtiment, ont mis le feu, et ont ordonné à tous les Nigérians de sortir. +Leur commandant, qui parlait avec un net accent libérien, se faisait appeler Captain Goldteeth. +Quand nous avons essayé de nous échapper, les rebelles nous ont capturés. +Captain Goldteeth nous a fait amener à une gare d'autobus proche de notre résidence, où plus de 80 autres captifs étaient rassemblés. +Il a déclaré qu'il avait ordre - du Palais présidentiel de Monrovia - d'envoyer un message au Nigeria, le principal pays contributeur de troupes et de financement pour l'Ecomog, la force régionale de maintien de la paix. +Captain Goldteeth a demandé à son " officier coupeur " de séparer les Nigérians des autres. +Puis ils se sont mis à nous amputer. +Leur première victime a été le jeune frère d'Emmanuel, Benedict Egbuna. +Ils lui ont coupé les mains au-dessous du coude, et l'ont laissé se vider de son sang devant son épouse enceinte, Zainab, et nous, puis l'ont balancé derrière la maison. +Beaucoup de nos meilleurs amis ont également été mutilés et tués. +Puis est venu notre tour. +La machette a pénétré la chair et les os d'Emmanuel, mais sans trancher complètement. +Les rebelles l'ont jeté dans le cimetière, les mains ainsi suspendues à ses bras. +Ensuite, ils ont coupé les bras de David puis lui ont mis le feu. +Nous ne savons pas comment nous avons survécu à ce supplice. +Le fils de Benedict Egbuna, Benedict Jr, né cinq mois après le carnage, a aujourd'hui cinq ans. Sa présence est un réconfort pour nous et pour tous ceux qui ont connu son père. +Un jour, il se tournera vers nous pour reconstituer les souvenirs de celui qu'il ne connaîtra jamais. +Plus tard, Benedict Jr nous demandera certainement ce qui est arrivé aux responsables de la mort de son père. +Que lui dirons-nous ? +Il est de notre devoir de demander justice pour les victimes des crimes de Charles Taylor. +Le statut de réfugié est une protection humanitaire. +Le Nigeria ne doit pas permettre qu'un tyran s'en serve pour échapper à la justice. +La Turquie, l'Europe et la sécurité au Moyen-Orient +De nombreux facteurs ont contribués au rejet par les Français et les Néerlandais de la proposition de traité constitutionnel de l'Union européenne. +Un des facteurs, généralement tu, est la peur de l'entrée de la Turquie dans l'Union. +Cette envie d'appartenance a cependant déjà transformé la Turquie. +Pour se préparer à l'accession à l'Union européenne, la Turquie a entrepris de vastes et sérieuses réformes légales, politiques et économiques. +Les bureaucrates turcs, les hommes politiques et les citoyens ont travaillé à l'unisson pour répondre aux critères de Copenhague pour l'entrée dans l'Union européenne et toléré les difficultés engendrées par les programmes d'ajustement structurels réclamés par le FMI. +Le futur processus d'admission sera encore plus difficile mais le peuple turc est fermement résolu à relever le défi. +La transformation de la Turquie a déjà permis de mettre fin aux agissements sécuritaires que l'appareil d'État de type Guerre froide entreprenait depuis plus d'un demi-siècle et a modifié les cadres politiques intérieurs et extérieurs du pays. +En se modernisant et en se démocratisant de l'intérieur, la classe politique turque a gagné la confiance nécessaire à sa capacité à mener des politiques régionales réussies. +Il en résulte que les dirigeants turcs sont maintenant prêts à mettre en place une diplomatie active au Moyen-Orient dans un effort pour maîtriser les problèmes rencontrés avec les pays voisins. +Il est de première importance que la Turquie émerge comme modèle pour tous ceux qui au Moyen-Orient cherchent à se réformer et à se moderniser. +Cette influence n'implique aucunement une relation hégémonique mais plutôt une alternative à la réforme et au développement économique que d'autres pays principalement musulmans pourraient choisir. +L'Union européenne est associée avec des idéaux de paix, de démocratie et de développement économique tandis que le Moyen-Orient se caractérise par son instabilité, son autoritarisme et son retard économique. +Le processus de réforme de la Turquie montre que ces défauts ne représentent pas l'inévitable destin des pays de la région. +Dans ce sens, la Syrie et l'Iran apprécient le processus d'adhésion à l'Union européenne de la Turquie. +Ils considèrent l'appartenance européenne de la Turquie comme l'occasion de développer leurs propres relations avec l'Union européenne. +La Turquie démontre également que les prétendus clash entre la démocratie et la sécurité, et donc entre la démocratie et l'islam en fait, sont réconciliables. +D'autres États musulmans semblent comprendre ce phénomène : récemment, pour la première fois, un Turc fut élu par vote majoritaire à la fonction de Secrétaire général de l'Organisation des pays islamiques. +La seconde contribution turque d'importance vient de ses engagements diplomatiques constructifs dans la région. +Le gouvernement turc a adopté un rôle actif dans la promotion de la paix et a réaménagé ses politiques envers un certain nombre de questions régionales. +Le Premier ministre turc, Tayyip Erdogan, s'est éloigné par exemple de la traditionnelle attitude critique envers Israël et ses politiques les plus va-t-en guerre envers les territoires occupés sans pour autant rompre ses relations diplomatiques avec Israël. +Lors d'une visite officielle en Israël du ministre des affaires étrangères turc, Abdullah Gul, en janvier dernier, de sérieuses discussions ont été menées sur la possibilité pour la Turquie de jouer un rôle médiateur entre Israël et les Palestiniens ainsi que pour les futures négociations israélo-syriennes. +La Turquie ne s'est bien sûr pas jointe aux forces d'occupation de la coalition américaine en Irak mais a fait de gros efforts pour mobiliser un soutien régional pour un État irakien stable. +En effet, les politiciens turcs ont régulièrement réuni les pays frontaliers de l'Irak pour des débats sur l'avenir de la région. +Le Conseil de sécurité des Nations unies a pris ces réunions au sérieux et a demandé une coopération régionale plus prononcée sur la question irakienne. +L'engagement constructif de la Turquie avec l'Union européenne crée un certain sentiment de confiance en occident -- chez les leaders occidentaux du moins, si ce n'est le cas de la population générale -- envers ses initiatives régionales La Turquie réussit par ailleurs à maintenir des distances égales entre l'Union européenne et les États-Unis. +Ainsi, par exemple, la Turquie est plus proche de l'Union européenne dans sa politique envers l'Irak et la Palestine et pourtant suit une ligne similaire à celle des États-Unis envers les Balkans et Chypres. +L'histoire récente montre qu'une grande variété de pouvoirs régionaux sont nés au Moyen-Orient : l'Iran du Shah et l'Égypte de Nasser, par exemple. +L'arrivée de la Turquie comme puissance régionale est différente dans la mesure où sa structure démocratique en fait un acteur actif de la paix plutôt qu'un fier-à-bras local. +C'est là un rôle aussi prometteur que nécessaire pour une région qui a besoin d'une force locale dynamique poussant à la réforme, la transformation et la paix. +L'expérience turque montre qu'une véritable sécurité dans la région requiert stabilité interne et paix sociale. +Avec un peu de chance, ce modèle peut être exporté dans tout le monde musulman. +La résilience du Brésil +"La crise des subprimes n'a pas encore atteint les plages de Copacabana," a proclamé il y a peu le ministre des Finances Guido Mantega. +"Nous nous débarrassons des déséquilibres et, en fait, nous réduisons progressivement notre dépendance aux entrées de devises -- c'est capital." +En effet, le gouvernement a souligné le fait que le Brésil sera encore plus protégé puisque les efforts de réduction des dépenses diminuent la dépendance aux flux de capitaux extérieurs. +Mais la capacité du Brésil à échapper aux conséquences d'une récession aux États-Unis dépend de l'échelle de la crise. +Les hauts fonctionnaires brésiliens ont quelques raisons de se targuer que la plus grande économie d'Amérique latine est peut-être plus forte que jamais : les indicateurs macroéconomiques sont en meilleure forme, les ratios de solvabilité se sont améliorés, et l'association d'exportations, d'investissements et de demande intérieure a stimulé l'activité économique. +Au cours des dernières années d'abondance des liquidités mondiales, le real est devenu plus fort et la banque centrale a pu engranger des devises étrangères, pour constituer un coussin qui se montait environ à 185 milliards de dollars fin janvier, montant suffisant pour couvrir entièrement la dette extérieure pour la première fois de l'histoire. +Néanmoins, les hauts responsables du gouvernement admettent, en privé, que l'impact d'une future récession américaine ne serait pas insignifiant, car le Brésil n'est pas complètement isolé des événements extérieurs. +Au-delà de la crise des subprimes, les inquiétudes que suscite la stabilité du système financier des États-Unis impliquent des conséquences graves pour l'économie mondiale. +En outre, une récession ou un ralentissement aux États-Unis et en Europe frapperait les exportations brésiliennes, et réduirait considérablement l'excédent commercial du Brésil. +En fait, bien que l'importance commerciale de l'Amérique ait diminué, puisqu'elle ne représentait que 16 % des exportations brésiliennes l'année dernière, le commerce et la croissance du Brésil vont de pair avec les États-Unis et l'Europe ; on ne les a jamais vus se découpler. +En même temps, un ralentissement prolongé aux États-Unis pourrait réduire la demande étrangère des autres marchés. +Le scénario pourrait empirer si l'on assistait à une dégradation des prix des matières premières -- l'une des menaces les plus graves pesant sur le Brésil en cas de dépression économique mondiale. +La décélération en Inde et en Chine provoquerait de nouvelles réductions des prix des matières premières, affaiblissant les marchés dont la solidité est à la base de la forte performance commerciale du Brésil des dernières années. +Dans tous les cas, la banque centrale a déjà projeté la disparition de l'excédent commercial du Brésil cette année, ainsi même qu'un petit déficit. +Heureusement, la bourse brésilienne a moins pâti que celles d'autres marchés émergents des turbulences financières aux États-Unis et ailleurs. +Récemment, la bourse est devenue la première source de financement des entreprises brésiliennes, devant la Banque nationale pour le développement, détenue par l'État, qui accorde des prêts à des taux en deçà de ceux du marché. +Mais les marchés financiers du Brésil sont bien plus sensibles que le commerce aux perturbations internationales, et les flux monétaires pourraient diminuer à long terme. +En effet, si l'économie mondiale continue de se détériorer, les investissements de portefeuilles pourraient s'accélérer, réduire les financements disponibles pour les entreprises brésiliennes et finir par affecter leur capacité d'investissement. +Pour l'instant, des études internes conduites par l'Association des industries de São Paulo affirment que la confiance reste solide dans le secteur industriel, et les investissements directs à l'étranger vers l'intérieur ont atteint le record de 34,6 milliards de dollars l'année dernière. +Plein d'optimisme, les hauts responsables brésiliens pensent que le Programme gouvernemental d'accélération de la croissance servira de vaccin contre les turbulences mondiales et aidera à réduire les goulets d'étranglement dans l'économie. +Les droits de l'homme comme un tout +C'est maintenant à l'Assemblée générale des Nations Unies de prononcer l'approbation finale du Protocole. En cas d'adoption, cet instrument peut faire une réelle différence dans la vie de ceux qu'on laisse souvent languir en marge de la société et à qui l'on refuse des droits économiques, sociaux et culturels, tels que l'accès à une alimentation convenable, aux services de santé, au logement et à l'éducation.   +Il y a soixante ans, la Déclaration universelle des droits de l'homme disposait qu'il est indispensable pour avoir une vie digne de ne pas subir la terreur ni la misère. Elle associait sans équivoque l'indigence à la discrimination et à l'inégalité d'accès aux chances et aux ressources. Pour ses concepteurs, la stigmatisation sociale et culturelle entravait la participation pleine et entière à la vie publique, la capacité d'influer sur les politiques et l'obtention de la justice. +Cette vision des choses unifiée a été mise à mal au lendemain de la Seconde Guerre mondiale par la logique de blocs géopolitiques en concurrence idéologique luttant pour le pouvoir et l'influence. Les droits de l'homme ont aussi été affectés par la bipolarité de la Guerre froide. Pour les pays à l'économie planifiée, la nécessité de survie supplantait l'aspiration à la liberté ; et l'accès aux éléments essentiels compris dans l'ensemble de droits économiques, sociaux et culturels devait avoir priorité dans les politiques et la pratique. +De leur côté, les gouvernements occidentaux se méfiaient de cette perspective qui, selon eux, risquait de faire obstacle aux pratiques d'économie de marché, d'imposer des obligations financières excessivement lourdes ou les deux. Par conséquent, ils préférèrent donner la priorité aux droits civils et politiques qu'ils considéraient comme indissociables de la démocratie. +Dans ce contexte, il était impossible de s'accorder sur un instrument des droits de l'homme unique et exhaustif donnant un effet holistique aux principes de la Déclaration. Il n'est pas surprenant d'avoir attendu près de vingt ans avant que les États membres des Nations Unies n'adoptent simultanément deux traités séparés  -- le Pacte international relatif aux droits civils et politiques et le Pacte international relatif aux droits économiques, sociaux et culturels  -- qui englobent les deux ensembles distincts de droits. Toutefois, seul le premier traité a été pourvu d'un mécanisme visant à contrôler sa mise en oeuvre. +En pratique, cette divergence a créé une catégorie de droits « alpha »  -- civils et politiques  -- devenus prioritaires dans les programmes de politiques étrangère et intérieure des pays riches et influents. Les droits économiques, sociaux et culturels étaient quant à eux souvent remisés en fin de liste des tâches à accomplir aux niveaux national et international. +Pour remédier à ce déséquilibre entre les deux ensembles de droits, le nouveau protocole prévoit pour le Pacte relatif aux droits économiques, sociaux et culturels un système de signalement des violations, appelé « mécanisme de réclamation », identique à ceux créés pour d'autres traités de droits l'homme fondamentaux. Cette procédure peut sembler opaque, pourtant, en déposant une réclamation conformément aux dispositions du Protocole, les victimes peuvent désormais signaler les abus que leurs gouvernements commettent, manquent de faire cesser, ignorent ou ne corrigent pas. En somme, le Protocole permet aux individus qui seraient autrement isolés et impuissants de porter leur détresse à la connaissance de la communauté internationale. +Après son adoption par l'Assemblée générale de l'ONU, le Protocole entrera en vigueur lorsqu'un seuil nécessaire d'États membres l'aura ratifié. Cette évolution contribuera à l'élaboration de programmes axés sur les droits de l'homme et de politiques consolidant les libertés et le bien-être des individus et de leurs communautés. +Le Protocole ne sera pas adopté par tous les pays. Certains préféreront éviter tout renforcement des droits économiques, sociaux et culturels et chercheront à maintenir le statu quo. Pourtant, il serait plus judicieux et plus juste d'embrasser la conception de la Déclaration universelle des droits de l'homme et de promouvoir sans ambiguïté l'idée que la dignité humaine exige le respect de garanties tout aussi vitales et interdépendantes contre la terreur et la misère. +Démocratie en Amérique latine +Je suis un partisan convaincu du libre-échange et j'espère voir la proposition de "Zone de libre-échange des Amériques" ("Free Trade Area of the Americas") aboutir, comme prévu, en 2005. +Pourtant, je trouve déconcertant que les questions économiques aient éclipsé le débat sur le renforcement et la stabilisation de la démocratie et du éveloppement humain en Amérique latine. +Il reste beaucoup à faire dans ces domaines-là. +Si on les néglige, pauvreté et gouvernance déplorable éclipseront tout notre succès à promouvoir la croissance économique. +Dans une zone où 12% des adultes sont analphabètes et plus d'un cinquième de la population n'a pas accès à l'eau potable, mettre uniquement l'accent sur les questions économiques ne suffit plus. +Dans les pays d'Amérique centrale déchirés par les guerres des années 70 et 80, des accords de paix ont été signés et des institutions démocratiques sont maintenant en place. +Cependant, les armes utilisées pendant ces guerres sont encore entre les mains d'anciens soldats et rebelles, et elles se revendent souvent dans la rue. +Ces armes des guerres passées participent du taux de violente criminalité si épouvantable qu'aujourd'hui de nombreux habitants d'Amérique centrale craignent plus pour leur sécurité qu'à l'époque des guerres civiles et des rébellions. +Ainsi, bien que nous n'ayons assisté à aucune tentative directe de coup d'État récemment, nous vivons encore dans un relatif climat de menace et de comportement rebelle, de la part de certains militaires d'Amérique centrale, inacceptables pour des démocraties accomplies. +Ainsi en est-il des pressions exercées sur le président chilien, Ricardo Lagos, par exemple, pour lui faire dépenser des sommes d'argent scandaleuses dans l'achat d'avions de combat sophistiqués pour "moderniser" l'armée de l'air chilienne. +Tant que les chefs militaires continueront à détenir un pouvoir excessif au sein de leurs gouvernements, la priorité des dépenses ne sera pas au diapason des besoins du commun des mortels, et la démocratie sera toujours menacée par l'épée de Damoclès du coup d'État potentiel. +Tout comme la tyrannie (Caudillismo), un autre vieux fantôme continue de hanter ce continent : la pauvreté. +Bien que l'Afrique et l'Asie du sud souffrent de taux de pauvreté plus élevés, l'Amérique latine présente le terrible privilège de détenir l'inégalité économique et sociale la plus élevée au sein de chacune de ses sociétés. +Au lieu de trouver les moyens de remédier à cela, nous continuons à condamner nos enfants à la pauvreté en ne réussissant pas à leur donner une éducation décente. +De nombreux pays sont allés trop loin dans les programmes de réforme fiscale au cours des années 80 et 90, tailladant non seulement dans les dépenses publiques coûteuses mais aussi dans les dépenses d'éducation et de santé. +Sans ces éléments de base fondamentaux, il sera impossible d'assurer le partage à grande échelle des bénéfices de la croissance. +Les classes aisées d'Amérique centrale ne remplissent pas leur rôle. +Tandis que les pays européens tels que la Suède ou la France recueillent plus de 45% de leur produit intérieur brut en taxes, le Guatemala en recueille difficilement 9%. +Le principe démocratique de l'égalité a encore beaucoup de chemin à faire pour s'enraciner profondément chez nous. +L'élitisme, d'autre part, reste profondément bien ancré dans nos institutions et nos cultures. +Toute tradition n'est peut-être pas bonne à sauvegarder. +La tempête avant le calme ! +Les marchés financiers ont peut-être estimé que le point de vue de la Fed sur l'inflation aux USA était représentatif de celui des autres banques centrales, d'autant que la BCE a pris la décision le 2 octobre de ne pas toucher aux taux d'intérêt. +Aujourd'hui, en matière d'inflation les USA font face au retournement de tendance le plus important qu'ils aient connu depuis 20 ans. +Certes, on sait qu'il est très difficile de prévoir l'inflation. +L'économie mondiale a connu de grands changements structurels (entre autre la mondialisation commerciale et financière) et il en a été de même au sein de chaque pays (avec le déclin des syndicats par exemple). +La politique monétaire elle-même s'est mise à accorder beaucoup plus d'importance à l'inflation. +Par ailleurs, les chocs provoqués par la hausse du prix de l'énergie et de l'alimentation peuvent être forts et essentiellement imprévisibles, tandis que les prix tendent à varier rapidement en cas de grosse secousse. +C'est pourquoi la plupart des modèles prévisionnels des banques centrales attribuent-ils une grande importance à l'inflation récente. +Cette approche est efficace, sauf lors d'un retournement de tendance, car ces modèles ne prennent pas en compte des paramètres sous-jacents majeurs ou importants à long terme. +L'inversion de tendance à laquelle sont confrontés les USA et le reste du monde est sans ambiguïté. +La production mondiale n'a probablement jamais chuté aussi rapidement depuis la Deuxième Guerre mondiale, sauf peut-être en 1974-1975. +Dans ce contexte, la capacité de production est trop importante et le prix des marchandises baisse. +Il est peu probable que la Chine ou d'autres marchés émergents parviennent à stimuler assez rapidement la consommation intérieure. +Et avec une surcapacité de production allant croissant, l'investissement dans l'appareil industriel risque de diminuer encore, avec des conséquences graves pour le PIB. +Aussi, la demande qui était conduite par la croissance des marchés émergents va chuter fortement, diminuant ainsi l'inflation mondiale. +Finalement, la baisse des prix et la baisse de l'inflation sera l'équivalent d'une énorme baisse d'impôt pour les ménages, ce qui permettra de baisser encore davantage les taux d'intérêt avec pour effet de stabiliser l'activité économique. +Paradoxalement, évitant des dommages supplémentaires à l'économie des pays industriels, maintenant plus le prix du pétrole baisse, plus courte sera la période de déflation. +Le prix du pétrole et de la nourriture étant fortement à la baisse -- une baisse qui est appelée à continuer - et le chômage à la hausse, d'après nos modèles, l'inflation des prix à la consommation, notamment aux USA, devrait baisser à un taux record au cours des prochains 6 à 12 mois. +Si certains observateurs s'inquiètent encore du risque d'inflation, d'autres craignent que le mécanisme monétaire ne fonctionne plus comme à l'habitude et qu'à l'image du Japon, les USA traversent une "décennie perdue", ou encore que les pays industriels soient frappés par une crise analogue à celle des années 1930. +Le débat en cours est de savoir si la politique monétaire peut éviter l'inflation et si l'on va atteindre la limite d'un taux d'intérêt égal à zéro. +Cette limite vient de ce que les taux d'intérêt nominaux ne peuvent devenir négatifs. +Mais s'ils restent positifs alors que l'inflation est négative, les taux d'intérêt réels risquent de devenir trop élevés pour une économie en récession, ce qui aggrave et prolonge cette dernière. +Une lecture erronée de l'expérience japonaise a conduit à des mesures de protection excessives contre le risque de perte extrême ( tail risk ) lié à la déflation. +Paradoxalement, cela a alimenté le crédit et la bulle de l'immobilier dont l'éclatement a provoqué la récession actuelle qui pourrait, elle, conduire à la déflation. +Des différences de structure importantes existent entre les économies japonaises et américaines, notamment l'énorme volume de liquidité détenu par les ménages japonais qui tend à diminuer la consommation quand les taux d'intérêt baissent. +Du fait de ces différences et des leçons de la "décennie perdue" du Japon quant au besoin de refinancer le système bancaire, il est peu probable qu'il y ait une décennie perdue aux USA. +C'est pourquoi, à l'exception des USA et du Japon où les taux sont proches de zéro, les banques centrales peuvent sans risque en finir avec leur politique des taux d'intérêt et continuer à adopter des mesures fortes de soutien à la liquidité des marchés sans grand risque d'inflation. +Avec si peu de confiance dans le système financier et le crédit limité (en raison des préoccupations engendrées par la chute des prix dans l'immobilier) la politique des taux d'intérêt ne peut avoir les résultats habituellement escomptés. +Aussi, le consensus qui se dessine autour de la recapitalisation du système bancaire, et plus récemment sur des mesures contraires à l'orthodoxie, notamment l'achat de dettes du secteur privé était donc justifié. +Il y a deux différences majeures entre la situation des années 1930 et la situation actuelle. +Le monde industriel est aujourd'hui beaucoup plus dépendant du pétrole (essentiellement importé de l'étranger) qu'il ne l'était à cette époque. +L'explosion du prix du pétrole en termes réels a été une cause majeure de la récession actuelle, et l'inverse, la dégringolade des cours du baril sera un facteur majeur pour le redressement de l'économie. +Et il y a une autre différence cruciale : nous en savons assez aujourd'hui pour ne pas répéter les erreurs des années 1930, notamment le protectionnisme. +Le Procès de Pinochet et la dignité du Chili +La bataille juridique visant à déterminer si l'ancien dictateur chilien Augusto Pinochet était justiciable est maintenant terminée. +Après une profonde réflexion sur les rapports médicaux sur la santé de Pinochet, le juge Juan Guzmán l'a déclaré compétent pour se présenter devant le tribunal et répondre de 9 accusations de kidnapping et une accusation d'homicide. +La Cour suprême du Chili a maintenant décidé de soutenir cet acte d'accusation. +Tous ces crimes furent commis durant l'« Opération Condor », un programme qui s'étendit à toute l'Amérique latine et visant à permettre à tous les dictateurs du continent d'éliminer physiquement leurs opposants de gauche. +Le juge Guzmán a également déclaré que l'ancien dictateur n'est pas irresponsable et peut distinguer le bien du mal. +Ceci est essentiel, dans la mesure où Pinochet a tenté de nier sa compétence mentale. +Un récent « accident vasculaire » qui fut à l'origine de son admission dans un hôpital militaire où il a pu reprendre conscience et retrouver ses capacités motrices, fournira néanmoins une excuse pour demander de nouveaux examens médicaux et retarder la procédure légale entamée contre lui. +Cependant, les efforts du juge Guzmán pour traduire le dictateur en justice ne devraient pas rester isolés. +D'autres juges et d'autres corps officiels doivent continuer à faire pression sur Pinochet. +Il reste encore beaucoup à découvrir, par exemple, dans certains dossiers, notamment l'assassinat du Général Carlos Prats et de sa femme à Buenos Aires en 1974. +Ces enquêtes doivent être suivies d'actions judiciaires. +L'enquête sur la mort de l'ancien président Frei Montalva en 1980, principal opposant de la dictature, progresse mais doit être poursuivie avec plus de vigueur devant les tribunaux. +La mort de Frei implique l'appareil répressif que Pinochet et Manuel Contreras, son « bras droit », géraient chacun à leur niveau. +L'Opération Condor, l'affaire Riggs, l'affaire Frei et l'affaire Prats, et bien d'autres crimes, sont documentés dans le récent rapport sur la torture et l'emprisonnement politique préparé par la commission spéciale mise en place par le président Ricardo Lagos. +Publié 30 ans après le coup militaire qui porta Pinochet au pouvoir, ce rapport dérange les Chiliens et leur donne également un certain pouvoir. +Apparaissant invincible pendant tant d'années, la chute finale de l'ancien dictateur s'est entamée à Londres, en octobre 1998, quand des avocats espagnols, le juge espagnol Baltasar Garzón et Scotland Yard ont porté plainte contre lui. +Pinochet a répondu avec arrogance, provoquant un énorme sentiment de honte pour la jeune démocratie chilienne. +La capacité de Pinochet à échapper aux tribunaux fait du tort aux institutions militaires chiliennes et a poussé de nombreux Chiliens à s'interroger sur le degré de transition vers la démocratie réalisé par le pays. +Sans l'insistance du juge Garzón dans la poursuite de cet objectif, les poursuites contre Pinochet auraient été quasi impossibles, du fait de l'opposition puissante des Chiliens riches et au fait de l'actualité. +Les précautions excessives du gouvernement chilien, enracinées dans la peur de l'instabilité qui pourrait affecter les droits fondamentaux acquis après la dictature, ont également aidé Pinochet à échapper à la justice. +En effet, les tribunaux n'auraient pas pu rassembler le soutien public nécessaire pour se libérer de leur inertie sans l'aide apportée par M. Garzón. +Il aurait également été impossible d'attaquer Pinochet en justice sans les luttes pour les Droits de l'homme, extraordinaires d'importance, entamées par les organisations des victimes, des familles des victimes et des juristes qui, contre vents et marées, sont restés fidèles à leur cause pendant de longues années. +Peu d'organisations chiliennes ont été aussi motivées ou aussi victorieuses que celles qui se consacrent à la défense des Droits de l'homme. +Du fait de la ténacité et de la passion de Chiliens ordinaires exigeant que l'État remplisse son mandat de protection des Droits de l'homme, Pinochet s'est retrouvé devant un tribunal, et d'autres qui utilisèrent leur pouvoir pour assassiner, torturer ou exiler leurs concitoyens sont également poursuivis. +Et pourtant, nous sommes encore nombreux à nous demander si « Pinochet paiera pour ses mauvaises actions » ? +L'opinion publique internationale et l'Histoire l'ont déjà condamné. +La dignité du Chili ne tient plus qu'à un fil : à savoir si son système judiciaire parviendra à la même conclusion. +Personne ne peut être certain que Pinochet sera puni puisque le « pinochétisme » reste vivant au Chili. +De puissants défenseurs le soutiennent à l'aide de tous les moyens, pas toujours honorables, qu'ils peuvent rassembler. +Ils sont aidés en cela par le fait que certains membres du gouvernement préféreraient refermer ce chapitre de l'histoire triste des violations des Droits de l'homme plutôt que d'y apporter une conclusion. +Selon le chemin que la nation choisira de suivre, les Chiliens se réconcilieront peut-être avec leur passé. +Pour le moment, leurs opinions différentes coexistent et ils cohabitent tous de manière pacifique. +Mais les citoyens et l'État doivent regarder la vérité en face et amener devant les tribunaux les violateurs des Droits de l'homme si l'on veut que tous vivent honnêtement dans leur société et dans leur histoire. +Quand les Chiliens agiront ainsi, ils créeront les conditions d'une société plus honorable et plus digne. +Un jugement judiciaire contre Pinochet est une étape importante dans ce sens. +Pourquoi réduire les émissions de gaz à effet de serre +Stern Review Report on the Economics of Climate Change équivaut à une demande de passage à l'acte : elle explique que certains énormes coûts futurs du réchauffement climatique peuvent être évités en engageant des frais relativement modestes aujourd'hui. +Les critiques de la Stern Review ne pensent pas que des initiatives sérieuses visant à limiter les émissions de CO2 soient justifiées, car il subsiste encore de grandes incertitudes sur l'étendue des coûts du réchauffement climatique, et parce que ces coûts seront engagés dans un avenir lointain. +Cependant, je pense que la conclusion fondamentale de Stern est justifiée : il vaut bien mieux réduire les émissions de CO2 de façon substantielle que de risquer les conséquences de notre échec à agir, même si, à l'inverse de Stern, on ne tient aucun compte des incertitudes et de l'avenir. +Deux facteurs différencient le réchauffement climatique mondial des autres problèmes environnementaux. +Tout d'abord, alors que la plupart des affronts faits à la nature -- comme la pollution de l'eau, les pluies acides ou les émissions de dioxyde de souffre -- sont atténués avec une relative rapidité quand la source est nettoyée, les émissions de CO2 et de gaz traces restent dans l'atmosphère pendant des siècles. +Ainsi, la réduction des émissions aujourd'hui s'avèrera très précieuse pour l'humanité dans un avenir lointain. +Ensuite, les conséquences sont réellement à l'échelle mondiale, car les gaz à effet de serre voyagent autour du monde en quelques jours. +En conséquence, l'État-nation et ses seconds, les agents d'internalisation de ces conséquences, voient leurs capacités à y remédier limitées (cependant, étant donné que les États-Unis contribuent à hauteur de 25 % environ des émissions mondiales de CO2, leur politique pourrait faire une grande différence.) +Ainsi, le réchauffement climatique mondial est un (mauvais) bien public par excellence. +L'analyse coûts-bénéfices est un outil primordial pour décider s'il est justifié d'en changer le cours par le biais de politiques de réductions. +Deux aspects de ce calcul sont critiques. +Tout d'abord, il faut supposer que les individus préfèrent éviter le risque. +C'est-à-dire qu'une conséquence incertaine vaut moins que la moyenne des conséquences. +Comme les résultats possibles du réchauffement climatique en l'absence de réductions sont très incertains, bien que sûrement négatifs, les pertes incertaines devraient être considérées comme équivalentes à une seule perte plus importante que celle à laquelle on s'attend. +Le second aspect critique concerne la façon de traiter les conséquences futures par rapport à celles d'aujourd'hui -- une question qui a attiré l'attention de philosophes autant que d'économistes. +Dans quelle mesure les impacts futurs -- particulièrement les pertes de consommation future -- doivent-ils être ignorés aujourd'hui ? +Le taux d'escompte de la consommation doit expliquer la possibilité que, à mesure que la consommation augmente, l'unité marginale de consommation soit considérée comme ayant moins de valeur sociale. +C'est analogue à l'idée de diminuer l'utilité marginale privée de la consommation privée, et relativement peu sujet à polémique, bien que les chercheurs ne s'accordent pas sur son ampleur. +Le désaccord est encore plus grand sur la quantité d'escompte du futur simplement parce que c'est l'avenir, même si les générations futures ne sont pas mieux loties que nous. +Alors que la Stern Review suit la tradition des économistes britanniques et de nombreux philosophes contre l'idée d'escompte de l'avenir pur, la plupart des économistes estiment que la préférence temporelle pure est évidente. +Quoi qu'il en soit, les arguments en faveur d'une limitation volontaire des émissions de CO2 (pour les stabiliser par exemple à environ 550 ppm) sont suffisamment forts pour ne pas être ébranlés par cette querelle. +Considérons certains chiffres de la Stern Review concernant les futurs bénéfices de la limitation de la concentrations des gaz à effet de serre sous 550 ppm, ainsi que ce qu'il en coûtera. +Les bénéfices sont les dégâts ainsi évités, qui comprennent à la fois les dommages commerciaux et non-commerciaux, dont les impacts sanitaires et écologiques. +En suivant une politique "immobiliste", d'ici 2200, les pertes de PIB auront une valeur estimée à 13,8 %, mais avec un degré d'incertitude qui rend la perte attendue équivalente à une certaine perte d'environ 20%. +Étant donné que le taux de base de la croissance économique (avant le calcul de l'effet du réchauffement climatique) était considéré comme 1,3 % par an, une perte de 20 % en 2200 équivaut à réduire le taux de croissance annuel à 1.2 %. +En d'autres termes, les bénéfices de la réduction d'émission de gaz à effet de serre peuvent être représentés comme l'augmentation du taux de croissance annuel entre aujourd'hui et 2200 de 1,2% à 1,3%. +En ce qui concerne le coût de la stabilisation, les estimations de la Stern Review varient de 3,4 % du PIB à -3,9 % (puisque économiser l'énergie réduit les coûts énergétiques, les estimations pour ces derniers ne sont pas aussi saisissantes qu'elles paraissent). +Considérons que les coûts pour éviter l'accumulation supplémentaire de CO2 (et équivalents) reviennent à 1 % du PIB chaque année pour toujours, et, conformément à une bonne dose de preuves empiriques, que le composant du taux d'escompte attribuable à l'utilité marginale déclinante de la consommation soit égal à deux fois le taux de croissance de la consommation. +Un calcul simple montre que la réduction vaut mieux que l'immobilisme -- c'est-à-dire que la valeur actuelle des bénéfices dépasse la valeur actuelle des coûts -- pour tout taux social de préférence temporelle inférieur à 8,5%. +Aucune estimation du taux de préférence temporelle pur, même par ceux qui croient dans un escompte relativement fort de l'avenir, n'a jamais approché 8,5 %. +Ces calculs indiquent que, même avec un escompte plus élevé, les estimations des coûts et des bénéfices de la Stern Review impliquent que la réduction a un sens d'un point de vue économique. Ces calculs reposent sur les projections des profils temporels des bénéfices et sur ses estimations des coûts annuels, sur lesquels les désaccords font rage. +Pourtant, je crois qu'il ne peut y avoir que peu de graves désaccords sur l'importance d'une politique visant à éviter davantage de grandes augmentations des taux de CO2. +Kenneth J. Arrow, lauréat du prix Nobel d'économie, est professeur émérite d'économie et professeur émérite de science de gestion et d'ingénierie à l'université de Stanford. +La fin de l'exception suédoise ? +En Europe occidentale, depuis deux ans l'électorat penche à droite. +Au Danemark, en France, en Italie, en Hollande en Norvège et au Portugal, l'immigration, le chômage endémique, la lourdeur de la fiscalité et la détérioration des services publics ont alimenté cette tendance. +Mais comme le montre le résultat de ces dernières élections , les sociaux-démocrates suédois qui ont détenu le pouvoir 61 ans au cours de ces 70 dernières années restent en position de force. +Jusqu'à il y a quelques mois, les sondages leur attribuaient 44% des intentions de vote. +Avec les ex-communistes et les Verts, la gauche disposait d'une avance confortable de 12 à 15% devant les quatre partis d'opposition de centre-droite. +Pourquoi la Suède a-t-elle si bien résistée à la vague droitière qui balaye l'Europe occidentale ? +Le succès des sociaux-démocrates est dû essentiellement à la politique étrangère. +Au début de l'année dernière la Suède assurait la présidence de l'UE, donnant ainsi l'occasion à Göran Persson, le Premier ministre et l'homme fort du pays, d'occuper le devant de la scène. +D'autre part, les sociaux-démocrates ont devancé l'opposition en accordant leur soutien aux USA après les attentats du 11 septembre, ce qui leur a valu un regain de popularité. +Persson dégage une impression de compétence et d'autorité. +Il a encore renforcé son image en 1994 après sa victoire aux élections en resserrant le budget et en venant à bout d'un énorme déficit. +Mais il n'a rien accompli de très remarquable depuis sa victoire suivante en 1998. +A l'image de l'évolution du secteur des nouvelles technologies - illustrée par les difficultés d'Ericsson, le géant des télécommunications - l'économie suédoise a connu une embellie avant de chuter. +Cette année, libre de nouvelles promesses et jouant de son charisme, Persson avait des atouts dans son jeu en menant une campagne de type présidentielle. +Mais la force de caractère ne suffit pas à masquer les problèmes et une politique fluctuante. +Bien qu'à l'étranger on ait tendance à idéaliser le système de protection sociale suédois, l'économie du pays est en régression depuis 30 ans. +En 1970 la Suède arrivait en quatrième place pour son PIB par habitant, elle se retrouve aujourd'hui en 17° place au sein de l'OCDE. +Cette situation est due en partie aux prélèvements fiscaux, domaine dans lequel la Suède est championne du monde avec des dépenses publiques qui voisinent 60% du PIB. +Les conservateurs veulent diminuer les impôts, mais cette idée n'est pas populaire, près de 65% des Suédois étant fonctionnaires ou bénéficiant de transferts sociaux. +Contrairement aux autres Européens, les Suédois sont favorables à des impôts élevés, ce qui assure un large soutien à la gauche. +En dépit de cette situation, les Suédois s'inquiètent de la détérioration de leur système de protection sociale. +Les sociaux-démocrates ont su faire marche arrière sur ce point pendant cette année de campagne, mais on est allé trop loin dans le droit à la santé. +A tout moment 14% des salariés sont en arrêt-maladie, soit deux fois plus qu'il y a cinq ans. +Les sociaux-démocrates disent que cela traduit un véritable problème de santé publique, tandis que pour l'opposition c'est le système qui pose problème. +Beaucoup de Suédois en sont à croire qu'ils ont le droit de prendre un congé-maladie indépendamment de leur état de santé . +Mais il n'y a pas d'autre élément qui laisse à penser que la santé des Suédois se détériore. +La dégradation de l'enseignement public est aussi source d'inquiétude. +Stockholm, ville dirigée par les conservateurs et les libéraux, s'est lancé dans l'économie de marché avec la privatisation du métro et l'allocation de chèques-éducation permettant le libre choix d'un établissement. +Les sociaux-démocrates ont été défaits dans la capitale. +Comme lors des autres élections récentes en Europe, l'immigration a tenu une place importante, mais comme à son habitude, la Suède s'est distinguée des autres pays. +Le petit parti libéral qui a fait campagne en faveur de l'ouverture des frontières aux travailleurs étrangers a vu son audience tripler. +Il fait des propositions de bon sens : toute personne qui dispose d'un emploi devrait pouvoir obtenir un visa, mais la connaissance du suédois devrait être une condition requise pour être naturalisé et les immigrants sans emploi ne devraient avoir droit au chômage qu'au bout de cinq ans. +Le libre-échange post-soviétique +Depuis l'effondrement de l'Union soviétique, les Etats indépendants auxquels il a donné naissance essayent de clarifier leurs relations commerciales. +Les douze pays membres de la Communauté d'Etats indépendants (CEI) ont signé un accord de libre-échange en 1994, mais il ne donne guère de résultats. +Quand un pays réussit à exporter des marchandises dans un autre, ce dernier impose des quotas ou des taxes douanières prohibitives qui nuisent au développement économique. +La solution évidente consiste à utiliser un mécanisme de résolution des conflits. +L'Organisation mondiale du commerce (OMC) dispose d'une cour d'arbitrage et peut imposer des sanctions, mais seuls quatre pays de la CEI (le Kirghizstan, la Géorgie, la Moldavie et l'Arménie) adhèrent à l'OMC. +Les principales puissances économiques de la CEI (la Russie, l'Ukraine et le Kazakhstan) auraient tout intérêt à rejoindre rapidement cet organisme. +Malheureusement, au lieu d'adopter des mécanismes qui ont fait preuve de leur efficacité, divers pays de la CEI inventent des mécanismes toujours plus complexes tels que l'Union douanière des Cinq, rebaptisée Communauté économique eurasienne l'année dernière quand son échec est devenu patent. +Ce terme vague désigne trois choses : une union douanière, la coordination des candidatures à l'OMC et une union monétaire. +Mais aucun de ces éléments ne sera bénéfique aux participants. +L'union douanière au sein de la CEI a déjà échoué et elle échouera à nouveau. +Elle n'a pas facilité davantage le commerce que la zone de libre-échange de la CEI. +Il n'y a eu aucune harmonisation douanière. +La Russie refuse de reconnaître dans les faits l'indépendance des autres pays de la CEI et cherche à leur imposer sa propre politique douanière, ce qu'ils refusent. +Les quatre présidents proposent maintenant de créer une commission supranationale indépendante pour le commerce et les droits de douane, de manière à parvenir à une politique douanière commune. +Mais il n'y a aucune raison de croire que cela donnera de meilleurs résultats que l'union douanière. +En un mot, tous ces pays n'ont pas les mêmes intérêts commerciaux. +Un pays qui ne produit pas un bien n'a aucun intérêt à sa protection, contrairement à ceux qui le produisent. +Ainsi, la Russie qui possède une industrie aéronautique et automobile veut des barrières douanières importantes, alors que le Kazakhstan ne possède ni l'une ni l'autre. +Or des taxes élevées sur les voitures importées de Russie constitueraient un fardeau financier injustifié pour les Kazakhs. +La coordination des candidatures des pays de la CEI à l'OMC paraît à première vue une bonne chose, mais en pratique cela retarderait de plusieurs années leur adhésion au moment où il faut faire preuve de beaucoup de réactivité. +Avec des échanges commerciaux complexes et à grande échelle, l'adhésion de la Russie à l'OMC pose bien plus de problèmes que celle de l'Ukraine ou du Kazakhstan. +La Russie doit conclure des accords bilatéraux avec 67 pays différents, alors qu'ils ne sont que 22 pour l'Ukraine. +Ainsi, la Russie a demandé à l'Ukraine d'abroger 11 accords bilatéraux qu'elle a déjà signés dans le cadre de son entrée à l'OMC. +Les échanges commerciaux au sein de la CEI ne vont pas s'améliorer tant que la Russie, l'Ukraine et le Kazakhstan n'adhèrent pas à l'OMC. +S'ils arrêtaient de "coopérer" pour se faire concurrence dans l'adhésion à l'OMC, ces trois pays en deviendraient membres en moins d'un an. +Le pire, c'est l'idée d'une union monétaire. +Ce désastre a été essentiellement dû au fait que la Banque centrale de chacun des pays de la CEI émettait des roubles, aucun d'entre eux n'acceptant que sa politique monétaire soit entre les mains de la seule Russie. +Pourquoi répéter la même catastrophe ? +Aujourd'hui, le contexte politique n'a pas changé, aucun pays de la CEI n'est prêt à accepter le monopole de la Russie quant à l'émission d'une monnaie commune. +Or sans le monopole et la centralisation de l'émission de monnaie au sein d'un organisme unique, une union monétaire ne peut fonctionner. +- Une union monétaire suppose des économies diversifiées de taille conséquente qui reposent sur une structure financière solide. +Ce n'est pas le cas de la plupart des pays de la CEI. +- Les membres d'une union monétaire doivent avoir des structures économiques similaires ou à tout le moins des intérêts commerciaux convergents. +Etant donné la dépendance de la Russie vis-à-vis de ses exportations de pétrole et de gaz naturel et le statut d'importateur de sources d'énergie de l'Ukraine, leurs intérêts tendent à diverger. +En cas de chute du prix du pétrole, 'une dévaluation monétaire serait profitable à la Russie, tandis que l'Ukraine aurait besoin d'une réévaluation. +Lors de ces trois dernières années, le taux de croissance moyen a été de 6% pour la Russie de l'Ukraine et de 11% pour le Kazakhstan. +L'économie de ces trois pays évolue donc favorablement, mais aucun ne peut se permettre d'erreur dans le domaine du commerce extérieur. +Leur politique économique est dictée par une pensée libérale efficace sur le plan intérieur, il faudrait qu'il en soit de même en ce qui concerne leurs échanges extérieurs. +Poutine oeuvre-t-il à sa propre destruction ? +Avec l'arrestation de l'homme le plus riche du pays, le magnat du pétrole Mikhaïl Khodorkovski, la Russie se trouve plongée dans une crise politique profonde. +Sans le vouloir, le Président Vladimir Poutine a choisi de se lancer à l'assaut d'une victoire totale contre l'oligarque pétrolier. +Il n'y a pas d'autre enjeu ici que la fragile démocratie russe. +Les accusations lancées contre Khodorkovski portent sur des affaires anciennes de privatisation et d'évasion fiscale. +Toutefois, les accusations portées contre Khodorkovski sont aussi mal fondées qu'elles sont tendancieuses : l'affaire de la privatisation a été réglée à l'amiable et Khodorkovski n'a fait qu'utiliser les programmes d'évitement fiscal couramment utilisés en Russie et qui ont fait leurs preuves auprès des tribunaux. +Le vrai problème de Poutine tient à ce que Khodorkovski est bien trop puissant et indépendant pour la politique étriquée que Poutine veut mettre en place. +En quatre ans de pouvoir, Poutine a fait progresser quatre politiques principales. +Les trois premières, la réforme de l'économie de marché, le principe de légalité, et une politique étrangère pragmatique, ont été largement applaudies tandis que la quatrième, la « démocratie dirigée », n'a été tolérée qu'en vertu de la stabilité politique qu'elle permet. +Cependant, cette « démocratie dirigée » menace maintenant de défaire ses trois réussites politiques. +Khodorkovski est le quatrième homme d'affaires important à être soustrait au monde des affaires par les autorités. +Quatre chaînes de télévision indépendantes ont également été reprises en main par l'état, et aucune critique de Poutine n'est autorisée dans les médias d'importance. +Les principaux organismes de sondage sont aussi passés sous le contrôle du Kremlin. +Les élections régionales sont régulièrement manipulées, souvent par l'exclusion des candidats de l'opposition. +La tendance est évidente : nous nous dirigeons droit vers un système autoritaire. +Les oligarques russes manquent sans aucun doute de popularité et l'arrestation de Khodorkovski avait évidemment pour but de redorer l'image de Poutine pour les élections parlementaires et présidentielles à venir. +Pourtant, même si les Russes détestent les puissants et préfèrent prendre le parti des plus faibles et des martyres, aucun homme emprisonné ne peut sembler être un homme fort. +Avec l'arrestation de Khodorkovski, les autorités ont fait étalage de leur puissance arbitraire et extrajudiciaire de telle manière qu'elles ont suscité une inquiétude générale parmi les populations. +Par le passé, Poutine avait attiré le soutien d'un grand nombre de Russes. +Ayant réussi l'équilibre entre l'ex-KGB et le monde des affaires, il apparaissait comme indépendant de ces deux forces. +Aujourd'hui, il s'est mis à dos le monde des affaires, dont il refuse de rencontrer les représentants. +Soudainement, il s'est réduit à l'image d'un président du KGB, mettant en danger la stabilité politique même qu'il a tant cherché à garantir. +Poutine parle sans cesse du besoin d'établir le principe de légalité et pourtant, dans son allocution télévisée du 27 octobre, il s'est effectivement prononcé en faveur des hommes de main de la législation. +En fait, dans l'affaire Khodorkovski, toutes les obligations judiciaires ont été allégrement négligées. +Par exemple, bien que les procureurs soient à la direction des organismes appropriés, ils ne se sont pas sentis obligés d'émettre les mandats nécessaires aux perquisitions chez Ioukos et aux arrestations. +La conclusion évidente que même les citoyens russes peuvent tirer de tout cela reste que ni leur droits de propriétaires ni leur propre personne ne sont à l'abri de tels abus. +Les investissements vont probablement cesser ou se ralentir. +Ceux qui peuvent exporter leurs capitaux le feront. +Il en résultera une certaine panique qui ralentira le rythme de la croissance actuellement forte. +Les retombées de l'arrestation de Khodorkovski se ressentent à l'étranger également. +La presse du monde des affaires a condamné dans l'ensemble le comportement des autorités, particulièrement la saisie des actions Ioukos qui valent plusieurs fois ce que l'état peut réclamer, et qui a des relents d'expropriation. +Les gouvernements étrangers ont fait état de leurs craintes. +D'un seul geste, Poutine a mis en danger ses meilleures réussites. +Avec son franc parler en public, il est sorti de sa réserve passée et s'est privé de toute possibilité de démenti. +Les coupables au sein du KGB restant silencieux, le Président a dû prendre la parole plus souvent s'exposant ainsi encore plus. +Cependant, pourquoi avoir défendu cette arrestation dans une allocution télévisée ? +Pourquoi refuser de rencontrer les élites du monde des affaires russe au moment même où des rencontres sont organisées avec des banques d'investissement étrangères ? +Pourquoi saisir les actions de Ioukos ? +Deux semaines avant son arrestation, Khodorkovski me disait « ne pas comprendre comment ils pouvaient gagner, au vu des bévues qu'ils ont commises ». +Ces paroles me semblent maintenant prémonitoires. +La situation au Kremlin semble rappeler celle du printemps de 1996, quand un groupe d'hommes du KGB, emmené par le chef des gardes du corps du Président Boris Eltsine, le Général Alexander Korsakov, se sont presque emparés du pouvoir. +Toutefois, les oligarques se sont alors mobilisés pour soutenir Anatoly Chubais, qui écarta Korsakov et ses hommes dès le mois de juin. +Une fois de plus, les hommes d'affaire russes se sont rassemblé derrière Chubais. +Si Poutine veut sauver sa carrière, il devra agir rapidement et se débarrasser de ses chefs du KGB au service du Kremlin et du procureur général. +Cela vaut la peine de rappeler à tous que l'ancien Premier ministre de 1999, Yevgeny Primakov, et le maire de Moscou, Youri Luzhkov, sont donnés comme grands favoris pour l'élection présidentielle à venir. +Pourtant, ayant cherché à se faire bien voir par les médias russes, ils ne sont pas habitués aux critiques et se sont trouvés désarmés quand les critiques se sont faites sentir. +Le tabou de la critique envers Poutine est déjà sans force. +Les principaux partis libéraux, l'Union des forces de droite et Yabloko, l'attaquent férocement tandis que les petits partis qui soi-disant le soutiennent restent silencieux et perdus. +Ils sont censés être sur le point de gagner une majorité écrasante aux élections parlementaires à venir du 7 décembre et pourtant, comme Korsakov et sa clique, ils pourraient bien être défaits. +En fait, en s'aliénant le monde des affaires et en laissant son chef de cabinet, le rusé Alexandre Volochine, démissionner, Poutine s'est privé lui-même d'un soutien électoral précieux. +Son ancien conseiller politique principal l'a même accusé d'utiliser des « mesures staliniennes » et si Poutine ne correspond plus aux attentes pressantes de l'élection parlementaire à venir, ses chances de remporter les élections présidentielles du 14 mars 2004 pourraient bien être remises en question. +En arrêtant Khodorkovski, Poutine a dévoilé sa nature autoritaire au monde entier. +Il a lancé son gant au visage de la société civile et des élites du monde des affaires de la Russie. +Ils n'ont pas d'autre choix que de lui résister et leur force ne doit pas être sous-estimée : la bataille pour la démocratie russe est donc ravivée. +La Dernière bataille de Poutine +Le Président russe, Vladimir Poutine, a atteint ses objectifs avec brio lors de son premier mandat. +Il a renforcé les pouvoirs du gouvernement fédéral tout en affaiblissant le monde des affaires, la presse libre, la parti communiste, les libéraux et la société civile. +Au sein du gouvernement, il a fait pression sur les gouverneurs régionaux, les deux chambres du parlement, et même l'appareil d'Etat, et concentré tous les pouvoirs, l'exécutif, le législatif et le judiciaire, entre ses propres mains. +Au même moment, depuis l'arrivée de Poutine au pouvoir en 2000, la Russie a atteint une solide stabilité macroéconomique et une croissance annuelle régulière de 6,5 % en moyenne. +Malheureusement, la réussite de Poutine précipitera peut-être sa chute. +Il eut la chance pendant son premier mandat de savoir reconnaître les limites de son pouvoir. +Lecteur avide des sondages d'opinion, il a essayé, mystérieusement, de combler toutes les attentes de son électorat. +Maintenant, grisé par l'enchaînement de ses triomphes politiques, il semble se penser libre de toute contrainte. Toutefois, aucun homme politique ne peut bénéficier de cette chance-là. +Poutine a fait fi de bien trop de règles politiques et sa chance ne le suivra plus très longtemps. +Ainsi, se montrant trop jaloux de puissance et incapable de déléguer, voulant prendre toutes les décisions lui-même, il a remplacé un Premier ministre et un Chef de cabinet puissants par deux hommes inefficaces. +Donc, plutôt que de créer un commandement vertical fort, il a paralysé son gouvernement. +Une des raisons de cette surcentralisation poussée à l'extrême vient de son manque de confiance en quiconque. +Autre raison: son obsession pour le mystère. +Policier véritablement secret, Poutine s'appuie sur son cercle d'hommes de main du KGB de l'époque de St-Pétersbourg. +La base de son pouvoir s'amenuise toujours plus chaque jour et sa gestion de la presse indépendante le laisse de plus en plus mal informé. +Les conséquences se sont fait sentir lors du drame de la prise d'otages de Beslan en Ossétie du Nord. +Les forces de l'ordre n'ont pas su aider les populations locales. +Elles ne disposaient d'aucun renseignement pertinent. +Les forces de police ont accepté des pots-de-vin pour laisser les terroristes s'infiltrer. +Les forces spéciales russes d'élite ont été envoyées à Beslan sans aucun armement, sans aucune protection pare-balle, sans aucun plan de bataille ni commandement effectif. +L'école ne fut jamais encerclée. +Finalement, les Ossétiens ont envahi l'école avec leurs propres armes et tué plusieurs membres des forces spéciales par mépris. +Aussi incroyable que cela semble, le Directeur du Service de la sécurité fédérale (FSB) et le Ministre de l'intérieur se sont rendus sur les lieux de la prise d'otages très rapidement sans pour autant prendre aucune mesure. +Les deux gouverneurs locaux concernés refusèrent de se rendre ensemble à Beslan. +En fait, le gouvernement n'a pris aucune mesure. +Poutine et son gouvernement se sont contentés d'ignorer la crise de Beslan, en minimisant la couverture médiatique de l'événement. +Les déclarations officielles furent faites par un représentant local de moindre importance qui s'est lui-même ridiculisé en mentant de manière éhontée. +Il est difficile d'imaginer pire performance de la part des autorités gouvernementales. +En son temps, le Président soviétique Léonide Brejnev fut ridiculisé pour ne s'être intéressé qu'à taire les mauvaises nouvelles plutôt qu'à se montrer prêt à résoudre les problèmes. Poutine se comporte aujourd'hui de la même façon. +Tant de mystère, bien sûr, ne peut que faire du tort à la Russie. +Les conclusions à tirer du drame de Beslan sont évidentes. +Il faut restructurer la police tchétchène. +Les forces de sécurité doivent être purgées et reprises en main. +Les ministres et gouverneurs inefficaces doivent être limogés, et leurs bureaux doivent se voir confier plus d'autorité. +La communication doit être plus ouverte et il faut réduire la présence des forces du KGB. +Poutine, cependant, ne veut pas entendre parler de tout cela. +Il n'obéit à aucune règle élémentaire et surtout pas à celle qui conseille de se tenir coi quand on a trop parlé. +Aucun responsable n'a été limogé mais le rédacteur en chef des Izvestia a été renvoyé pour avoir manqué de précision dans ses reportages. +De même, rien n'a été fait pour traiter le problème de la corruption endémique du FSB. +Plutôt que d'accorder plus d'autorité aux gouverneurs, Poutine a exigé le pouvoir de les nommer lui-même. +Au lieu de renforcer le gouvernement, il a privé de ses forces vives, Dimitri Kozak, pour nommer à sa place encore un illustre inconnu du cercle de ses hommes de main du KGB, de l'époque de St-Pétersbourg. +Le rôle de Poutine n'est pas seulement autoritaire, il est aussi dysfonctionnel. +Il est trop rigide et centralisé pour gérer les crises. +Plutôt que de s'attaquer aux problèmes réels, Poutine ne se préoccupe que de ses propres impératifs. +Cet état de police centralisée ne s'intéresse qu'à très peu de choses en dehors de son propre pouvoir politique et économique. +Il est difficile d'échapper à l'impression que Poutine s'intéresse plus à prendre soin de ses hommes de main du KGB qu'à combattre le terrorisme. +Les réformes économiques libérales menaçant leurs intérêts, elles ont été abandonnées. +Les citoyens russes ne sont pas aveugles. +Et ils se demandent comment la nomination des gouverneurs régionaux peut servir à lutter contre le terrorisme. +Poutine érode rapidement la grande autorité qu'il s'est bâtie pendant son premier mandat. +Ce processus peut déstabiliser la Russie plus rapidement qu'on ne le croit. +La question n'est plus de savoir si Poutine lâchera vraiment le pouvoir en 2008 au terme de son mandat mais plutôt s'il sera capable de se préserver aussi longtemps. +Il le pourra certainement, mais il lui faudra faire volte-face et remettre la Russie sur le chemin de la démocratie, de la gestion régionale et de la libre expression. +Tout au moins devra-t-il limoger ses amis du KGB et son infortuné Premier ministre, Mikhaïl Fradkov. +Il lui faudra aussi régler l'affaire Youkos et modifier sa politique tchétchène. +Poutine a le pouvoir de réaliser tout cela, mais pas la volonté. + Un espoir de démocratie en Ukraine  +La révolution orange ukrainienne va atteindre son apogée lors du scrutin du 26 décembre qui verra s'affronter à nouveau dans la course à la présidence le Premier ministre Viktor Ianoukovitch et son prédécesseur, Viktor Iouchtchenko, après l'annulation du scrutin précédent, entaché de fraudes massives, ce qui a entraîné des centaines de milliers d'Ukrainiens à descendre dans les rues de Kiev pour défendre leurs droits. +L'élection de dimanche devrait être plus régulière et se conclure par la victoire à Viktor Ianoukovitch. Mais l'Ukraine n'est pas assurée pour autant d'un futur démocratique. +L'Ukraine traverse une véritable révolution libérale, semblable à celles que l'Europe a connu en 1848 et à la Révolution de velours à Prague en 1989. +Les Ukrainiens veulent la démocratie, la liberté et le respect de la loi. +Après cinq ans de croissance économique au taux de 9% par an, il est frappant de constater l'absence de revendications à caractère économique, comme le sont toutes les revendications socialistes ou même sociales. +Même truqué, le résultat du scrutin précédent montre que le pays est divisé géographiquement et ethniquement, Viktor Iouchtchenko, le candidat de l'opposition démocratique, arrivant largement en tête dans les 17 régions de l'ouest et du centre du pays et Viktor Ianoukovitch dans les dix régions de l'est et du sud. +Mais Iouchtchenko l'a emporté dans plusieurs régions russophones, notamment à Kiev, la capitale, tandis que Ianoukovitch l'a devancé dans les régions de tradition autoritaire comme le Donetsk et le Lougansk, plus à l'est. +La plupart de ces différences régionales s'expliquent par le degré de démocratie et d'ouverture, plutôt que par des considérations ethniques. +Iouchtchenko a eu la sagesse de lancer le slogan "L'Est et l'Ouest unis", soulignant ainsi son souhait de ne pas diviser le pays. +De la même manière, les manifestants ont su rapidement convaincre de la justesse de leur cause les mineurs de l'Est conduit en autobus à Kiev pour une courte visite par leur encadrement. +Le rôle des hommes d'affaires est manifeste des deux cotés. +Une plaisanterie populaire consiste à dire qu'il s'agit d'une révolte des millionnaires contre les milliardaires. +La candidature de Ianoukovitch avait l'appui des clans à la tête des trois plus grosses entreprises du pays, tandis que le reste du monde des affaires, y compris quelques millionnaires, soutenait dans sa grande majorité Iouchtchenko. +C'est une authentique révolution bourgeoise. +C'est l'habitude du président Leonid Koutchma de diviser pour régner et de magouiller qui est à l'origine de la croissance économique et de la révolution ukrainienne. +La majorité de la population aspire au respect de la loi et à l'ordre et les hommes d'affaires veulent des règles du jeu équitables pour traiter avec les riches et les puissants. +Iouchtchenko, s'il s'en prend aux "bandits" et à la corruption, évite de critiquer les oligarques, car certains parmi les plus petits d'entre eux le soutiennent. +Rarement on a vu un pays intervenir aussi massivement dans les élections d'un autre pays que la Russie ne l'a fait. +Les partisans de Iouchtchenko disent que le Kremlin a obligé les entreprises russes à verser 300 millions de dollars pour soutenir la campagne de Ianoukovitch. +Les plateaux de télévisions de Kiev étaient envahis de conseillers politiques russes qui diffamaient Iouchtchenko bien plus que ne l'ont jamais fait ses adversaires ukrainiens. +Le président Poutine lui-même est intervenu deux fois en Ukraine en faveur de Ianoukovitch et l'a félicité par deux fois avant que le résultat truqué ne soit prononcé, ce qui l'a quelque peu ridiculisé. +Cet activisme déchaîné de la Russie est étrange. +Ianoukovitch est favorable à un véritable État oligarchique qui ressemble à celui que Poutine a démembré en Russie et il a accusé Iouchtchenko d'avoir vendu les entreprises ukrainiennes à la Russie. +L'attitude de Poutine s'explique sans doute par son aversion à l'égard de la démocratie. +Enfin, si le président ukrainien devient un paria sur la scène internationale, il lui restera à se tourner vers la Russie, à l'image du président biélorusse Alexandre Loukachenko. +Après ce spectaculaire échec de la Russie, la "démocratie contrôlée" de Poutine paraît anachronique et courre le risque de voir à ses portes une véritable démocratie faire tache d'huile. +Pour la première fois, les Ukrainiens se sont débarrassés du complexe du grand frère à l'égard de la Russie. +Avec leur confiance retrouvée, ils se rendent compte qu'ils peuvent penser par eux-mêmes et faire face à la réalité, contrairement à leurs frères russes. +L'Ukraine n'a guère d'autre choix que de se tourner vers l'Europe et vers l'Occident. +Les exportations d'acier ont stimulé l'appétit de la Chine, mais tôt ou tard ses besoins vont être comblés et l'Ukraine devra trouver de nouveaux marchés. +L'Europe est le débouché évident, alors que la Russie n'a à offrir qu'une concurrence sans merci. +Si l'Ukraine devient une démocratie, elle va sans doute acquérir rapidement la culture du respect de la loi. +Elle a déjà une économie de marché et elle se trouve incontestablement en Europe. +Aussi, accueillir l'Ukraine représente un formidable défi pour l'Union européenne. +Beaucoup de choses peuvent encore mal tourner. +Le processus électoral pourrait ne pas aboutir ou bien Iouchtchenko pourrait se voir refuser le pouvoir exécutif. +C'est ce qui est arrivé à Solidarité en Pologne en 1980-81, où le pouvoir communiste a tenu pendant encore une décennie. +Heureusement pour l'Ukraine, les entreprises ont été privatisées et les milieux d'affaires sont unanimes à estimer que le nouveau scrutin doit aboutir. +Sans cela, la déstabilisation financière menacerait les riches. +Le rôle proéminent des multimillionnaires dans la révolution constitue un autre danger. +Il est évident qu'ils voudront dominer le nouveau gouvernement. On les retrouve dans tous les partis, armés de leur remarquable capacité à diriger et de leur impressionnant savoir-faire intellectuel. +Si on les laisse agir, la redistribution des fortunes va sans doute l'emporter sur la lutte contre la corruption, et les espoirs révolutionnaires de l'Ukraine s'évanouiront. +Iouchtchenko devrait s'entourer des jeunes cadres qui n'ont pas encore été touchés par la corruption généralisée de l'ancienne administration. +L'ancien régime n'a pas disparu. +Iouchtchenko a obtenu la majorité au Parlement parce que beaucoup de partisans de l'ancien régime ont retourné leur veste par opportunisme. +Ils peuvent recommencer et il faut savoir que 300 des 450 membres du Parlement ukrainien seraient des millionnaires. +Des élections parlementaires rapprochées seraient à souhaitables, mais c'est constitutionnellement difficilement réalisable. +Iouchtchenko a été contraint d'accepter une réforme politique maladroite qui recèle de nombreuses chausse-trappes. +La menace russe est toujours présente et il ne faut pas s'attendre à une réaction de la part de l'Occident. +Heureusement, les partisans de Iouchtchenko ont conscience que le temps presse et qu'il faut agir rapidement. +Une occasion extraordinaire s'offre à l'Ukraine ; à ses dirigeants de ne pas la laisser passer ! +La chance de Poutine, la malchance d'Eltsine +Les excellentes performances économiques de la Russie n'ont pas grand-chose à voir avec la politique de Poutine, mais plutôt avec les réformes adoptées par Eltsine. +En 1998, la Russie était déjà parvenue à une masse critique de marchés et d'entreprises privées, alors que la crise financière de cette année-là fonctionnait comme une catharsis, obligeant le gouvernement à abolir les subventions aux entreprises qui constituaient la base d'un déficit budgétaire dévastateur se montant à quelque 9 % du PIB. +En outre, les prix mondiaux du pétrole qui étaient tombés à 10 $US le baril commençaient à atteindre des sommets. +Toute la success-story était ainsi en place début 1999, un an avant que Poutine n'entre en scène. +Certes, on peut accorder à Poutine le crédit de réformes économiques substantielles au cours de ses trois premières années. +Un nouveau code fiscal a été adopté, avec des taxes plus réduites et moins nombreuses, notamment un impôt sur le revenu fixe à 13 %. +Le code civil a été achevé, un nouveau code douanier mis en place, et une réforme judiciaire conséquente mise en œuvre. +Dans le même temps, cependant, Poutine a systématiquement éliminé la rudimentaire démocratie mise en place par Eltsine. +Une chaîne de télévision après l'autre a été reprise par l'État sous divers prétextes, tout comme les principaux journaux. +Les candidats et les partis d'opposition se sont vus refuser d'être enregistrés à la moindre petite plainte officielle. +La falsification des élections est devenu la norme. +De nombreux Russes célèbres ont favorisé le modèle de politique autoritaire et l'économie libérale à la Pinochet. +Mais la montée de l'autoritarisme a aussi atteint le monde des affaires. +En octobre 2003, Poutine a sévi contre Mikhaïl Khodorkovsky, PDG et principal propriétaire de Ioukos, entreprise pétrolière qui a le plus de valeur en Russie. +Celui-ci a été jeté en prison sur des accusations douteuses de fraude fiscale après avoir soutenu les opposants politiques de Poutine., Les associés de Poutine convoitaient la fortune de Ioukos, confisquée par la compagnie pétrolière d'État Rosneft par le biais de taxation illégale, ruinant au passage les réformes fiscale et judiciaire de Poutine et sapant gravement les droits à la propriété. +En fait, depuis 2003, la principale politique économique de Poutine a été la renationalisation. +Des entreprises privées bien gérées ont été plus ou moins obligées de vendre leur fond à des entreprises dominées par l'État. +Gazprom achète des compagnies pétrolières (Sibneft), gazières et énergétiques à des prix très avantageux, renforçant ainsi son monopole. +Cela lui permet de dynamiser ses profits en augmentant ses tarifs, malgré une production stagnante. +En effet, maintenant que les compagnies d'État produisent un tiers du pétrole russe, la croissance de la production s'est effondrée, car les propriétaires des entreprises privées, source du dynamisme du secteur, ont maintenant peur d'investir dans de nouvelles capacités. +Parmi les investisseurs étrangers, Shell et TNK-BP sont en train d'être évincés par Gazprom dans leurs principaux gisements pétroliers en Russie. +Outre le pétrole et le gaz, l'agence russe d'exportation d'armes, Rosoboronexport, vient juste de s'emparer d'Avtovaz, le fabricant de voitures russe géant et en total dysfonctionnement, et de VSMPO-Avisma, la grande entreprise russe de titane, pendant que tous les fabricants d'avions étaient rassemblés au sein d'une unique compagnie d'État. +Le gouvernement accueille cette renationalisation avec joie, bien qu'elle ait réduit la croissance industrielle russe en la faisant passer de 8,3 % en 2004 à 4 % ces deux dernières années. +De même, des banques d'État inefficaces -- bien inférieures à des banques privées même au Kazakhstan ou en Ukraine -- dominent le secteur bancaire. +La peu rentable banque d'État Vneshtorgbank, par exemple, est prise d'une frénésie d'achats, empirant le niveau du secteur bancaire russe. +Les surplus pétroliers de la Russie poussent la croissance économique à une augmentation des investissements, ce qui dynamise la construction et la consommation, ce qui à son tour bénéficie au commerce de détail et à la finance. +Avec une forte augmentation des revenus personnels, la pauvreté est sur le déclin, et 68 % des jeunes Russes fréquentent l'université. +Pourtant, d'autres indicateurs sociaux sont médiocres. +L'espérance de vie des hommes reste bloquée à 59 ans. +Le nombre de meurtres est encore plus élevé sous Poutine que sous Eltsine, tout comme le nombre de morts sur la route. +Aucun des grands systèmes publics (éducation, santé ou armée) n'a été réformé, et le régime ne montre que peu d'intérêt à cet égard. +Le Kremlin est préoccupé à la place par la rentabilité et la valeur des entreprises dominées par l'État, qu'il contrôle. +Comme on pouvait s'y attendre, tous les indicateurs de corruption ont augmenté depuis que Poutine a succédé à Eltsine, alors qu'ils baissent dans la plupart des pays post-communistes. +Bien que la corruption soit omniprésente, aucun haut responsable n'a été poursuivi. +Poutine et ses amis du KGB de Saint Pétersbourg sont paisiblement installés sur toute cette richesse, grâce à leur gouvernance autoritaire et à leur contrôle de tous les organes de sécurité. +Un appareil d'une telle puissance ne peut aller tranquillement prendre sa retraite dans une datcha comme l'a fait Eltsine, car il faudrait tout privatiser d'abord. Cela implique que Poutine n'a pas d'autre choix que de rester à son poste, quoi qu'il dise ne pas prétendre à un troisième mandat présidentiel. +Mais s'il s'accroche au pouvoir, à l'encontre de la constitution, sa popularité pourrait très bien s'effondrer, d'autant que le succès de sa politique économique est dû à la chance et non à la réforme. +La poutinomique +Le fait le plus surprenant lors de ces élections a été de voir Poutine perdre son sang froid. +Il a multiplié les apparitions publiques, au point que cela en était agressif, tandis que ses propos manquaient de substance. +Il s'en est pris à l'Occident et au "chaos" des années 1990, de la même manière qu'il s'en était pris aux terroristes tchétchènes en 1999 et aux oligarches en 2003. +Le Kremlin a abandonné les procédures démocratiques, décidant des partis et des candidats autorisés à se présenter, tandis que Poutine monopolisait la couverture médiatique. +Les militants de l'opposition étaient empêchés de faire campagne et étaient souvent arrêtés, tandis que les tribunaux à la solde du Kremlin refusaient de prendre en compte leurs plaintes. +Aussi, la nouvelle Douma a-t-elle été nommée plutôt qu'élue. +Elle manque de légitimité et ses membres sont des inconnus. +Quant à la légitimité de Poutine, elle est entachée par ce trucage massif. +Son seul meeting public à Moscou n'a attiré que 5000 personnes. +Les questions clés sont maintenant de savoir jusqu'à quel point il va se montrer autoritaire et s'il va être affaibli par cette lamentable campagne. +Sa politique est facile à comprendre une fois que l'on a réalisé qu'il fait généralement le contraire de ce qu'il dit. +Lors de son premier mandat, il est apparu comme un réformateur autoritaire. +Il s'est lancé dans des réformes économiques et fiscales, introduisant par exemple un taux d'imposition sur le revenu uniforme de 13%, mais lors de son second mandat, il s'est montré seulement autoritaire, n'entreprenant aucune réforme économique ou sociale méritant d'être mentionnée. +Le démantèlement de la compagnie pétrolière Yukos, évaluée à 100 milliards de dollars, en a été l'événement phare, il a été suivi d'une vague de corruption. +Poutine a établit une dictature purement personnelle. +La Russie unie , n'est guère plus qu'un petit groupe de hauts fonctionnaires. +Il gouverne sans idéologie ni parti, par l'intermédiaire de l'administration présidentielle et de services de police secrète en concurrence les uns avec les autres. +Il a affaibli la plus grande partie du pouvoir des autres institutions. +L'autoritarisme personnel survit rarement à celui qui l'incarne. +Ayant créé un régime hyper-centralisé qui ne peut survivre sans lui, Poutine doit rester président. +La loi n'a guère d'importance car il peut toujours demander au Conseil constitutionnel d'approuver un troisième mandat. +Son régime est constitué de divers groupes formés par des entreprises d'Etat comme Gazprom, Rosneft, la Vneshtorgbank, Rosoboronexport, et les Chemins de fer russes, auxquels if faut ajouter les agences de sécurité. +Sa clique d'ex-agents du KGB, en général de St Petersbourg, contrôle ces institutions et en extorquent d'énormes dessous de table. +En même temps, il a fait ce qu'il fallait pour qu'ils se détestent entre eux, de manière à ce qu'ils aient recours à lui comme arbitre et parrain. +Dans une interview au journal russe Kommersant qui a fait sensation avant l'élection, l'un de ces anciens dirigeants du KGB, jusque là inconnu, a expliqué comment ils se servent d'extorsion de fonds par l'Etat à l'encontre de ces entreprises pour faire une "renationalisation de velours" au moyen de rachats par les entreprises d'Etat. +Selon la Banque européenne pour la reconstruction et le développement, la part du PIB du secteur privée est passée de 70 à 65% sous Poutine. +Les renationalisations par l'extorsion de fonds va probablement s'accélérer. +Ces renationalisations n'ont pas été justifiés idéologiquement, mais cyniquement : leur objectif est simplement de générer des pots de vin pour les hauts responsables du Kremlin. +Aucun des principaux hommes de main de Poutine n'a été inquiété. +Alors que les renationalisations gagnent du terrain, la rhétorique économique a changé pour devenir étatique. +Poutine défend maintenant le protectionnisme, l'intervention de l'Etat et les subventions. +Il est peu probable de voir des réformes structurelles engagées dans ce climat. +Jusqu'à il y a peu, la Russie poursuivait une politique macroéconomique conservatrice admirable, avec un énorme budget et un compte courant excédentaire. +Cela a permis de rembourser la dette étrangère et de constituer des réserves en devise à hauteur de 450 milliards de dollars. +Avant l'élection de la Douma, Poutine avait cependant déjà ébranlé ce dernier vestige d'une politique économique responsable. +Actuellement, la première préoccupation économique de la Russie est la pression exercée par une inflation croissante, due notamment à la hausse des prix dans le secteur alimentaire. +Cette hausse est un phénomène au niveau international, mais l'inflation russe est dopée par l'importance de l'excédent des comptes courants et l'afflux de capitaux. +Or le gouvernement russe ne cherche plus à atténuer ces facteurs et poursuit une politique inflationniste. +Il n'est donc pas étonnant que l'inflation ait fait un bond 7% au printemps dernier à 11% aujourd'hui, pour atteindre peut-être 15% au printemps. +La politique monétaire et fiscale doit donc être resserrée, mais cela risque d'être difficile autant que Poutine cherche à apaiser la population. +Il pourrait libéraliser le taux de change en le laissant flotter à la hausse, mais il ne fait même pas cela. +A la place, il a recours à une vieille tactique soviétique, le contrôle informel des prix, qui ne peut durer longtemps dans le cadre d'une économie privatisée. +La Russie poursuit sa croissance sur la lancée grâce à la libéralisation économique des années 1990 lors du premier mandat de Poutine, et au prix élevé du pétrole et du gaz. +Reste donc à savoir à quelle vitesse l'économie va sombrer lors du troisième mandat de Poutine. +Le dernier combat de Poutine +A Bucarest, deux questions prioritaires seront posées : faut-il inviter l'Albanie, la Croatie et la Macédoine à rejoindre l'OTAN ? Et faut-il proposer à l'Ukraine et à la Géorgie de lancer des « plans d'action pour l'adhésion » ? +Il importe que ces points soient traités par les membres de l'OTAN et non par des tiers. +En  février 2007, à Munich, Poutine déclarait dans une tirade antioccidentale : « Je pense qu'il est évident que l'expansion de l'OTAN n'a rien à voir avec la modernisation de l'Alliance elle-même ou avec la sécurité de l'Europe. Au contraire, elle représente une provocation sérieuse qui réduit le niveau de la confiance mutuelleJe pense qu'il est évident que l'expansion de l'OTAN n'a rien à voir avec la modernisation de l'Alliance elle-même ou avec la sécurité de l'Europe. +Au contraire, elle représente une provocation sérieuse qui réduit le niveau de la confiance mutuelle il me paraît évident que l'expansion de l'OTAN n'a aucun lien avec la modernisation de l'Alliance elle-même ni avec la sécurité en Europe. Au contraire, elle représente une grave provocation qui réduit le niveau de confiance mutuelle » +L'avis de Poutine sur l'OTAN est donc clair. +Il scandalisera le sommet en voulant intimider les anciens soviétiques présents dans l'assemblée. +Cette attitude agressive ne profite à la politique étrangère d'un pays que jusqu'à un certain point -- dépassé par Poutine il y a bien longtemps. +Au départ, le président russe jouait le rôle de diplomate et de conciliateur compétent, mais depuis son intervention à Munich, il unit l'Occident contre la Russie. +Dans son discours du 9 mai 2007, commémorant la victoire de la Russie durant la Première Guerre mondiale, Poutine comparait les Etats-Unis à l'Allemagne nazie : « Il faut rechercher les causes de toute guerre avant tout dans les erreurs du temps de paix et leurs racines dans l'idéologie de la confrontation et de l'extrémisme. +Il est encore plus important de se souvenir de cela aujourd'hui car ces menaces ne diminuent pas. Elles ne font que se transformer, changer de visage. +Et dans ces nouvelles menaces, comme à l'époque du Troisième Reich, il y a toujours le mépris de la vie humaine et les prétentions à l'exception mondiale et au diktat ». +Les hommes politiques dignes de ce nom ne s'expriment pas ainsi. +Cette diatribe rappelle celles des rares fidèles qu'il reste à Poutine  -- le Vénézuelien Hugo Chavez, l'Iranien Mahmoud Ahmadinejad et le Bélarusse Alyaksandr Lukashenka. +Les Russes prennent conscience qu'en insultant et en intimidant tout le monde, Poutine nuit à leurs intérêts. +Il isole son pays avec les autres parias du monde. Pis encore : il a réalisé peu de choses. +Au moment de sa victoire aux présidentielles, Poutine faisait de l'adhésion à l'Organisation mondiale du commerce la priorité de sa politique étrangère. +Il a échoué à force de céder à la mesquinerie des intérêts protectionnistes, en mettant l'embargo sur le bois finlandais et suédois, sur le poisson norvégien et divers embargos agricoles contre la Lituanie, l'Ukraine, la Moldova, la Georgie, etc. +La politique étrangère russe se concentre sur les intérêts de ses propres entreprises publiques, notamment de Gazprom qui a conclu des accords avec bon nombre de pays et compagnies étrangères pour un approvisionnement monopolistique. +Or, un pipeline Gazprom coûte généralement trois fois plus cher au kilomètre qu'un pipeline similaire occidental, compte tenu des « fuites » (pots-de-vin et pertes). +La politique étrangère russe a-t-elle pour objectif central d'extorquer les compagnies publiques russes au profit des responsables du Kremlin ? +Toutefois, les consommateurs n'ont pas confiance dans les fournisseurs qui coupent l'approvisionnement, augmentent leurs tarifs sans prévenir, exproprient leurs concurrents et laissent la production diminuer, comme ce fut le cas de Gazprom et d'autres entreprises publiques russes. +Les exportations de gaz vers l'Europe ont donc entamé une baisse. +Par ailleurs, il est évident que la politique étrangère de Poutine vise à stimuler le chauvinisme populiste. +En condamnant les étrangers, elle peut certes donner un coup de fouet au pouvoir autoritaire russe, mais elle aussi a un prix. +Les Etats-Unis et l'Europe, ainsi que les anciennes républiques soviétiques se sentent bien loin des tactiques agressives de Poutine. +La plupart veulent se protéger des embargos capricieux de la Russie -- par exemple, en cherchant d'autres sources d'approvisionnement énergétique. +Certes, la Russie a amélioré ses relations avec la Chine sous Poutine. Pour cela, il a fallu répondre aux demandes chinoises concernant deux grandes îles contestées pour lesquelles les deux pays se sont battus en 1969. +Le but apparent de Poutine était de garantir des fonds pour que Rosneft acquière le champ pétrolifère de Yugansk, qui faisait partie de la confiscation des actifs de Yukos. +Malgré tout, la Chine est elle aussi lasse de Poutine et envoie de puissants signaux aux dirigeants des anciennes républiques soviétiques, notamment à l'Ukrainienne Yuliya Tymoshenko. +Les nationalistes russes sont eux aussi indignés par la politique étrangère de Poutine, qui a éloigné les anciennes républiques soviétiques et affaibli les militaires russes. +Le Conseil de stratégie nationale, par nature nationaliste, a publié un rapport dévastateur sur la décadence de l'armée russe sous Poutine : les acquisitions de matériel militaire auraient chuté (par exemple, seulement trois aéronefs militaires en 2000). +Il est vrai que les coûts de l'armement ont nettement augmenté, mais seulement parce que les amis de Poutine au KGB, qui monopolisent la production d'armes, ont volé des quantité démesurées de matériel. +Malgré l'insuffisance de dépenses, Poutine semble obsédé par les gestes vains et provocateurs, comme la reprise des vols long-courriers de bombardiers au large des côtes américaines. +Au début des années 90, bon nombre d'Occidentaux et de Russes voulaient faire de la Russie un membre à part entière de l'Union européenne et de l'OTAN, à condition qu'elle devienne une véritable démocratie. +Malheureusement, l'Occident n'a jamais fait cette offre, et la démocratie s'est détournée du droit chemin. +Il faudrait donner une nouvelle chance à la Russie, mais seulement après le départ de Poutine. +L'ennemi de l'Occident n'est pas la Russie : c'est Vladimir Poutine. +L'Ukraine s'accroche au dollar +Les prix ont commencé a échappé à tout contrôle lorsque Ioulia Tymoshenko a été renommée Premier Ministre en décembre dernier. +Des observateurs malveillants ont laissé entendre qu'elle était à l'origine de dépenses sociales populistes -- ce qui est faux. +En fait, son gouvernement a resserré le budget juste avant le nouvel an. +Selon Viktor Pynzenyk, Ministre des Finances, l'État avait un excédent budgétaire de 0,6 % du PIB au premier trimestre 2008. +Cette situation n'est pas surprenante car les recettes publiques augmentent avec la hausse du coût de la vie, tandis que les dépenses sont généralement fixes. +En réalité, le gouvernement de Ioulia Tymoshenko a fait du bon travail sur le plan budgétaire. +Dans l'ensemble, les finances publiques se portent bien, avec une dette publique représentant 11 % du PIB. +D'après la Banque nationale d'Ukraine, les réserves internationales ont une croissance constante et s'élèvent désormais à 33 milliards de dollars. +La véritable cause de l'inflation ukrainienne est que le cours de sa devise, le hryvnia, est indexé sur le dollar américain. +Lorsque la valeur du dollar baisse, comme c'est le cas actuellement, l'économie très ouverte de l'Ukraine importe aussi l'inflation. +L'année dernière, le dollar a chuté de 12 % face à l'euro -- monnaie plus importante que le dollar pour le commerce extérieur du pays. +Le Fonds monétaire européen n'a cessé d'avertir l'Ukraine que son indexation sur le dollar provoquerait une crise financière compte tenu d'une sur- ou d'une sous-évaluation ; et lui demande depuis des années de libérer son taux d'échange. +Mais la Banque nationale d'Ukraine fait la sourde oreille : elle est donc le dernier pays d'Europe centrale et orientale à avoir une parité fixe avec le dollar. +Les puissants industriels ukrainiens ont fait l'éloge de la politique de faibles taux de change de la Banque nationale, pensant qu'elle rendait le pays plus compétitif. +Ils ignorent que la Banque ne peut contrôler l'appréciation nominale de la hryvnia. +En effet, les cours sont fixés par la réévaluation réelle, qui est la somme des variations du taux de change et de l'inflation. +De plus, l'ancrage au dollar a contraint la Banque nationale à poursuivre une politique monétaire laxiste. +Le taux actuel de refinancement en Ukraine est de 16 % par an, soit 10 % de moins que l'inflation, ce qui signifie que le pays a un taux d'intérêt réel négatif de 10 % par an. +Par conséquent, les disponibilités quasi monétaires ont explosé de 52 % l'année dernière -- l'inflation est en bien partie pour atteindre prochainement les 30 %. +Les dirigeants de la Banque nationale savent qu'ils doivent agir pour contenir l'inflation ; or, ils ont les mains liées par leur obstination à vouloir s'indexer sur le dollar, qui les empêche d'augmenter suffisamment les taux d'intérêt. +Ils sont revenus à des réserves obligatoires strictes par le resserrement des crédits, par conséquent, à une raréfaction des crédits internes en pleine crise financière internationale. Cette situation conduira probablement certaines banques de taille moyenne à la faillite en raison de problèmes de liquidité. +Le resserrement est toujours pire que le pire des marchés. +Pourquoi la Banque nationale ukrainienne persiste-t-elle à pratiquer cette politique néfaste ? +Si l'incompétence est l'une des explications, la politique est certainement la cause déterminante. +La Banque est subordonnée au Président Victor Ioushchenko, qui, même s'il a nommé Ioula Tymoshenko Premier Ministre, semble plus soucieux de lui nuire sur le plan politique que de juguler l'inflation. +Les défaillances de la politique de la Banque nationale sont si évidentes qu'elle sera bien obligée de libérer le taux de change, excepté qu'il sera peut-être trop tard. +Même au beau milieu d'une crise inflationniste, elle veut avancer à petits pas -- manifestement, elle n'a pas saisi la gravité de la crise. +La Banque devrait annoncer qu'elle n'a plus de taux de change cible et qu'elle cessera d'intervenir en n'achetant plus de dollars sur le marché des changes. +Si la Banque nationale laisse flotter les taux d'intérêt, il n'est pas exclu que les Ukrainiens échangent des milliards de dollars en hryvnia et provoquent une hausse de son taux d'échange. +Cette situation permettrait de contenir l'inflation puisque la Banque pourrait alors limiter la masse monétaire par des taux d'intérêts plus élevés que par le resserrement. +Le temps est compté. +Selon Rudi Dornbusch, brillant économiste, les crises financières débutent généralement plus tard que prévu, mais se développent plus rapidement qu'on l'imagine. +L'Ukraine est au bord du gouffre financier. +Ioushchenko et la Banque nationale ukrainienne peuvent encore agir. S'ils ne s'y prennent pas immédiatement, une crise financière coûteuse et inutile risque d'éclater. +En tant que Premier Ministre, Ioushchenko a sauvé son pays d'une crise financière au début de l'année 2000. +Il ne doit pas sacrifier le bien-être de l'Ukraine pour ses ambitions politiques. +Le retour des siloviki +La déclaration de Poutine est totalement inattendue. +Deux jours plus tôt, Ron Kirk, représentant américain au Commerce, et Catherine Ashton, commissaire au commerce de l'Union européenne achevaient des négociations fructueuses sur l'adhésion de la Russie à l'OMC avec Igor Shuvalov, premier adjoint de Poutine, Alexei Kudrin, ministre des Finances, et Elvira Nabiullina, ministre du développement économique. +Le 3 juin dernier, Poutine affirmait être certain que la Russie « rejoindrait vite l'OMC ». +Les dirigeants du Bélarus et du Kazakhstan semble tout aussi surpris par la déclaration de Poutine, en particulier puisque la Russie vient tout juste d'interdire la quasi-totalité des importations de produits laitiers du Bélarus, dans une manoeuvre protectionniste. +Après 16 années de négociations, la Russie semblait prête à rejoindre l'OMC dans les deux mois qui suivaient. +En fait, il ne restait plus qu'à franchir trois obstacles difficiles. +Tout d'abord, l'Ukraine demandait un protocole bilatéral sur l'accès au marché, qui aurait contraint la Russie à lever une centaine de sanctions commerciales, principalement en agriculture. +Le deuxième obstacle, essentiellement politique, concerne les contrôles de la frontière avec la Géorgie : soit l'Abkhazie et l'Ossétie du Sud sont indépendantes, comme le maintient la Russie, soit elles font partie de la Géorgie, comme le pense le reste du monde. +Enfin, l'Union européenne insiste pour que la Russie abandonne les tarifs d'exportation prohibitifs prévus pour le bois de sciage. +Seule la question géorgienne est réellement sérieuse. +L'union douanière avec le Bélarus et le Kazakhstan ne saurait être une alternative à l'adhésion de la Russie à l'OMC. +D'une part, aucun pays n'est jamais entré à l'OMC à titre collectif, d'autre part, cela n'est pas possible d'un point de vue légal selon Pascal Lamy, directeur général de l'OMC. +De plus, l'union douanière a été proclamée en 1995 et ne peut se former qu'en juillet 2011 au plus tôt, ce qui est peu probable. +Avant tout exportatrice de matières premières, la Russie a moins besoin de l'OMC qu'un pays fabricant comme la Chine. +Quand bien même, 1/5 des exportations russes se compose de métal et de produits chimiques vulnérables aux mesures antidumping. +Selon les estimations d'une série d'études de la Banque mondiale et de la Russie, la croissance économique du pays pourrait gagner un demi point à un point de pourcentage d'ici cinq ans en rejoignant l'OMC. +En outre, l'adhésion à l'OMC est importante pour la position internationale de la Russie. +C'est le seul pays du G20 non membre de l'OMC, qui représente 96 % du commerce mondial. +L'OMC est de plus un choix de stratégie économique et politique. +Avant de quitter la présidence en mai 2008, Poutine présentait son programme « Russie 2020 ». +Une « stratégie d'innovation » était au cœur de ce programme, basée sur davantage de réformes de marché et d'investissements en capital humain, devant conduire à une croissance annuelle de 6-7 %. +Dans leurs discours, le président Dmitri Medvedev et ses technocrates embrassent cette doctrine. +Or, Poutine et ses siloviki (alliés politiques dont le pouvoir se fonde dans le dispositif sécuritaire) semblent finalement préférer une « stratégie d'inertie », le pire des scénarios de Russie 2020. +Cette stratégie de capitalisme d'État revient à vivre sur les richesses énergétiques nationales et à ne rien faire pour combattre les énormes problèmes de corruption et de bureaucratie du pays. +En revenant sur les décisions relatives à l'OMC, Poutine a montré une fois de plus qu'il était maître de la Russie. +Il a fait de même l'été dernier en s'en prenant violemment au grand groupe sidérurgique Mechel et en provoquant la guerre en Géorgie. +L'hiver dernier, les mauvais choix politiques de Poutine face à la crise financière ont sapé son autorité. +Au lieu de protéger les entreprises privées russes, il a manigancé un gel des liquidités au niveau national, qui a entraîné une chute du PIB de 9,5 % au premier trimestre 2009 et ce, malgré les énormes réserves étrangères de la Russie. +Les technocrates pragmatiques ont pris la relève, mais les prix du pétrole ayant doublé -- ce qui signifie que pour l'heure l'économie russe n'est plus en danger  -- , les siloviki reprennent les commandes. +Quelle sera la prochaine étape ? +L'influent analyste militaire russe Pavel Felgenhauer insiste pour que le principal objectif soit d'achever la Géorgie et son président provocateur Mikheil Saakashvili, toujours au pouvoir. +La Géorgie n'a pas reçu de soutien militaire et demeure quasiment sans défense. +Poursuivant son offensive de propagande contre la Géorgie, le Kremlin s'est opposé au prolongement de la mission des observateurs des Nations Unies en Géorgie et en Abkhazie. « Caucase 2009 », grande opération militaire russe, est en cours. +L'invasion de la Géorgie a fait suite à la dernière opération de ce type, « Caucase 2008 ». +Durant la dernière phase de cette opération, du 6 au 8 juillet, le président américain Barack Obama est censé rencontrer le président Medvedev à Moscou. +Medvedev espère manifestement étendre et améliorer le rôle de la Russie et son propre rôle dans le monde. +De leur côté, les siloviki préfèrent être solidement installés au pouvoir, dans une Russie isolée et autoritaire. +Le Kremlin veut un nouvel accord stratégique de contrôle des armes, alors que les siloviki ne souhaitent rien de plus. +Le gouvernement Obama espérait voir aboutir les négociations de la Russie à l'OMC, mais les manœuvres de Poutine ont éliminé les chances d'un tel résultat. +Les États-Unis souhaitent également faire progresser l'intégrité territoriale des anciens États soviétiques, comme la Géorgie, mais cela est tout aussi improbable. +Poutine et ses collaborateurs semblent tout mettre en oeuvre pour faire échouer Medvedev, ce qui porte à croire que leur jalousie du pouvoir limité de Medvedev est plus forte que leur volonté de défendre des intérêts nationaux de la Russie. +Malgré tout, il reste un espoir pour que Poutine soit confronté à suffisamment de réactions négatives pour changer de position sur l'adhésion à l'OMC. +Après tout, c'est lui qui a suspendu les négociations après la guerre d'août 2008 en Géorgie, pour les reprendre au printemps suivant. +Occidentaliser la région de la mer Noire +La conclusion sanglante de la prise d'otages dans une école en Ossétie du nord et les récents affrontements en Géorgie entre les troupes du gouvernement et les forces séparatistes ont une fois encore amené la région troublée de la mer Noire à la une des journaux. +Cette violence grandissante tire la sonnette d'alarme pour l'Occident, mettant en exergue la nécessité d'une nouvelle stratégie euro-atlantique dans une région d'une importance capitale qui s'étend à la croisée de l'Europe, de l'Eurasie et du Moyen-Orient. +En effet, la région de la mer Noire représente la frontière orientale de la communauté euro-atlantique avec le Moyen-Orient étendu. +Avec l'Afghanistan, l'Irak et l'Iran en tête de la liste des défis stratégiques auxquels est confronté l'Occident, l'ancrage de la démocratie et de la sécurité dans ces nouveaux pays frontières de la communauté euro-atlantique est devenu une priorité pour les Etats-Unis et l'UE. +S'ils parviennent à une conclusion satisfaisante, ils seraient ainsi à même de faciliter le processus intimidant de réforme et de modernisation dans le Moyen-Orient étendu. +La " Révolution rose " de Géorgie en hiver dernier a démontré que la volonté de mettre en place une réforme radicale est désormais présente. +Pour la première fois, un pays de la région associe ses aspirations avec les étapes concrètes nécessaires pour devenir un candidat viable pour une éventuelle adhésion dans les institutions euro-atlantiques. +Les touristes se rendant dans la capitale de la Géorgie, Tbilisi, peuvent désormais y voir le même niveau de détermination à rejoindre l'Occident que celui qui existait une décennie auparavant dans les pays baltes. +L'Amérique et l'Europe ont un intérêt commun dans la réussite de ces efforts car elles cherchent à diversifier les approvisionnements énergétiques en plus du pétrole provenant d'Arabie Saoudite et du golfe Persique. +La mer Noire est prête à devenir une conduite essentielle pour le pétrole et le gaz naturel ne provenant pas de l'OPEC et du golfe Persique et qui alimentent les marchés européens et au-delà. +La stabilité et l'intégration à long terme de la région de la mer Noire avec l'Occident sont donc relativement importantes pour la stratégie de sécurité énergétique sur le long terme des membres de l'UE et de l'OTAN. +Ce ne sera pas chose aisée que d'ancrer ces pays dans l'Occident. +Personne ne sait si cet ancrage aura comme conséquence d'améliorer les relations ou d'intégrer complètement ces pays dans l'UE et l'OTAN. +Mais ces deux organisations doivent étendre leur portée à ces pays, un processus qui doit être considéré comme la phase suivante du processus aboutissant à la création d'une Europe étendue. +A quoi devrait ressembler la nouvelle stratégie de proximité, courageuse bien que réaliste, de l'UE et de l'OTAN pour la région de la mer Noire ? +Manifestement, les pays de la région sont plus faibles et bien moins prêts que d'anciens candidats à l'intégration occidentale. +Mais fort heureusement, l'UE et l'OTAN sont en bien meilleure position pour développer une stratégie ambitieuse qu'ils ne l'étaient vis-à-vis de l'Europe centrale et de l'est une décennie auparavant. +Si l'UE et l'OTAN décidaient de lancer une stratégie de proximité courageuse pour la région, ils seraient en mesure de tirer parti des outils, du talent conceptuel et de l'expérience pratique existants. +Par exemple, l'OTAN comprend déjà trois membres (la Bulgarie, la Roumanie et la Turquie) ayant une frontière commune avec la mer Noire. +Comme pour l'UE, les candidatures de la Roumanie et de la Bulgarie doivent avoir une conclusion positive, tout comme les aspirations de la Turquie à l'adhésion. +Une UE incluant Sofia et Bucarest, et prête à accueillir Ankara, serait bien positionnée pour étendre la région. +L'UE a également besoin de donner corps à sa nouvelle Politique de voisinage tandis que l'OTAN doit appliquer de nouveaux mécanismes destinés à renforcer les liens avec la région. +Plutôt qu'un sprint de 100 ou 200 mètres, les deux organisations doivent penser davantage en termes d'une course bien plus longue, peut-être un marathon. +Si les pays de la région adoptent l'idée, un réseau de membres actuels de l'UE et de l'OTAN pourrait avancer des projets et une assistance destinés à promouvoir une identité et une communauté de la mer Noire. +Les récents événements en Géorgie nous rappellent que la résolution des " conflits gelés " de la région, à savoir ceux qui surviennent dans les régions dissidente d'Ossétie du sud et d'Abkhazie, de Transdniestrie en Moldova, et de Nagorno-Karabakh en Azerbaïdjan, doit être une priorité. +En réalité, ces conflits ne sont pas gelés ; ils suppurent des blessures qui alimentent la corruption et le crime organisé. +Ils entravent la démocratisation et incitent à l'instabilité. +Tandis que ces conflits impliquent des griefs historiques, les acteurs extérieurs, particulièrement la Russie, contribuent à empêcher leur résolution, qui est essentielle pour la réussite des réformes. +Jusqu'à présent, ni l'Amérique ni l'Europe n'ont fait de ces conflits une priorité majeure. +La résolution de ces guerres semi-latentes requiert une implication politique intensifiée, un engagement économique et la volonté de fournir des forces et des moniteurs occidentaux de maintien de la paix si et quand ils s'avèrent nécessaires. +Mais la paix et la stabilité à long terme indispensables pour promouvoir une réforme économique et politique dans la région exigeront également un changement dans le comportement russe ou une diminution de l'influence russe. +L'expérience de la dernière décennie semble suggérer qu'une politique visant à engager profondément le Kremlin tout en protégeant les intérêts occidentaux fondamentaux pourrait constituer la meilleure solution. +Le développement d'une nouvelle stratégie euro-atlantique pour la région de la mer Noire doit commencer par la reconnaissance, par les démocraties d'Amérique du nord et d'Europe, de leur enjeu moral et politique dans le résultat. +L'introduction de la stabilité et de la sécurité dans ces pays constitue la prochaine étape logique de la construction d'une Europe " complète et libre " et de la sécurisation de la frontière orientale de la communauté euro-atlantique avec le Moyen-Orient. +Cette tâche sera aussi importante au cours de la prochaine décennie que l'intégration de l'Europe centrale et de l'est dans l'Occident dans les années 1990. +Un « New Deal vert » mondial +Loin d'accabler une économie mondiale au bout du rouleau, les investissements en faveur de l'environnement sont précisément la prescription nécessaire pour créer des emplois, remplir les livres de commande et remettre les économies de la planète sur les rails. +Les préoccupations environnementales étaient auparavant considérées comme un luxe ; aujourd'hui, elles sont incontournables, ce que certains économistes, mais de loin pas tous, ont compris. +Une proportion importante du plan de relance de 825 milliards de dollars du président Barack Obama pour les Etats-Unis est consacrée à encourager les énergies renouvelables, à rendre des millions de logement plus écologiques et à améliorer un  réseau électrique obsolète. +Il est prévu que ces investissements créent près de cinq millions d'emplois « verts », et relancent le secteur de la construction et de l'industrie d'équipement. Ils doivent également permettre aux Etats-Unis de s'atteler à la tâche non moins sérieuse qu'est la lutte contre le changement climatique et la sécurité énergétique. +La Corée du Sud, qui enregistre des pertes d'emplois pour la première fois depuis cinq ans, a également perçu le côté positif de ces temps difficiles. +Le gouvernement du président Lee Myung-Bak prévoit d'investir 38 milliards de dollars dans un projet, créateur d'emplois, d'assainissement de l'eau au moyen de construction de stations d'épuration et de l'assainissement de quatre des principaux fleuves du pays, tout en réduisant les risques naturels par l'élévation de digues. +D'autres aspects de ce programme comprennent l'aménagement de modes de transport écologiques, comme les trains à grande vitesse et des centaines de kilomètres de pistes cyclables, l'utilisation du méthane des décharges pour la production d'énergie et des investissements dans la production des véhicules hybrides. +D'autres pays, notamment la Chine, le Japon et le Royaume-Uni ont également prévu des programmes verts, créateurs d'emplois. +Ils concernent également les économies en développement en termes de création d'emplois, de lutte contre la pauvreté, et de la recherche de nouveaux débouchés à une époque où les prix des denrées de base et des exportations sont de plus en plus incertains. +En Afrique du Sud, l'initiative Working for Water lancée par le gouvernement -- et qui emploie plus de 30.000 personnes, dont des femmes, des jeunes et des handicapés -  s'appuie également sur les occasions offertes par cette époque de crise. +Le pays dépense près de 60 millions de dollars par an pour lutter contre l'infestation de plantes allogènes envahissantes qui menacent la vie sauvage indigène, les ressources en eau, les destinations touristiques importantes et les terres arables. +Cette initiative est vouée à se développer avec l'arrachage de plus de 40 millions de tonnes de plantes allogènes pour servir de combustibles pour des centrales thermiques. +Près de 500 mégawatts, ou 2 pour cent des besoins en électricité du pays, devraient ainsi être produits, avec la  création de 5000 emplois supplémentaires. +Il est donc évident que certains pays considèrent les investissements dans les infrastructures, la production d'énergie et les écosystèmes comme un pari sur l'avenir. +D'autres peuvent douter des retours sur investissement de la séquestration de carbone en forêt ou des énergies renouvelables pour les 80 pour cent d'Africains qui n'ont pas l'électricité. +D'autres ne savent peut-être simplement pas comment suivre l'exemple. +Début février, le Programme des Nations unies pour l'environnement (PNUE) organisera une réunion de certains des principaux économistes mondiaux au siège de l'Onu à New York. +Une stratégie pour un « New Deal vert » mondial, adapté aux difficultés spécifiques que rencontrent les différents pays, sera concrétisée pour aider les dirigeants mondiaux et les gouvernements à formuler des incitations fiscales qui s'attaquent aux problèmes sur plusieurs fronts. +Le nouveau « New Deal vert » mondial, l'initiative lancée par le PNUE en octobre 2008, répond au malaise économique actuel. +Allouées avec discernement, ces incitations fiscales pourraient déclencher des tendances profondes et novatrices, ouvrant la voie à une économie verte, plus durable, pour le XXIe siècle. +Les milliers de milliards de dollars mobilisés pour faire face à la crise financière actuelle, associés aux montants astronomiques que les investisseurs attendent de placer, représentent une opportunité impensable il y a 12 mois à peine : l'occasion d'adopter une direction plus efficace et intelligente en termes de ressources et qui permette de s'attaquer à tout un éventail de problèmes, des changements climatiques à la rareté des ressources naturelles, et de la pénurie d'eau potable à la disparition de biodiversité. +Injecter aveuglément les milliards de dollars prévus par les plans de relance dans des industries obsolètes et des modèles économiques épuisés serait un terrible gaspillage et hypothéquerait l'avenir de nos enfants. +Les dirigeants mondiaux doivent au contraire se saisir de cette occasion pour investir dans les innovations, promouvoir les entreprises durables et encourager de nouvelles formes d'emplois décents et à long terme. +La promesse de la nutrigénomique +Tout au long de notre vie, nous sommes exposés à un mélange complexe d'aliments. +Des processus biochimiques variés transforment ces aliments en molécules nécessaires à notre organisme et en tirent l'énergie dont nous avons besoin. +On s'aperçoit aujourd'hui que beaucoup d'ingrédients alimentaires auxquels on ne prêtait pas attention dans le passé ne sont pas sans conséquence sur notre santé. +Ainsi, le lycopène de la sauce tomate après cuisson jouerait un rôle dans la prévention du cancer de la prostate. +Chacun sait que ce que nous mangeons peut avoir des répercussions sur notre santé. +L'alimentation ne va sans doute pas nous guérir, mais un régime riche en fruits, en légumes, en céréales et en huile végétale protège contre nombre de cancers, contre les maladies cardiovasculaires et d'autres maladies associées à l'âge. +Le problème, tant pour les scientifiques que pour les consommateurs, est que l'impact varie d'une personne à l'autre. +Il faut donc chercher à comprendre comment les aliments que nous ingérons réagissent avec notre organisme, ou plus précisément avec nos gènes, pour affecter notre santé. +C'est la "nutrigénomique". +L'objectif à long terme de cette science est de comprendre comment notre organisme réagit aux aliments en utilisant ce que l'on appelle la "biologie des systèmes". +Chaque cellule de notre corps (à l'exception des globules rouges parvenus à maturité) - il y en a quelques 50.000 milliards chez un adulte - comportent dans leur noyau deux copies de molécules d'ADN qui sont enroulées l'une avec l'autre pour former 46 filaments différents appelés chromosomes. +Ils sont répartis en 22 paires dont les éléments proviennent de chacun de nos parents biologiques, plus une paire de chromosomes XY pour les hommes ou XX pour les femmes (le Y vient du père ou de la mère, tandis que le X vient toujours de la mère). +L'ADN stocke des informations qui régissent la croissance, les facultés réparatrices, le fonctionnement et la reproduction de nos cellules. +Il est constitué de deux brins (formés d'acide phosphorique et d'un sucre) reliés entre eux par des composés chimiques appelés bases. +Il y a quelques trois milliards de bases, elles sont de quatre types différents seulement, et c'est leur séquence qui constitue notre code génétique, le génome humain. +Ce code génétique se trouve dans 30.000 à 40.000 régions des chromosomes que l'on appelle les gènes. +Ce sont les gènes qui sont porteurs des caractères héréditaires, et sauf dans le cas des vrais jumeaux, leur combinaison est unique pour chaque individu. +Mais le phénotype ne dépend pas seulement du génotype. +C'est par exemple le cas du risque de rejeter une greffe ou de développer une maladie liée à l'âge. +L'ADN ne peut pas commander directement à partir du code génétique la fabrication des protéines, molécules qui jouent un rôle essentiel dans l'organisme. +L'acide ribonucléique (ARN) joue le rôle d'intermédiaire et traduit le code génétique dans un processus appelé transcription (lecture des gènes) qui aboutit à la création de protéines en trois dimensions. +Ces protéines résultent de la combinaison de 22 acides aminés essentiels (essentiels en ce sens que notre organisme ne les synthétise pas) qu'il faut trouver dans l'alimentation. +La nutrigénomique (qui associe les recherches portant sur le génome, la nutrition et la santé) est d'une telle complexité que les spécialistes en nutrition ne peuvent plus travailler seuls. +Pour progresser, il leur faut l'apport d'experts dans des domaines aussi variés que la biologie cellulaire et moléculaire, les mathématiques et les statistiques, la chimie alimentaire et les sciences sociales. +Non à la guerre des civilisations. +Il est plus juste de dire qu'il ne s'agit pas d'une nouvelle guerre. +Le terrorisme utilisé comme un instrument de la politique existe depuis longtemps au Moyen-Orient, et il n'est pas dirigé uniquement contre Israël et les Etats-Unis. +Ce sont des agents syriens qui ont assassiné en 1982 Beshir Gemayel, le président élu du Liban. +Depuis des dizaines d'années les terroristes kurdes sont actifs en Turquie, ce sont des terroristes islamistes qui ont assassiné le président Sadate en 1981 et qui ont ensuite tenté d'assassiner le président Moubarak. +Ce n'est pas un combat contre l'impérialisme occidental ou la mondialisation. +Ce n'est pas non plus une réponse à l'impasse violente dans laquelle se trouvent aujourd'hui les négociations entre Israël et les Palestiniens : certaines des actions terroristes de Oussama Ben Laden ont été perpétrées au milieu des années 1990, en pleine lune de miel entre Israéliens et Palestiniens après les accords d'Oslo en 1993. +On assiste à un phénomène bien plus profond, aussi culturel que politique et économique. +L'Islam peut tout aussi bien être une religion tolérante que triomphaliste, comme l'autre religion mondiale, le christianisme. +Mais il y a au sein de l'Islam extrémiste une faction qui considère la modernité - les idées des Lumières - comme son ennemi. +Elle voit la démocratie, l'égalité, le libéralisme politique, la séparation de l'Etat et de l'Eglise, l'égalité des sexes, la laïcité comme l'œuvre du Diable. +De la même manière que les Anabaptistes de Münster, ils se voient comme les agents de Dieu au sein d'un monde corrompu par les péchés du matérialisme et de l'incroyance. +Une vue aussi manichéenne du monde justifie le terrorisme en tant que volonté de Dieu. +Pour des gens comme Ben Laden - il semble que c'est sa version du fondamentalisme islamique qui est derrière les actes de terreur de New-York et Washington - même la monarchie d'Arabie Saoudite représente le Diable pour avoir facilité la présence américaine au Moyen-Orient. +Depuis des années le terrorisme a bénéficié de l'appui tacite de certains Etats arabes. +Quelques pays européens, pour des raisons liées à la raison d'Etat de Machiavel, ont aussi fermé les yeux lorsqu'ils ont été confrontés au terrorisme. +La Syrie, l'un des principaux Etats qui apporte son aide au terrorisme, va peut-être accéder à un siège au Conseil de Sécurité. +Mais de la même manière qu'il ne pouvait y avoir de neutralité morale face à la guerre contre le nazisme et le fascisme, la coalition que les Américains essayent de construire aujourd'hui sera basée sur l'idée que si la guerre contre le terrorisme doit être prise au sérieux, la tolérance vis à vis des régimes qui le soutiennent doit cesser. +Certains terroristes agissent pour des causes légitimes et leurs demandes sont justifiées (les Kurdes et les Palestiniens par exemple). +Mais la fin ne justifie pas les moyens. +Le terrorisme des années 1970 et 1980 (détournements d'avion, meurtre des athlètes israéliens aux Jeux olympiques de Munich en 1972) a donné naissance aux attentats kamikazes d'inspiration islamiste commis par des Palestiniens et finalement au paysage d'apocalypse que l'on voit maintenant à New-York et à Washington. +La guerre qui s'annonce va être difficile. +La guerre contre l'Irak il y a dix ans et la guerre "virtuelle" menée dans le ciel du Kosovo ne peuvent servir de précédent. +Elles nous ont amené à penser pendant trop longtemps que la guerre contre le terrorisme était une affaire de police, que des enquêtes menant à des condamnations étaient le moyen de lutter contre des terroristes fanatiques, au lieu d'une lutte armée implacable et rude. +En fin de compte ces illusions se sont dissipées brutalement avec les massacres de New-York et de Washington. +Il n'y a pour l'instant aucune stratégie clairement établie pour mener cette guerre -- on en trouvera une. +Mais il serait tragique que la lutte contre la terreur se transforme en guerre des civilisations, l'Occident contre l'Islam. +La vision de l'Islam qu'ont les terroristes en est une perversion. +Mais ceux qui soutiennent le terrorisme doivent être traités avec la même sévérité que les terroristes eux-mêmes, et ils le seront probablement. +C'est à cette condition que cette guerre pour le monde des Lumières, le monde moderne qui s'étend à travers tous les océans et embrasse toutes les fois, pourra être gagnée. +Comment cibler l'Irak +Dans le débat actuel sur la politique à observer envers l'Irak, deux alternatives extrêmes sont généralement présentées : soit étendre la campagne militaire contre le terrorisme à l'Irak, soit maintenir le statut quo précaire actuel avec ce pays. +Des discussions vaines portant sur la reprise des sanctions de l'ONU constituent une autre version de la deuxième alternative - à savoir, ne rien faire. +Les deux alternatives sont dérangeantes. +Toutefois, la préparation d'une guerre au sol contre l'Irak - l'achèvement de l'histoire inachevée de la Guerre du Golfe de 1991 - compose une stratégie à haut risque. +Les pays arabes, alliés déjà douteux dans la guerre contre leurs homologues musulmans en Afghanistan, seront encore moins dignes de confiance dans une guerre contre leurs homologues arabes. +Les Européens, sans parler des Russes, peuvent être modestes. +Les chances militaires apparaissent intimidantes. +Néanmoins, laisser le présent statut quo continuer est également problématique. +Cela signifie que le peuple iraquien continuera à souffrir - à la fois des brutalités de Saddam ainsi que des conséquences des sanctions découlant de son autorité continue. +Cette situation continuera en outre à envoyer le mauvais message aux futurs terroristes : tout vous sera pardonné. +La faiblesse perçue des USA après les bombardements de l'ambassade en Afrique Orientale et l'attaque lancée sur le destroyer USS Cole ont sans aucun doute contribué à l'audace des attaques du 11 septembre. +D'autres options existent toutefois et ces options combinées pourraient contribuer à renverser Saddam sans nécessairement conduire à une action militaire pure. +Tout d'abord, les forces locales opposées à Saddam doivent être encouragées. +Par ceci, je n'entends pas la soi-disant opposition iraquienne totalement inefficace et vantarde. +Les forces locales à encourager - encourager par des personnes des opérations spéciales et la fourniture d'armes et d'entraînements - sont les chefs des Shi'a du sud et des Kurdes du nord. +Pour ces derniers, l'infrastructure de soutien existe déjà, bien qu'elle ait été partiellement démantelée pendant l'administration Clinton. +Dans le sud des Shi'a, qui ne s'est pas encore remis de la brutale suppression de la funeste rébellion de 1991, des contacts doivent être créés et des réseaux doivent être établis. +Les voisins de l'Irak - l'Arabie Saoudite au sud et la Turquie au nord - doivent être rassurés sur le fait que la rébellion Shi'a et kurde n'entraînera pas le démantèlement de l'Irak et la modification des frontières : les deux pays ont des préoccupations légitimes sur cette question. +Avec l'actuel régime bien plus ouvert à Téhéran, Riyadh peut également être convaincu que les dangers émanant d'une entité Shi'a contrôlée par les Iraniens en Irak du sud sont moins terribles maintenant qu'ils ne l'étaient en 1991. +D'un autre côté, les relations intimes qui existent désormais entre la Jordanie et Saddam doivent être traitées, en apportant toute la sensibilité aux dilemmes de la Jordanie. +L'élite politico-militaire iraquienne doit être à la fois ciblée et approchée. +Saddam a été magistral en attribuant les positions les plus cruciales au sein de l'armée et des services de sécurité à des individus de son clan Tikriti. +Mais ces derniers sont loin de constituer un groupe monolithique : l'inimitié, la jalousie, la colère par rapport aux brutalités et aux injustices passées infligées à plusieurs membres de leurs familles peuvent rendre certains généraux et colonels ouverts aux suggestions d'un coup d'Etat. +Ces suggestions doivent être fondées sur une approche à deux niveaux : tout d'abord, les USA, avec le soutien de l'ONU, doivent créer un tribunal pour crimes de guerre pour juger Saddam et ses principaux généraux : ils doivent savoir que jusqu'au moment de rendre des comptes, ils seront traqués comme Milosevic et ses laquais. +Une mise en examen essentielle doit traiter de l'utilisation des gaz toxiques contre les rebelles kurdes à Halabja pendant la guerre Iran/Iraq. +En parallèle à cela, et à l'encouragement des insurrections dans le sud et dans le nord de l'Irak, des préparations pour une solution militaire doivent être améliorées de façon crédible. +Mais avec le bâton doit venir une carotte : avec une certaine intelligence, certains généraux et colonels iraquiens doivent être approchés avec des offres d'amnistie et de soutien s'ils décidaient de tenter de renverser Saddam. +Ils doivent être informés en termes clairs que leur inaction les exposera (comme Saddam) à une mise en examen dans un tribunal international pour crimes de guerre, une fois l'autorité de Saddam renversée. +Ils doivent également bénéficier de l'annulation des sanctions imposées à l'Irak à condition- une fois Saddam destitué - qu'ils acceptent la reprise d'un régime d'inspection de l'ONU. +Même si cette opération ne renverse pas immédiatement le régime de Saddam, et comme l'ont montré Ceausescu et Milosevic, des dictateurs nerveux commettent des erreurs fatales. +Un principe sous-tend cette ligne de pensée : imaginer qu'il existe une alternative démocratique à Saddam ou qu'une fois disparu, il se produira une transition démocratique en Irak, revient à s'engager dans de dangereuses illusions. +La seule alternative au régime de Saddam consiste en une sorte d'autorité militaire, mais moins oppressive et relativement plus ouverte. +Elle devra certainement être engagée dans une politique étrangère et nationale non basée sur le terrorisme, la violence et une quête telle que celle de Saddam pour les armes de destruction de masse. +Voici, indubitablement, une stratégie compliquée, et qui comporte certainement ses propres embûches. +Un de ses avantages principaux réside dans le fait qu'une telle approche a réellement une chance d'obtenir le soutien, quoique parfois tacite, des pays arabes -de l'Europe et de la Russie également. +Une telle approche calibrée, qui combine toutefois une compréhension distincte de la nature du régime de Saddam et de ses faiblesses, a une plus grande chance de réussir qu'un assaut direct ou que les dangers inhérents au fait de permettre à Saddam de rester au pouvoir. +Les succès obtenus en Afghanistan appellent une approche également nuancée et sophistiquée en ce qui concerne l'Irak. +Un protectorat saoudien pour les Palestiniens +De Hosni Moubarak à Ariel Sharon, les leaders politiques du Moyen-Orient se rendent à Washington pour discuter du redémarrage du processus de paix. +Le président Bush évoque un Etat palestinien et la réforme de l'Autorité palestinienne, mais il n'a pas indiqué (jusqu'à présent) la voie pour y parvenir. +Shlomo Avineri, ancien directeur général du ministère israélien des Affaires étrangères, propose ici une nouvelle approche qui permettrait de réaliser ces deux objectifs. +Le Moyen-Orient est confronté à deux exigences contradictoires. +Les Palestiniens doivent reconstruire leur infrastructure politique presque totalement détruites par les récentes incursions israéliennes sur la rive gauche du Jourdain. +Mais il est clair qu'ils sont incapables de créer un régime qui ne soutienne pas le terrorisme et qui soit affranchi d'une idéologie qui nie violemment le droit à l'existence d'Israël. +Après la signature des accords d'Oslo il y a neuf ans, tant en Israël qu'à l'étranger, les défenseurs du processus de paix, espéraient que l'OLP - un mouvement de libération nationale fortement lié au terrorisme - se transformerait en organisation politique responsable et acceptable. +C'est à cette condition qu'un Etat palestinien souverain pourrait coexister pacifiquement avec Israël. +Si l'ANC a réussi une telle transition en Afrique du Sud, pourquoi pas les Palestiniens ? +En ce qui concerne les accords d'Oslo, l'espoir que Yasser Arafat devienne un Nelson Mandela palestinien avait même vaincu le scepticisme israélien. +Cela n'a pas été le cas. +En 2000, par son refus des propositions du président Clinton et du Premier ministre israélien Ehud Barak à Camp David et ensuite en Egypte, Arafat a manqué l'occasion historique de créer un Etat palestinien. +A la place, il a lancé l'Intifada au cours de laquelle des milices palestiniennes rivalisaient dans un déchaînement terroriste et des attaques-suicide contre des civils israéliens - et ceci pas seulement dans les territoires occupés mais aussi à Jérusalem, Tel-Aviv, Haïfa, Hadera, Afula et Netanya. +Certaines de ces milices étaient sous son contrôle direct ou agissaient avec son approbation semi-officielle, tandis que d'autres lui étaient opposées. +Leur objectif commun était d'arracher par la terreur ce qui ne pouvait être obtenu par la diplomatie. +Les territoires palestiniens se sont transformés en une zone de chaos et de désordre qui n'était pas sans rappeler le Liban des années 1970-80. +Israël ne permettra pas la reconstruction de structures terroristes à ses portes, et aucun pays au monde ne l'accepterait. +Mais il ne devrait pas être permis au gouvernement d'Ariel Sharon d'utiliser comme alibi l'échec total des Palestiniens à construire un Etat pacifique pour perpétuer l'occupation. +Mais que faudrait-il faire ? +Une force internationale fera-t-elle la chasse aux auteurs d'attentats-suicide ? +Aura-t-elle les moyens voulus en renseignement et la volonté de combattre s'il en était besoin ? +Une telle force est une dangereuse absurdité. +Les institutions palestiniennes doivent être reconstruites, mais dans un contexte qui soit légitime du point de vue arabe. +Comme le Kosovo et la Bosnie, les territoires palestiniens devraient être placés sous protectorat international. +Un protectorat saoudien sur les Palestiniens serait légitime à l'intérieur du monde arabe ; il disposerait également du savoir et des techniques utilisés dans le monde arabe en terme de sécurité. +La Palestine à la croisée des chemins +L'intervention tant attendue du président George W. Bush sur la question du Moyen-Orient est un mélange d'espoir pour chaque camp et de durcissement du discours. +L'espoir est clairement énoncé : Israël doit pouvoir assurer sa sécurité et ne plus vivre dans la crainte des attentats suicides et autres actes de terrorisme ; les Palestiniens ont droit à leur dignité, à la fin de l'occupation israélienne, à leur souveraineté et à leur État. +Mais le durcissement du discours ne s'est opéré qu'à l'encontre du leader actuel des Palestiniens : sans mentionner le nom de Yasser Arafat, M. Bush a clairement lancé un appel au renouvellement de la direction palestinienne, une direction qui « ne soit pas compromise dans les affaires de terrorisme ». +La direction actuelle, selon lui, n'a pas combattu le terrorisme, mais l'a plutôt encouragé et s'y est même « engagé ». +M. Bush a condamné le rejet par l'Autorité palestinienne des propositions de paix avancées par Israël et a promis le soutien des États-Unis envers la création d'un État palestinien si la direction change, réaffirmant ainsi que « l'État palestinien ne peut émerger du terrorisme ». +On ne peut imaginer de condamnation plus sévère pour M. Arafat et la totalité de la direction palestinienne. +M. Bush suggère aujourd'hui clairement que M. Arafat n'est pas le partenaire approprié pour la paix, que les Accords d'Oslo sont, de fait, sans avenir et qu'ainsi l'Autorité palestinienne, que ces Accords ont permis de créer, n'a plus de légitimité. +En adoptant cette politique, M. Bush se place dans une position délicate entre les pressions arabes pour soutenir la création d'un État palestinien et son propre engagement à combattre le terrorisme sans céder à la pression des attentats suicides. +Son discours est un mélange très habile de carotte et de bâton. +Mais M. Bush doit maintenant relever deux défis, l'un majeur et l'autre de moindre importance, dans la mise en place de sa politique. +Le défi majeur est de définir comment répondre aux besoins de changements à la tête de la direction palestinienne. +Ainsi, organiser des élections en Palestine aujourd'hui n'a pas plus de sens que cela n'en avait sous le régime soviétique de l'URSS. +Comment le changement démocratique peut-il s'opérer dans une telle société ? +Se fera-t-il dans le chaos et la violence de la chute d'un régime comme ce fut le cas à la chute de Nicolas Ceausescu en Roumanie ? +Ou bien peut-on espérer que les Palestiniens déposent leur régime autocratique de manière pacifique, comme en Serbie, quand Slobodan Milosevic fut renversé ? +On ne peut rejeter aucune de ces deux possibilités. +Le président Bush a également mentionné les soutiens arabes dans la réalisation d'un changement à la tête des Palestiniens. +Pense-t-il à un protectorat saoudien à la tête des Palestiniens, sous l'égide de la Ligue arabe ? +Ce n'est peut-être pas une mauvaise idée. +Mais jusqu'à présent, du moins, les Palestiniens n'ont pas vraiment réussi à mettre en place des institutions qui ne se rattachent pas au terrorisme. +Et la question centrale reste de savoir comment les mettre en oeuvre, question à laquelle M. Bush doit encore apporter une réponse claire. +Le second défi est d'obtenir le soutien des Européens envers la politique de M. Bush. +Certains Européens considèrent l'approche de M. Bush comme un exemple supplémentaire de l'unilatéralisme américain, et ils ont en quelque sorte raison. +Et quand bien même ? +Le problème que présente les Européens vient de ce qu'ils se limitent à des déclarations et des discours, sans plus : une politique régionale riche de rhétorique enlevée mais peu à même, si ce n'est incapable, de mettre en place quoi que ce soit de tangible. +La feuille de route au risque de l'enlisement +Le récent élan qu'a donné le président George W. Bush à la "feuille de route" destinée à résoudre israélo-palestinien est bienvenu et son acceptation par les deux parties est de bon augure. +Mais les chances qu'elle ouvre la voie à une véritable réconciliation restent faibles. +Il y a plusieurs raisons à cela, la première étant que cette "feuille de route" n'est guère plus qu'une liste de voeux pieux de ce qu'il y faudrait faire pour aboutir à la paix entre Israël et les Palestiniens. +Ses objectifs sont nobles, mais son contenu est souvent éloigné de la réalité politique de la région. +Ainsi, la feuille de route reconnaît à juste titre que le conflit ne peut être résolu sans tenir compte de la situation sur le terrain. +Mais le "quartet" à l'origine de cette feuille de route (les USA, l'UE, la Russie et l'ONU) sait qu'il ne pourra pas convaincre Israël de faire ces concessions sans un changement radical de l'attitude du monde arabe quant à l'existence de l'Etat juif. +Pour cette raison, la feuille de route pose la normalisation des relations israélo-arabes en prémisse à la paix entre Israël et les Palestiniens. +Pourra-t-on y parvenir dans un futur prévisible ? +Est-ce que les USA - ou sur ce sujet le "quartet" - croit vraiment qu'il pourra convaincre la Syrie et la Libye de renoncer à leur attitude rigide et menaçante vis-à-vis de l'existence d'Israël ? +Dans la feuille de route ce n'est là qu'un souhait, ses concepteurs ne proposant rien pour y parvenir. +De la même manière, la feuille de route est une tentative pour relancer les accords d'Oslo signés en 1993 entre Israël et l'OLP. +Mais ces accords ne sont pas appliqués parce que Yasser Arafat a rejeté les propositions de paix du Premier ministre Ehud Barak présentées en décembre 2000 à camp David avec le soutien du président Clinton. +Cela a été un tournant décisif pour le Moyen-Orient, un changement pour le pire. +La rupture des négociations par les Palestiniens et leur refus d'accepter l'offre israélienne la plus généreuse et de plus grande ampleur faite depuis 1967 en échange d'un accord mettant fin au conflit montrait qu'ils n'étaient pas prêts à reconnaître la légitimité d'Israël. +Il y a aujourd'hui des deux cotés beaucoup plus de ressentiment, de peur et de haine que lors de l'échec des négociations de Camp David en 2000. +Le soutien direct et indirect donné par l'Autorité palestinienne aux attaques kamikazes contre les civils a laissé penser aux Israéliens que les Palestiniens considéraient toujours le terrorisme comme une arme légitime. +Les réactions parfois brutales d'Israël ont alimenté l'animosité des Palestiniens. +La mise sur la touche d'Arafat et la nomination d'Abou Mazen comme Premier ministre palestinien constituent des pas importants dans la bonne direction. +Mais les véritables pouvoirs d'Abou Mazen n'ont pas encore passé l'épreuve du feu. +Contrôle-t-il vraiment le financement opaque de l'OLP qui a contribué à élargir le pouvoir réel d'Arafat bien au-delà de celui qui lui est dévolu formellement au titre de chef de l'Autorité palestinienne ? +Abou Mazen a-t-il la volonté politique et les moyens de venir à bout - par des mesures brutales s'il le faut - des gangs terroristes qui contrôlent une grande partie de la population palestinienne ? +Beaucoup dépend de la réponse à ces questions. +Enfin, comme le reconnaissent ses concepteurs, l'application de la feuille de route prendra plusieurs années, sans doute entre deux et quatre ans. +Il y faudra un suivi constant des douze points de désaccord, ceci au plus haut niveau, celui du président américain. +Son autorité est considérable, mais le président Bush ou son successeur pourra-t-il jour après jour, pendant deux ou trois ans, s'assurer effectivement que les parties traduisent par des décisions difficiles, voire politiquement dangereuses, ce qui ne sera sans doute que l'acceptation verbale de propositions vagues ? +L'expérience du passé n'est pas encourageante. +L'attention qu'un président américain peut apporter à un problème donné connaît des limites. +Mais sans sa vigilance de tous les instants, la feuille de route s'ensablera dans les dunes du Moyen-Orient, comme tant de plans de paix avant elle. +Dans ces conditions, qu'est-il possible de réaliser ? +Peut-être comme en Bosnie et au Kosovo - personne n'y parle aujourd'hui d'une solution permanente, mais la violence a cessé - il faudrait stabiliser la situation, mettre fin du bain de sang quotidien, entamer une désescalade de la violence et établir un minimum de confiance mutuelle. +Israéliens et Palestiniens ne sont pas encore prêts à adopter les changements politiques radicaux que prévoit la feuille de route. +Ils ont besoin de passer par des étapes qui permettraient d'assurer la stabilité et de garantir la sécurité des populations civiles des deux bords. +Si la désescalade a lieu, peut-être une véritable réconciliation sera-t-elle possible ultérieurement. +C'est sans doute difficile à admettre, mais le moment n'est pas encore venu pour s'engager au-delà. +Réfugiés palestiniens et expulsés allemands +L'atmosphère ne pouvait pas être plus tranquille : un ancien château royal dans les collines de la région de Taunus près de Frankfort, où hommes d'État et politiciens tenaient leur meeting annuel sur la question du Moyen-Orient. +Des Européens et des Américains, des Israéliens et des Iraniens, des Égyptiens et des Turcs, des Palestiniens et des Tunisiens se sont côtoyés. +La nouveauté cette année venait de la présence de représentants de l'Irak de l'après-Saddam, dont des officiels du gouvernement régional kurde ainsi qu'un haut représentant Shya. +La nouvelle situation en Irak, ainsi que la feuille de route pour la paix au Moyen-Orient, était le centre de toutes les discussions. +Lors du gala d'ouverture, un ministre allemand de poids, lui-même très impliqué dans les questions du Moyen-Orient, a examiné ces deux sujets en montrant une grande sensibilité envers les inquiétudes israéliennes et palestiniennes. +La soirée s'est déroulée comme prévu jusqu'à ce qu'un intellectuel libanais soulève la question du droit des réfugiés palestiniens à rentrer en Israël. +Le ministre allemand a écouté attentivement avant de s'exprimer : « c'est une question qui nous est familière, à nous les Allemands. Puis-je demander à mes collègues allemands de l'assemblée de lever la main s'ils sont, eux ou leur famille, réfugiés d'Europe de l'Est ? » +Il y eu un moment de silence. +La question est embarrassante en Allemagne, accablée par ses mines politiques et morales. +Peu à peu, les mains se sont levées : selon moi, plus de la moitié de l'assemblée d'Allemands présents (hommes du gouvernement, journalistes, hommes d'affaire) leva la main. Leur famille ou eux-mêmes sont des Vertrieben --expulsés de leur maison ancestrale en Pologne, en Tchécoslovaquie, en Hongrie et en Yougoslavie après la Deuxième guerre mondiale. +On estime à 10 millions le nombre d'expulsés, et avec leur descendance, ils forment aujourd'hui un nombre deux fois plus important : près de 25% des Allemands. +Dans la pièce silencieuse, le ministre allemand poursuivit : lui-même est né en Europe de l'Est, et sa famille fut expulsée dans l'atmosphère anti-allemande de l'après 1945. « Mais », ajouta-t-il, « ni moi ni aucun de mes collègues avons jamais réclamé le droit de rentrer. +Et c'est précisément grâce à cela que je peux aujourd'hui rendre visite aux habitants de la maison ancestrale où je suis né--parce qu'ils ne se sentent aucunement menacés et savent que je ne tiens pas à les chasser ni à prendre leur maison. » +Le ministre expliqua alors que la paix qui existe aujourd'hui en Europe est au coeur de cette réalisation : si les pays d'Europe de l'Est avaient craint que des millions d'Allemands reviennent, « le Rideau de fer ne serait jamais tombé.» +Ce fut une réponse très chargée d'émotions qui fut faite à la question d'un universitaire libanais--une réponse que les représentants arabes ont choisi plus tard d'ignorer. +Pourtant c'était là une expression de plus du contexte dans lequel la question des 1948 réfugiés palestiniens doit être examinée. +Comme le rappelait le ministre allemand à son public, les parallèles sont nombreux dans l'histoire récente de la question des réfugiés palestiniens. +Toute personne qui soutient aujourd'hui que les 1948 réfugiés palestiniens ont le droit, par principe, de rentrer en Israël doit aussi répondre à la question suivante : les Allemands expulsés d'Europe de l'Est après 1945 ont-ils aussi les mêmes droits de retour dans leur maison perdue ? +Le ministre allemand nous a donné une réponse. +Ainsi, si le gouvernement d'Helmut Kohl avait insisté en 1990 pour que tous les Allemands expulsés de Pologne et de Tchécoslovaquie aient le droit de rentrer dans ces pays, la réunification allemande n'aurait jamais gagné le soutien international dont elle a bénéficié. +Car il serait apparu clairement que l'Allemagne de l'ouest n'avait pas en tête la réunification mais bien le renversement des conséquences de la défaite de l'Allemagne nazie de 1945. +L'exigence palestinienne du droit au retour porte un sens analogue. +L'insistance avec laquelle cette idée fut défendue en 2000 à Camp David et à Taba montre clairement aux Israéliens que les Palestiniens ont bien en tête n'est pas de défaire les conséquences de la Guerre des six jours en 1967. +Au lieu de cela, leur exigence du droit au retour ressemble à un effort pour renverser les conséquences de leur défaite en 1948, quand le monde arabe est entré en guerre pour empêcher la naissance de la nation israélienne avant même son avènement. +Il faut garder présent à l'esprit ce qu'aujourd'hui les défenseurs du droit au retour des Palestiniens préfèrent oublier : les Palestiniens arabes et quatre pays arabes membres des Nations unies sont entrés en guerre en 1948 non seulement contre Israël, mais aussi contre la légitimité internationale et le plan des Nations unies pour une solution à deux États. +Il n'existe aucun autre exemple de pays membres des Nations unies se lançant dans la guerre pour empêcher la mise en ouvre de décisions de l'ONU. +C'est ce que les pays arabes et les Palestiniens ont fait. +Il y a évidemment la question humanitaire qu'on ne peut négliger. +Le fait que le calvaire des réfugiés fut aggravé par leur manipulation comme simples pions politiques pendant plus d'un demi-siècle, c'est là la mesure du cynisme et de l'immoralité des dirigeants politiques arabes. +Néanmoins, reste la question humanitaire. +Le vieux ministre allemand l'a évoquée de manière explicite, aussi bien pour les Palestiniens que pour les Allemands réfugiés après 1945. +Mais les conséquences politiques étaient claires pour lui : le revanchisme, qui exige le retour des réfugiés, aussi bien dans le cas allemand que dans le cas palestinien, est une formule vouée à l'instabilité voire la guerre. +Les Trois Irak +Les difficultés croissantes des États-Unis dans la mise en place d'une forme cohérente de gouvernement en Irak, sans parler d'un gouvernement démocratiquement élu, nous pousse à nous demander ce que la plupart des hommes d'État pensent incroyable : serait-il possible qu'il n'existe aucun moyen de reconstituer l'Irak en un seul État et ques des options différentes doivent être envisagées, même si cela paraît très inconfortable ? +Comme bien d'autres problèmes dans la renaissance d'États mis à mal par la dictature, l'Europe de l'est est un bon exemple de cela, les difficultés irakiennes ont des racines historiques très profondes. +Accuser les Américains et leur force est bien trop simpliste et superficiel, même si leurs erreurs sont, de fait, très nombreuses. +L'Irak fut créé dans les années 20 par les Britanniques qui occupaient la région à la suite de la désintégration de l'empire ottoman, à la fin de la Première guerre mondiale. +Leurs politiques étaient dictées par les impératifs de l'empire britannique et n'accordaient aucune attention aux souhaits, intérêts ou caractéristiques des populations locales. +Tout ce que les organisateurs de l'empire britannique accomplirent fut d'assembler trois provinces disparates de l'empire ottoman et de placer à leur direction un prince d'Hedjaz (qui fait maintenant partie de l'Arabie saoudite). +Ces trois provinces, Mossoul, Bagdad, et Bassora, avaient chacune des caractères très distincts et des structures de population très différentes. +Mossoul était à majorité kurde, avec quelques minorités assyrio-chrétiennes et turkmènes, Bagdad était principalement sunnite et Bassora principalement chiite. +Jeter des groupes aussi disparates sous un seul chapeau politique condamna le pays qu'on venait d'inventer à des décennies de répression et de querelles domestiques. +L'ancien empire ottoman régnait sur ces trois provinces, tout comme il régnait sur toutes ses possessions impériales, par des moyens autocratiques historiques. +Le défi que devait relever le nouvel État irakien fut de créer un gouvernement sans despotisme et relativement représentatif dans lequel tous les segments de la population pouvait retrouver l'expression de leur volonté politique. +Cela se révéla être une mission impossible. +Pour cette raison, l'Irak, bien avant Saddam Hussein, a toujours souffert des régimes les plus répressifs du monde arabe. +Dans un pays à majorité chiite, les sunnites, le groupe historiquement hégémonique dans tous les pays arabes, se sont toujours montrés opposés à tout processus démocratique qui risquait de remettre en cause leur loi. +Un soulèvement chiites fut brutalement réprimé dans les années 1920 (avec l'aide de la Royal Air Force). +De même, les tentatives kurdes pour gagner leur autonomie avant le Deuxième guerre mondiale furent noyer dans un bain de sang lors des massacres de dizaines de milliers de civils innocents, et même la minorité des chrétiens assyriens, qui n'avait aucune ambition politique, subit des assauts meurtriers dans les années 1930. +Dans ces conditions, la minorité sunnite régnante se sentant constamment menacée, il n'est pas surprenant que la seule tentative dans le monde arabe pour établir un régime fasciste pro-nazi se produisit en Irak au début des années 1940, sous la direction de Rachid Ali El Khailani. +Les Britanniques empêchèrent cette mésaventure, mais pas avant que des centaines de juifs de Bagdad soient assassinés dans un pogrom sauvage à l'instigation de ce bref gouvernement pro-nazi. +Le régime de Saddam fut simplement la manifestation la plus extrême du fait le plus important et cruel que sa démographie et sa géographie le condamnait à régner avec une poigne de fer. +La chute de Saddam n'y a rien changé : la violence anti-américaine n'est pas uniquement une expression de colère contre l'occupation étrangère, mais aussi de la tentative sunnite de faire avorter la mise en place d'un ordre démocratique qui la mettrait, maître de l'histoire, dans une position subordonnée. +De même, on ne peut espérer que les Kurdes du nord se soumettent volontairement à un régime dominé par les Arabes à Bagdad, et encore moins un régime chiite (la plupart des Kurdes sont sunnites). +À l'ouest, on comprend mal la profondeur des divisions sunnites/chiites. +Imaginez-vous en Europe, avant 1648, quand les protestants et les catholiques se massacraient les uns les autres avec désinvolture, et vous comprendrez immédiatement l'hostilité qui règne. +Alors, que peut-on faire ? +L'exemple de la Yougoslavie montre que les pays où ethnies et religions sont multiples et profondément déchirées par les conflits, la partition et la séparations représentent parfois le seul moyen d'assurer la stabilité et la démocratisation. +Aujourd'hui, plus personne ne doute que la Serbie et la Croatie, en dépit de leurs difficultés, ont de meilleures chances d'atteindre une plus grande stabilité démocratique que si elles se battaient encore aujourd'hui pour la maîtrise entre elles au sein du lit de Procruste qu'était l'ex-Yougoslavie. +Pas plus que la fédération n'est une alternative, puisque les termes de la fédération elle-même deviennent des pommes de discorde (comme en Bosnie ou à Chypres). +Même les Tchèques et les Slovaques, pacifiques, ont trouvé plus simple de développer leur système démocratique respectif après un divorce de velours plutôt que de rester unis au sein d'un mariage impossible. +Le moment est venu de penser l'impensable et de créer un État kurde au nord, un État arabe sunnite au centre tout autour de Bagdad et un État arabe chiite dans la région de Bassora. +Répéter des incantations sur l'intégrité territoriale, la sagesse conventionnelle des relations internationales, n'est réellement productive que tant qu'elle assure la stabilité et empêche le chaos. +Une fois de plus, comme la Yougoslavie et l'ex-Union soviétique l'ont montré, quand les conflits remplacent la stabilité, l'intégrité territoriale perd son sens stratégique et sa légitimité. +Ceci n'est pas une ordonnance universelle pour la création d'États homogènes du point de vue éthnique. +Il s'agit simplement de montrer qu'il existe des moments historiques où démocratisation et création d'une nation coïncident et que dans les sociétés profondément divisées un consensus minimum est nécessaire au succès immédiat de chaque société au même moment est difficile à mettre en place. +Tout ceci peut sembler aller à l'encontre de la sagesse conventionnelle mais qui aurait bien pu croire que l'Union soviétique puisse se désintégrer ? +Nous devons adopter un mode de réflexion novateur au sujet de la question irakienne, sinon le chaos d'aujourd'hui continuera et s'aggravera. +Un référendum pour le Kurdistan ? +L'assassinat du président du Conseil gouvernant d'Irak atteste sans détours de l'incapacité des Etats-Unis à instaurer l'ordre public minimal requis pour le transfert discipliné de pouvoir qui doit avoir lieu d'ici le 30 juin. +Tout juste deux mois auparavant, la signature d'un document constitutionnel par un groupe de représentants irakiens non élus nommés par les Etats-Unis a été proclamée comme s'il s'agissait de remettre en vigueur la convention constitutionnelle de l'Amérique signée à Philadelphie en 1787. +Mais il est désormais évident que ce document est sans valeur. +Aucune constitution imposée, pour élégante qu'elle puisse être, ne pourra être d'une aide quelconque aux forces de la coalition lorsqu'elles se trouveront confrontées au genre de désordre constaté dans des villes telles que Fallujah ou Najjaf. +Dans la région kurde de l'Irak du nord, la situation est toutefois complètement différente : au cours des dix dernières années, sous la protection de la zone de non survol des Alliés, et plus particulièrement depuis le renversement de Saddam, le gouvernement régional kurde a été en mesure d'établir et de maintenir une administration relativement disciplinée. +Elle a surmonté les différences entre les tribus et les partis et a créé un gouvernement de facto , avec un record impressionnant sur des questions de développement telles que l'éducation, l'irrigation et la construction et, surtout, sans violence. +La question est de savoir pourquoi il n'est pas souhaitable que la coalition menée par les Etats-Unis, confrontée à la débâcle dans le reste de l'Irak (arabe), organise un référendum dans la région kurde afin de demander à la population comment elle souhaiterait être dirigée. +Après tout, les Kurdes ont, selon les normes internationalement acceptées, un droit à l'autodétermination. +Historiquement, les Kurdes, qui se distinguent des Arabes de par leur langue, leur culture et leur conscience historique, n'ont jamais pu plaider leur cause devant un tribunal. +Après la Première Guerre Mondiale et la chute de l'Empire ottoman, les Alliés victorieux leur ont promis leur propre état, une promesse qui a été cyniquement rompue lorsque les intérêts impériaux britanniques et français ont pris le pas. +Depuis lors, les Kurdes ont souffert sous le règne despotique de groupes ethniques rivaux. +Il existe des obstacles évidents à l'organisation de ce référendum, essentiellement parce que les Etats-Unis ne possèdent pas de mandat pour disposer de l'Irak à leur convenance. +Mais il en va de même pour le reste de l'Irak : les Etats-Unis demandent actuellement, de façon peu convaincante, une résolution de l'ONU leur donnant mandat pour un transfert de pouvoir au gouvernement irakien légitime, mais cette autorisation n'a que très peu de chances d'aboutir, pas plus qu'il n'existe en Irak d'individu auquel l'autorité pourrait être transférée. +Pourquoi la seule région, et le seul peuple, qui dirigent un gouvernement discipliné, ne sont pas impliqués dans des assassinats, des attaques sur des mosquées et des attentats suicides à la bombe d'écoliers, devraient-ils être pénalisés ? +Autre objection, l'opposition de la Turquie et, à un degré moindre, de l'Iran et de la Syrie, à l'autodétermination des Kurdes irakiens. +Mais en termes de normes universelles de droits de l'homme, quel droit a la Turquie de dicter le développement interne d'un autre pays ? +Après tout, personne n'accepte qu'Israël s'oppose, par principe, à la création d'un état palestinien sur la Rive occidentale et Gaza. +Il devrait en être de même pour la Turquie. +Si la Turquie accorde à sa propre minorité kurde des droits culturels et langagiers supplémentaires et autorise une représentation politique kurde légitime au parlement turc, l'envie des Kurdes turcs de s'opposer à Ankara diminuerait. +Au dix-neuvième siècle, les intérêts communs des empires russes, allemands et autrichiens autoritaires ont empêché la création d'une Pologne libre : de telles alliances contre nature n'ont pas leur place au vingt-et-unième siècle. +Récemment, sous l'égide de l'ONU, un référendum sur l'avenir de la Chypre a été organisé dans les communautés grecques et turques de l'île. +Les résultats étaient paradoxaux et certainement pas du goût des personnes qui l'ont mis sur pied, mais le droit des communautés à déterminer leur avenir a été accepté. +Pourquoi ne serait-ce pas le cas au Kurdistan irakien ? +Peut-être pour calmer les craintes politiques, et les considérations du droit international, tout plébiscite dans la région kurde devrait, à l'origine, avoir un statut uniquement consultatif. +Mais il légitimerait la volonté d'un peuple longtemps opprimé et garantirait sa place au soleil. +Ce type de référendum pourrait également concentrer l'attention des Sunnites et des Chiites arabes en Irak, lorsqu'ils réaliseraient que c'est leur violence qui démantèle l'Irak. +Ils décideraient peut-être que la violence va à l'encontre du but recherché et qu'elle entraîne ses propres pénalités, et ils pourraient ainsi suivre l'exemple kurde de modération de la violence, ce qui contribuerait à réunir de nouveau l'Irak sans recourir à une répression permanente. +Si ce n'est pas le cas, tout au moins l'injustice subie par le peuple kurde depuis des générations serait, enfin, rectifiée. +L'autre révolution palestinienne +L'euphorie suscitée, pendant plus d'une semaine, par l'élection de Mahmoud Abbas à la tête de l'Autorité palestinienne était peut-être justifiée. +Mais l'heure est venue d'analyser clairement les perspectives des Palestiniens, des Israéliens, et peut-être celles du monde arabe dans son ensemble. +Il faut d'abord reconnaître que les circonstances de cette élection n'étaient pas irréprochables : le Hamas et le Djihad islamique ont boycotté le scrutin, et Marwan Barghouti, membre du Fatah comme Abbas et seul adversaire sérieux, a été persuadé sans ménagements par les dirigeants du mouvement de retirer sa candidature dans un souci d'unité. +En outre, Abbas (connu aussi sous le nom d'Abou Mazen) a obtenu le contrôle de la dizaine de milices et services de sécurité palestiniens. +Il s'est ainsi assuré la victoire, mais les démonstrations d'hommes en armes lors de ses meetings ne correspondaient pas exactement aux normes démocratiques. +Néanmoins, après des décennies sous le gouvernement autocratique de Yasser Arafat, et malgré les contraintes évidentes imposées par l'occupation israélienne, les Palestiniens ont élu un dirigeant au cours d'élections relativement libres. +Pendant des années, Arafat avait évité d'organiser des élections, requises par les règles de l'Autorité palestinienne, au prétexte que c'était impossible sous l'occupation : et pourtant - ô surprise ! - le scrutin organisé deux mois après son décès est un succès retentissant. +Bien sûr, l'élection présidentielle est l'occasion d'ouvrir de nouvelles négociations, peut-être plus concluantes, avec Israël. +Mais le vote des Palestiniens aura aussi des répercussions dans le monde arabe, car ce qui vient de se passer en Cisjordanie et à Gaza est sans précédent : Abbas peut se vanter d'avoir reçu l'investiture populaire. +Or, aucun pays arabe n'a jamais connu cela. +De fait, Abbas est aujourd'hui le seul dirigeant du monde arabe arrivé au pouvoir grâce à des élections à peu près libres. +La société palestinienne est-elle si différente des autres sociétés arabes ? +Pas vraiment, mais le scrutin se déroulait dans un contexte unique. +Premièrement, une forte pression internationale : exaspérés par la sournoiserie de l'autocrate Arafat, les Etats-Unis et l'Union européenne ont fait savoir aux Palestiniens que s'ils voulaient bénéficier d'un quelconque soutien à l'avenir, ils devraient se soumettre à un processus démocratique relativement acceptable. +Deuxièmement, la plupart des Palestiniens avaient le sentiment que leur capacité à suivre ce processus démocratique serait en elle-même une étape importante de la lutte contre Israël. +Troisièmement, en près de quatre décennies de domination israélienne, les Palestiniens n'ont pas seulement été exposés aux rigueurs de l'occupation : ils ont aussi pu observer le fonctionnement d'une démocratie libérale, avec des médias libres, un pouvoir judiciaire indépendant et un système politique pluraliste. +La dialectique de l'occupation est plus complexe qu'on ne le croit, d'un côté comme de l'autre. +Des images des élections palestiniennes ont été diffusées dans tout le monde arabe sur Al-Jazeera et d'autres chaînes de télévision. +Elles ont dû en faire réfléchir plus d'un… S'il est possible en Palestine, sous occupation israélienne, de choisir ses dirigeants, pourquoi pas au Caire ou à Damas, à Riyad ou à Alger ? +Après la jubilation et les compliments bien mérités aux Palestiniens, les dirigeants et la population du monde arabe pourraient commencer à se poser des questions difficiles. +Les Palestiniens ont montré qu'une société arabe peut avancer vers des institutions représentatives. +Pourquoi ne feraient-ils pas d'émules ? +Une bombe à retardement vient-elle d'être déposée sous le trône des potentats arabes, rois, émirs et présidents ? +Alors qu'en Irak la tentative d'importer la démocratie par la force est un échec, la situation paradoxale d'une démocratie arabe sous occupation israélienne est peut-être une menace que les dirigeants arabes n'ont pas encore bien saisie. +L'Irak à recoller +Le problème ne vient pas de la constitution, mais des stéréotypes, cela en est presque une idée fixe, visant à nous persuader que l'Irak est un État-nation moderne qui n'a besoin que des institutions politiques nécessaires à son bon fonctionnement. +C'est une erreur et les responsables politiques devraient commencer à réfléchir à d'autres voies. +L'État irakien, établi dans les années 1920 par les responsables britanniques impérialistes, avec Winston Churchill à leur tête, est un étrange pastiche fait de trois provinces disparates issues de l'ancien empire ottoman : Mosoul dans le nord, à majorité kurde, Bagdad au centre, à majorité arabe sunnite et Bassora dans le sud, à majorité arabe chiite. +Pour des raisons politiques personnelles, les Britanniques mirent au pouvoir et à la tête de tout le pays les arabes sunnites, qui n'ont jamais représenté plus de 25 % de la population, parachutant même un prince arabe sunnite hachémite pour régner sur leur création. +Depuis lors, le pays n'a pu être maintenu dans son intégrité qu'avec une poigne de fer : l'histoire de l'Irak est pleine de révoltes chiites, kurdes et même assyro-chrétiennes, qui ont toutes connu une fin sanglante aux mains de la minorité sunnite au pouvoir. +À travers toute son histoire, l'Irak moderne a toujours été l'État arabe le plus répressif. +Le règne de Saddam ne représenta que le plus brutal d'une longue ligne de régimes sunnites. +C'est l'hégémonie sunnite, et pas seulement celle du régime baassiste de Saddam, qui a été renversée par les États-Unis. +Étant donné l'histoire et la représentation démographique de l'Irak, la tentative américaine pour façonner le pays sous la forme une démocratie fonctionnelle butte sur trois écueils : la montée en puissance de la majorité chiite, le refus kurde de renoncer à leur mini-État, acquis de facto et de longue lutte dans le nord et la violente campagne sunnite pour saper un système qu'ils ne contrôlent pas. +En bref, la proposition de constitution est une tentative de quadrature du cercle. +La résistance sunnite, une guérilla et une guerre terroriste qui fut bien préparée lors de la dernière année du règne de Saddam, continuera d'essayer de renverser tout semblant d'ordre représentant la coalition de la majorité chiite et kurde actuellement au pouvoir. +Les sunnites poursuivront leurs attaques meurtrières sur les chiites, les Kurdes et la coalition militaire dirigée par les États-Unis. +Ils boycotteront probablement le référendum constitutionnel et toutes les élections qui en découleront, tout comme ils ont boycotté les élections précédentes. +Après tout, étant donnée la logique brutale de leur longue hégémonie sur l'Irak, pourquoi les sunnites considéreraient-ils de se soumettre à un processus qui se fondent sur leur statut minoritaire, particulièrement quand des régions entières du pays sont sous le contrôle de fait de l'insurrection sunnite ? +De même, pourquoi les chiites, de leur côté, se soumettraient-ils à l'hégémonie sunnite au lieu de construire leurs propres structures politiques dans le sud, sur le modèle de ce que les Kurdes ont déjà établi dans le nord ? +Soyons francs : l'Irak prend le chemin de la Yougoslavie quand elle se désintégra au début des années 1990.  +Nous avons besoin de telles normes, bien sûr. +Mais une fois que l'État se désintègre, comme ce fut le cas en Yougoslavie, aucun projet de constitution ne peut le sauver. +Les constitutions fonctionnent uniquement quand les parties en jeu ont tout intérêt à opérer dans le cadre proposé, et cela n'est visiblement pas le cas en Irak. +Il n'y a rien de sacro-saint dans la pérennisation  d'États multi-ethniques et multi-religieux si les groupes qui les constituent ne souhaitent pas vivre ensemble. +Bien au contraire, il faut apprendre les leçons de l'échec de l'Union soviétique, de la Yougoslavie et même peut-être surtout de la Tchécoslovaquie, qui négocia sa séparation sans aucune violence. +Par contraste, la Bosnie Herzégovine est un autre exemple de tentative mise en échec pour conserver un semblant d'existence à une entité multi-ethnique éclatée : cela ne marche pas, et le pays n'est tenu que par le pouvoir quasi dictatorial des Haut-représentants de la communauté internationale et la présence de troupes étrangères. +Le Hamas au pouvoir +La victoire du Hamas est, surtout et avant tout, une indication de l'échec complet des leaders palestiniens historiques à créer un corps politique. +La Palestine n'est pas encore un État mais c'est déjà un État en faillite. +Depuis les accords d'Oslo en 1993, entre Israël et l'OLP, les Palestiniens jouissent d'une autonomie de transition limitée. +Il est certain que la nouvelle Autorité palestinienne (AP) a pris le pouvoir dans des circonstances difficiles, mais quel nouveau mouvement de libération n'a pas à faire face à de sérieux défis quand il arrive finalement au pouvoir ? +L'Autorité palestinienne a eu l'occasion d mettre en place les fondations institutionnelles d'un État fonctionnel. +Mais, au lieu d'offrir à la population les infrastructures nécessaires au développement économique, à l'éducation, à l'assistance sociale, à la santé, au logement et au retour des réfugiés, l'Autorité palestinienne, sous la direction de Yasser Arafat, le leader du Fatah, a dépensé plus de 70 % de son maigre budget pour financer une douzaine de services de sécurité et de renseignement rivaux et a négligé toutes les autres sphères de l'activité économique. +Cela a créé ce qu'on appelle en arabe un État Moukhabarat (services de sécurité), très semblable à ce qui règne dans la plupart des pays arabes : l'Égypte, la Syrie, l'Arabie saoudite, dans les monarchies tout comme dans les républiques. +Le vide laissé ailleurs par l'Autorité palestinienne, notamment dans la sphère sociale, a été rempli par le Hamas. +En effet, sa popularité n'est pas seulement due à son idéologie fondamentaliste et à sa détermination à détruire Israël. +La haute estime dans laquelle les Palestiniens tiennent le Hamas vient aussi de ce que le Hamas a effectivement réalisé pour eux tandis que l'Autorité palestinienne a gaspillé ses ressources. +Ce n'est pas seulement la corruption endémique de la direction officielle qui en a détourné les Palestiniens. +Le Hamas a mis en place des écoles, des maternelles, des crèches pour les mères, des centres médicaux, des services sociaux et des programmes pour les jeunes et les femmes, tout cela en plus de certaines subventions accordées aux familles des auteurs d'attentats-suicides. +Lors des élections, le Hamas a perçu les dividendes du travail que l'Autorité palestinienne, dirigée par le Fatah, n'a pas su faire. +La question reste ouverte : le Hamas au pouvoir deviendra-t-il plus pragmatique et moins engagé dans le terrorisme ? C'est assurément une possibilité et personne ne doit préjuger des résultats. +Il n'en reste pas moins incertain, par ailleurs, que les organes existants de l'Autorité palestinienne, surtout les services de sécurité à sa disposition, En fait, aucun précédent n'existe : il n'y a jamais eu de transfert de pouvoir pacifique dans aucun des 22 États membres de la Ligue arabe. +La réponse israélienne à la victoire du Hamas se compliquera du fait des élections israéliennes elles-mêmes, qui se tiendront le 28 mars, et du fait que le pays est gouverné par un premier ministre par intérim, Ehud Olmert, du fait de l'incapacité de M. Sharon à gouverner, événement intervenu quelques semaines après son départ du Likoud et sa création d'un nouveau parti, centriste, appelé Kadima (En avant). +Malgré l'absence de M. Sharon, Kadima reste en tête des sondages d'opinion, le plus récent lui accordant 44 des 120 sièges de la Knesset par rapport aux 21 du Parti travailliste et aux 14 de ce qu'il reste du Likoud, le parti de droite. +Le succès de Kadima tient à la réussite du désengagement unilatéral de la bande de Gaza, qui est la principale nouveauté introduite par M. Sharon dans la vie politique israélienne. +Ce retrait était basé sur la conviction que le fossé qui sépare les positions des Israéliens et des Palestiniens était trop profond pour permettre des négociations censées. +De ce fait, Israël doit commencer à décider unilatéralement des futures frontières du pays tout en conservant l'espoir de négociations ultérieures. +C'est également la ligne que M. Olmert a adoptée. +Mais la victoire du Hamas suggère que le fossé entre les Israéliens et les Palestiniens se creusera encore un peu plus et que les chances d'un accord négocié seront repoussées encore plus loin dans le futur. +Cela implique que d'autres décisions unilatérales de la part des Israéliens, notamment un ensemble de retraits partiels de certaines zones choisies en Cisjordanie, restent la seule option possible. +Une gestion réaliste du conflit remplacera les espoirs utopistes de résolution du conflit. +Dans une région pleine de paradoxes, la victoire du Hamas en a peut-être créé un nouveau : habituellement, quand les extrémistes se renforcent d'un côté, cela fait le jeu des extrémistes du côté opposé, ce qui produit un effet de spiral dangereux. +Dans ce cas, cependant, la victoire du parti radical du Hamas pourrait renforcer non pas les extrémistes du Likoud, mais, de manière surprenante, les centristes plus modérés de Kadima. +On ne peut être certain d'un tel résultat, évidemment, mais c'est aujourd'hui pratiquement la meilleure conséquence que l'on puisse espérer. +Le Hamas peut-il rester au pouvoir ? +L'enlèvement d'un soldat israélien dans la bande de Gaza, ainsi que l'enlèvement suivi du meurtre d'un civil israélien de 18 ans en Cisjordanie soulèvent cette question, qui hante les relation israélo-palestiniennes depuis la victoire du Hamas aux élections législatives de janvier. +La communauté internationale, menée par le "Quartet" (les États-Unis, l'Union Européenne, les Nations Unies et la Russie), a posé trois conditions au gouvernement du Hamas pour lui permettre de prétendre à une légitimité internationale et de continuer à recevoir un soutien financier. +Le Hamas doit reconnaître le droit d'Israël à exister, cesser toute action terroriste et s'atteler à mettre en œuvre tous les accords internationaux déjà signés par l'autorité palestinienne. +Ces conditions peuvent paraître raisonnables à tout observateur extérieur. +Pour le Hamas cependant, elles semblent saper sa raison d'être [1] même . +Cette organisation n'a-t-elle pas pour but après tout la destruction d'Israël (sa charte appelle à une guerre sainte contre tous les Juifs) et l'établissement d'un État islamique dans toute la Palestine historique ? +Le Hamas considère que les Juifs (ainsi que les francs-maçons et autres viles organisations comme le Rotary International et le Lions Club) sont responsables des révolutions française et bolchevique et des deux Guerres Mondiales. +Il est donc peu surprenant que le Hamas rejette les conditions du Quartet. +Dans le même temps, le président palestinien Mahmoud Abbas (Abu Mazen), qui représente le Fatah, le perdant des législatives de janvier, a essayé en vain de trouver un terrain d'entente avec le Hamas par le biais d'un texte ambigu appelé "document des prisonniers." +Ce document était supposé servir d'acceptation implicite du droit à l'existence d'Israël. +Mais rien de tel n'apparaît dans le texte tronqué approuvé par le Hamas. +Au contraire, le texte légitime les attaques continues contre les civils israéliens en Cisjordanie, le rendant inacceptable pour Israël et pour la communauté internationale. +Mais les mots ne suffiront pas à résoudre la crise actuelle. +L'un des résultats paradoxaux de la croyance presque messianique de l'Amérique convaincue que les élections constituent la panacée pour presque tous les maux du Moyen-Orient est que le Hamas, vainqueur d'élections démocratiques, a gagné un degré de légitimité dont il n'avait jamais bénéficié auparavant. +D'un autre côté, l'histoire du Hamas et son comportement actuel indiquent clairement qu'il considère les élections comme de simples outils politiques, et qu'il se désintéresse de tout engagement envers les normes et les valeurs à la base de la démocratie. +Reviennent ici à l'esprit les régimes fascistes et communistes du passé, qui suivaient le même genre d'approche instrumentaliste de la démocratie. +En soutenant Abu Mazen dans une tentative de sape du gouvernement du Hamas, les États-Unis portent ombrage à la crédibilité de leur propre engagement envers la démocratie. +La violence actuelle peut encore aller plus loin et faire tomber le gouvernement du Hamas. +D'un autre côté, les voies diplomatiques pourraient déboucher sur la libération du soldat israélien et faire cesser les tirs de missiles Qassam depuis Gaza en Israël, occurrence quotidienne qui décrédibilise le nouveau gouvernement israélien du Premier Ministre Ehud Olmert. +Mais le problème fondamental est que, jusqu'à aujourd'hui, à chaque carrefour historique, les Palestiniens ont toujours refusé le compromis et ont par conséquent échoué à bâtir une nation. +En 1947, ils ont refusé le programme de partition de l'ONU, qui prévoyait l'établissement de deux États en Palestine britannique. +En 1993, après les accords d'Oslo, l'autorité palestinienne établie sous Yasser Arafat a pris la forme d'un régime autoritaire et militarisé de plus, très semblable à la Syrie et à l'Égypte, et n'a rien fait pour alléger les souffrances des réfugiés palestiniens. +C'est cet échec qui a porté le Hamas au pouvoir. +La crise actuelle est de toute évidence le premier test sérieux pour Olmert et ses projets de futurs retraits des territoires occupés par Israël. +Mais c'est un test encore plus crucial pour les Palestiniens : des dirigeants aussi radicaux que fanatiques les mèneront-ils cette fois encore vers une nouvelle catastrophe nationale ? +Ou vont-ils enfin se rendre compte qu'un avenir d'indépendance, de souveraineté et de dignité est possible -- mais seulement s'ils accordent aux Israéliens ce qu'ils réclament à juste titre pour eux-mêmes ? +La communauté internationale peut pousser les Palestiniens à prendre une décision. +Mais cette décision, et ses coûts moraux, reste entre les mains des seuls Palestiniens. +Pour un Liban souverain +Quand Israël s'est retiré du sud Liban en 2000, il était entendu que le gouvernement libanais imposerait de nouveau son autorité dans la zone évacuée. +Le Hezbollah, chef de file de la lutte armée contre l'occupation israélienne, devait déposer les armes et devenir une force politique représentant la communauté chiite, historiquement marginalisée par les élites maronites, sunnites et druzes. +Mais les choses ne se sont pas passées comme prévu. +Au lieu de déployer des forces armées au sud Liban, le gouvernement faible de Beyrouth a laissé agir le Hezbollah, déterminé à faire de la région une base pour les attaques contre Israël. +Pendant six ans, le Hezbollah a quasiment créé un Etat dans l'Etat : sa milice est devenue la seule force militaire présente au sud Liban, avec certains avant-postes situés à quelques mètres de la frontière avec Israël. +De temps à autre, le Hezbollah bombardait Israël, tandis que son secrétaire général, Hassan Nassrallah, se répandait en invectives terrifiantes, non seulement contre Israël et le Sionisme, mais aussi contre les Juifs en général. +La Résolution 1559 du Conseil de sécurité des Nations Unies, qui demande le désarmement de toutes les milices et l'extension du contrôle gouvernemental à l'ensemble du Liban, a été ignorée. +Après la fameuse " Révolution du Cèdre " en 2005, le Hezbollah est même entré au gouvernement, tout en maintenant sa domination et la présence militaire dans le sud. +Pour sa part Israël, encore traumatisé par le conflit libanais de 1982, ne répondait pas aux attaques du Hezbollah et espérait éviter une escalade. +Mais les situations absurdes comme celle-ci finissent généralement par exploser, et c'est ce qui s'est passé avec l'enlèvement par le Hezbollah de deux soldats israéliens en Israël. +L'existence d'un Etat dans l'Etat illégitime n'est plus tolérable. +Comme la présence de l'Onu à Srebrenica pendant la guerre en Bosnie, la FINUL a contribué à la mauvaise réputation de l'Organisation : elle n'a jamais empêché aucun terroriste d'attaquer Israël, et n'a pas non plus arrêté l'invasion israélienne du Liban en 1982. +Ce qu'il faudrait, c'est une délégation militaire chargée de faire usage de la force. +La mission consisterait à assister -- par la force si nécessaire -- le déploiement de l'armée libanaise au sud Liban, à participer au désarmement du Hezbollah, et à effectuer des patrouilles le long de la frontière entre Israël et le Liban, pour éviter toute incursion d'un côté ou de l'autre. +Dernier point, il est une anomalie peu connue : la Syrie n'a jamais reconnu pleinement l'existence du Liban comme nation souveraine (dans les manuels scolaires syriens, le Liban fait partie de la Grande Syrie). +Il n'y a donc pas de relations diplomatiques normales entre les deux pays, pas d'ambassade syrienne à Beyrouth ni d'ambassade libanaise à Damas. +La survie politique d'Olmert en question +La commission, dirigée par l'ancien juge de la Cour suprême Eliahu Winograd, vient de rendre son rapport préliminaire. +Ses critiques à l'encontre d'Olmert, du ministre de la Défense Amir Peretz et du Chef d'état-major Dan Halutz -- énumérées dans un rapport détaillé et méticuleux de 117 pages -- sont dures, mais sans surprises. +La Commission Winograd met en lumière ce que la plupart des Israéliens pensaient déjà : Olmert et Peretz n'avaient ni l'expérience militaire, ni l'expérience politique pour affronter une organisation terroriste qui a lancé des raids sur Israël, tué des soldats et kidnappé deux autres, puis lancé des milliers de roquettes sur des cibles civiles pendant plus d'un mois. +De fait, l'inexpérience du Premier ministre et du ministre de la Défense sont sans précédent dans l'histoire de l'État hébreu. +Olmert, qui a succédé à Sharon à la tête du parti Kadima, était considéré comme un parlementaire compétent mais sans relief - puis maire de Jérusalem -- et mieux connu pour son goût de la polémique que pour son envergure politique. +Pour la plupart des Israéliens, même pour ceux qui l'avaient investi comme héritier de Sharon après le retrait de la bande de Gaza, Olmert reste un Premier ministre par accident. +De même Peretz, un syndicaliste provocateur mais efficace, a surpris toute le monde en remportant les primaires pour la présidence du Parti travailliste, puis en choisissant le portefeuille de la Défense plutôt que celui des Finances. +Pour beaucoup, le duo Olmert-Peretz semblait prédestiné à courir au désastre. +Les Israéliens, conscients des menaces sécuritaires qui pèsent constamment sur leur pays, ont toujours pensé que leurs dirigeants devaient être prêts à entrer en guerre pour défendre Israël -- et aussi à mettre l'armée devant ses responsabilités lorsque la diplomatie échoue. +Le 12 juillet 2006, lors de l'attaque du Hezbollah, surgie de nulle part (semblait-il en tout cas), les deux principaux dirigeants de l'État ont été clairement dépassés et se sont engagés dans une guerre à laquelle ni eux ni l'armée israélienne n'étaient préparés. +L'armée était dirigée pour la première fois de son histoire par un général de l'armée de l'air, Dan Halutz, qui estimait que la supériorité aérienne suffisait à tout résoudre, donnant ainsi lieu à un cocktail détonnant d'ignorance civile et d'arrogance militaire. +Dans un langage mesuré mais dévastateur, la commission Winograd attribue de mauvais points aux trois dirigeants. +Olmert a décidé d'engager les combats sans réfléchir et sans en mesurer les conséquences. +Peretz s'est montré incapable de mesurer les implications stratégiques de ses décisions. +Et Halutz n'a pas proposé aux dirigeants civils toute la panoplie des options dont disposait l'armée. +Halutz a démissionné il y a déjà plusieurs mois. +Mais Olmert et Peretz ont déclaré qu'en dépit des conclusions de la commission, ils ne quitteraient pas leurs fonctions: ils se sont uniquement engagés à mettre en œuvre les nombreuses recommandations du rapport concernant les processus politiques, stratégiques et décisionnaires. +Olmert et Peretz parviendront-ils à se maintenir à leur poste ? +Leur gouvernement de coalition bénéficie d'une confortable majorité parlementaire ; il ne semble pas exister non plus d'alternative parlementaire viable. +Mais l'opinion publique - volatile et courroucée -- réclame leur tête : un sondage mené après la publication du rapport de la commission indique que seuls 14 pour cent des Israéliens pensent qu'Olmert devrait demeurer à son poste tandis que moins de 11 pour cent soutiennent Peretz. +Des manifestations demandant la démission du gouvernement sont prévues cette semaine et il lui sera difficile de continuer à fonctionner normalement. +Des rumeurs de révolution de palais au sein du parti Kadima circulent, évoquant le remplacement d'Olmert par le vice-Premier ministre Shimon Peres ou par la populaire ministre des Affaires étrangères, Tzipi Livni. +Mais il ne semble pas qu'Olmert soit prêt à se laisser évincer. +En fait, le gouvernement affaibli et discrédité d'Olmert pourrait bien survivre. +S'il chute et que des élections anticipées ont lieu, tout laisse à penser que le vainqueur sera Benjamin Netanyahu, du parti de droite Likoud, décimé lors des élections de 2006 et qui attend patiemment sa revanche. +Une majorité qui veut le départ d'Olmert ne souhaite pourtant pas le retour de Netanyahu, ce qui explique peut-être aussi le soutien indirect qu'apportent les Etats-Unis au Premier ministre. +Seul un gouvernement israélien fort peut prendre les difficiles décisions nécessaires au succès des négociations avec les Palestiniens. +La perspective d'une poursuite constructive des discussions israélo-palestiniennes semble donc plus éloignée encore qu'auparavant. +En fait, le grand perdant de la guerre du Liban de 2006 n'est ni Israël ni le Hezbollah, mais, au moins pour le moment, le processus de paix. +L'Amérique impuissante ? +Il y a des raisons immédiates à cela : le gouvernement du Premier ministre israélien Ehud Ohmert est à la fois faible et impopulaire, essentiellement à  cause de la guerre maladroite contre le Hezbollah au Liban. +Quant à l'Autorité palestinienne sous la direction de Mahmoud Habas, elle s'est encore affaiblie après la violente prise de contrôle de Gaza par le Hamas l'année dernière. +Du coté palestinien, il y a un phénomène plus profond : de longue date les Palestiniens ont échoué à créer les structures institutionnelles nécessaires à la construction d'une nation. +Ainsi, durant la période 1936-39, leur révolte contre la domination britannique s'est soldée par une guerre civile sanglante au cours de laquelle les conflits intra-palestiniens ont fait plus de victimes que l'armée britannique ou les forces d'autodéfense juives. +Si l'on examine l'implication des Américains dans la région au cours des 60 dernières années, on identifie deux types d'intervention qui ont permis de parvenir à un accord entre les acteurs locaux. +Hors de ce cadre, les USA se révèlent impuissants. +Le premier type d'intervention s'applique lorsqu'une guerre menace de s'élargir au risque de déstabiliser la région et de compromettre les relations entre les grandes puissances. +A ce moment là, l'intervention résolue des Américains peut servir à mettre fin aux combats et à imposer un cessez-le-feu, si ce n'est la paix. +En 1973, à la fin de la guerre du Kippour, Israël était sur le point d'encercler toute la Troisième armée égyptienne dans le Sinaï. +Quelques messages bien sentis du président Nixon ont arrêté les Israéliens en chemin et ont permis aux Américains d'entamer un long processus de désescalade qui a conduit à plusieurs accords intérimaires. +De la même manière en 1982, lors de l'invasion du Liban, les troupes israéliennes étaient sur le point d'entrer à Beyrouth Ouest après l'assassinat par des agents syriens du président libanais élu Bachir Gemayel, un pro-israélien. +Lors de la première guerre du Golfe en 1991, les forces US ne sont pas parvenues à mettre fin aux attaques de l'Irak contre des cibles civiles à l'intérieur d'Israël (elles ont été visées par 39 tirs de missiles Scud irakiens). +Les USA ont exigé d'Israël qu'il n'intervienne pas et ce dernier a dû s'exécuter. +Chaque fois, les Américains se sont engagés rapidement et dans un but précis, réalisable au bout de quelques jours, si ce n'est de quelques heures. +C'est dans ces circonstances dramatiques que le pouvoir américain est au meilleur de lui-même. +L'intervention américaine est également utile quand les deux partis sont déjà engagés dans des pourparlers bilatéraux de paix, en ont payé le prix sur le plan intérieur et sont parvenus à un accord sur presque tous les points, tandis que ceux qui restent en suspens menacent de faire échouer l'ensemble. +Dans ce cas, l'intervention de l'Amérique, avec la carotte et le bâton, amène les deux partis à conclure un accord final. +Après la visite de Sadate à Jérusalem en 1977, Israël et l'Egypte ont négocié pendant un an pour parvenir à un accord sur la plupart des questions : la paix, les relations diplomatiques et le retrait complet des forces israéliennes du Sinaï. +C'est à ce moment là que le président Carter, initialement opposé à ce processus, a invité les deux partis à Camp David pour sceller un traité de paix. +En 1993, lors de négociations secrètes bilatérales en Norvège (sans que les Américains en soient informés), Israël et l'OLP sont parvenus à un accord sur la reconnaissance mutuelle et la création d'une Autorité palestinienne autonome provisoire. +Mais certains problèmes n'étaient pas résolus. +Le président Clinton est intervenu et a conduit les deux partis à surmonter les désaccords restant. +En dehors de ces deux types de scénarios, les initiatives américaines sont vouées à l'échec. +En l'absence d'une volonté politique locale et confronté à un projet de paix qui peut nécessiter des années, les USA sont virtuellement impuissants. +Ils sont extrêmement efficaces en tant que pompier, mais pas en tant que médecin traitant face à une maladie chronique. +Commencer par la base pour construire la Palestine +Le premier obstacle -- problème qui se tient effectivement au cœur de l'actualité -- c'est la guerre civile palestinienne. Le Hamas contrôle la bande de Gaza défiant ainsi l'autorité palestinienne d'Abou Mazen, chef du Fatah. +L'échec des Palestiniens à construire un état-nation rend tous pourparlers de paix significatifs avec Israël -- sans parler d'accord --  pratiquement impossibles pour le moment. +Si les Palestiniens sont incapables de trouver un minime consensus national, comment peuvent-ils faire la paix avec Israël ? +Le gouvernement israélien dirigé par le premier ministre Benyamin Nétanyahou n'est autre que le second obstacle. Le chef du Likoud sera nettement moins enclin -- ou disposé -- à faire de grands compromis pour évacuer les centaines de milliers d'Israéliens installés en Cisjordanie. +Dernier obstacle et pas des moindres : l'objectif fixé dans l'accord OLP-Israël de 1993 n'a pas été atteint. +Les tentatives de ressusciter les accords d'Oslo -- la "feuille de route" et les engagements d'Annapolis --  n'ont rien apporté de plus que des déclarations creuses et de stupides séances photo. +Il faut étudier les causes de ces 15 ans d'échec pour que la mission de Mitchell ne soit pas tuée dans l'œuf.   +Il est facile et juste d'imputer l'échec des accords d'Oslo aux Palestiniens et aux Israéliens confondus. +Mais une autre raison fondamentale, et non négligeable, est en cause. +Les accords d'Oslo proposaient une approche descendante pour construire l'état palestinien : créer une autorité nationale palestinienne, lui donner un territoire, lui donner de plus en plus de pouvoir, l'armer et la financer, tenir des élections, et un état palestinien apparaîtrait. +Au contraire, en ont découlé une autorité palestinienne corrompue et militarisée, aux forces de sécurité divisées  et donc incapables d'assurer une quelconque protection. +Cette autorité ne pouvait pas non plus négocier de manière crédible avec Israël ni assurer des services de base aux Palestiniens ordinaires. +Cet échec s'explique par deux raisons : la faiblesse des institutions de la société civile palestinienne, privée de l'infrastructure nécessaire pour construire un état-nation ; et l'impossibilité de gérer de front la construction d'une nation et des pourparlers de paix. +Nulle part dans le monde disposons-nous d'un exemple de double processus réussi. +Il faut changer le paradigme de base : les efforts de paix devraient mettre l'accent sur la construction d'un état du bas vers le haut. Malgré la tourmente de l'échec du modèle de construction descendante, certains signes encouragent une approche ascendante. +Ces deux dernières années, l'ex-premier ministre britannique Tony Blair et le général américain Keith Dayton ont réussi à établir des institutions efficaces dans trois secteurs cisjordaniens. Dotés d'une présence militaire restreinte, les secteurs de Djénine, Bethléem et Hébron sont devenus les plus pacifiques de Cisjordanie. +Les autorités locales ont reçu des conseils et un financement adéquat ; des chambres de commerce indépendantes sont à la base d'une classe moyenne commerçante locale, qui souhaite entretenir le pacifisme de la région, même en l'absence d'accord général ; la police locale, formée en Jordanie, agit désormais efficacement comme une force de police et non comme une milice armée ; et les relations commerciales avec les Israéliens des régions voisines ont été restaurées. +On a fait peu de cas de cette autonomisation, dont la persévérance a fait naître une gestion locale efficace. Mais ces projets fondés -- pour la première fois -- sur des détails pratiques constituent la pierre d'assise indispensable à l'établissement d'un état-nation palestinien. +Certes, temps et patience sont nécessaires à ce processus. +Mais c'est jusqu'à présent la seule approche qui réussit, là où tout échoue. +Blair a d'ailleurs récemment expliqué qu'une telle approche partant de la base pourrait aller de pair avec l'objectif de « paix économique » de Nétanyahou, même si cette approche finirait par le dépasser. +Il va sans dire que l'activité de colonisation israélienne devrait cesser totalement. +Si elle est bien ficelée, le gouvernement israélien pourrait même accepter tacitement cette proposition, en dépit de son manque d'enthousiasme. +Les accords d'Oslo ont échoué. Essayer de les ressusciter -- par exemple par le biais de l'initiative de paix arabe à Beyrouth -- suffirait à peine à mettre au jour tous les différends subsistants entre les deux camps et ne permettrait pas de surmonter l'échec de la création d'un état palestinien. +Au vu de toutes les pannes que les approches de création descendantes ont suscité, seule la bonne vieille technique de construction démodée -- en commençant par la base -- demeure viable. +Laissons les Serbes juger Milosevic +En Yougoslavie les choses bougent, et souvent de manière surprenante. +Après moult hésitations et une première tentative infructueuse, Milosevic a finalement été arrêté, sans bain de sang, mais non sans risque. +Le résultat des élections qui se sont déroulées dans le calme la semaine dernière au Monténégro laisse présager un conflit concernant l'indépendance du pays et des décisions difficiles, mais il est probable que les parties en cause trouveront une issue dans la négociation plutôt que dans la violence. +Ce sont de grands pas en avant qui montrent que malgré le lavage de cerveau auquel ont été soumis les Serbes et la complicité de beaucoup d'entre eux aux crimes du régime de Milosevic, la démocratie va s'enraciner dans ce qui reste de la Yougoslavie et la société s'ouvrir sur le monde. +Choix crucial, les nouvelles autorités serbes doivent décider si elles vont extrader Milosevic vers La Haye. +Il semble qu'il y ait un accord quasi-universel en faveur de l'extradition, et des pressions internationales s'exercent en ce sens sur le président Kostunica. +Mais la décision qui sera prise peut avoir des conséquences vitales pour l'avenir de la Serbie. +Beaucoup de ceux qui conviennent que Milosevic est un criminel de guerre sont maintenant sensibles aux voix qui s'élèvent de Belgrade pour demander qu'il soit jugé par les Serbes. +La responsabilité morale ultime des actes commis par Milosevic revient au peuple serbe. +C'est lui qui l'a mené au pouvoir, même s'il n'y est pas parvenu de manière vraiment démocratique; c'est le peuple serbe qui a soutenu Milosevic, y compris quand il l'a lancé dans un génocide et l'a conduit de défaites en défaites. +Finalement, c'est le peuple serbe qui l'a détrôné et c'est le nouveau pouvoir démocratique en place à de Belgrade qui a pris le risque de l'arrêter. +Cette arrestation aurait pu se terminer par un bain de sang susceptible de déstabiliser un gouvernement démocratique encore fragile. +On devrait laisser les nouveaux dirigeants yougoslaves agir avec Milosevic dans un sens favorable à l'avènement de la démocratie en Yougoslavie. +Ses crimes devraient être jugés par ses compatriotes et non par un tribunal international. +De cette manière, le procès gagnerait en légitimité et en crédibilité, en particulier vis à vis des nombreux Serbes qui n'ont pas encore pris conscience de l'étendue des crimes de Milosevic. +Et avant tout, en jugeant Milosevic, les Serbes qui sont nombreux à avoir soutenu son régime seront confrontés en leur âme et conscience à leurs propres actes. +Ce n'est qu'à travers ce processus que la Serbie pourra rejoindre les rangs des pays européens véritablement démocratiques. +Si le procès se tient suivant une procédure parfois opaque et assez abstraite, devant des juges étrangers et dans une lointaine capitale, beaucoup de Serbes y verront non le procès de Milosevic, mais la justice des vainqueurs appliquée à la nation serbe. +Certes, ils se tromperont ; mais les procès politiques (un procès pour crimes de guerre est toujours un procès politique) ne doivent pas servir seulement à punir, mais aussi à éduquer. +Ce sont des juges serbes qui doivent avoir cette responsabilité à l'égard du peuple serbe, ceci à l'intérieur d'un système reconnu comme légitime par la majorité des Serbes. +La clameur internationale qui s'élève pour réclamer que Milosevic soit jugé à La Haye, ceci sans prendre en compte les conséquences politiques, est compréhensible. +Cette pression est cependant déraisonnable et quelque peu hypocrite. +Après tout, les forces de maintien de la paix en Bosnie peuvent si elles le veulent arrêter Radovan Karadzic et le général Ratko Mladic, les dirigeants des Serbes de Bosnie qui sont aussi sous le coup d'une inculpation par le Tribunal de La Haye. +Elles s'en sont abstenues jusqu'à présent, et rien n'indique qu'elles vont changer d'attitude. +Pourquoi cette inaction ? +Les causes profondes en sont manifestement politiques: les gouvernements anglais, américains et français ne sont pas disposés à risquer la vie de leurs soldats pour traduire ces archi-criminels devant la justice. +Karadzic et Mladic échappent depuis des années à la justice, précisément depuis la signature des accords de paix de Dayton. +Ne faut-il pas prendre également en compte les contraintes auxquelles doit faire face le président Kostunica et la sensibilité du peuple serbe ? +Faut-il risquer de déstabiliser la jeune démocratie yougoslave pour un procès que le gouvernement yougoslave est de toute évidence capable de mener à bien lui-même ? +Le fait qu'il va y avoir maintenant une commission Vérité et Réconciliation à Belgrade suggère que les nouvelles autorités yougoslaves comprennent qu'elles doivent traiter les plaies laissées par le régime criminel de Milosevic. +Le peuple serbe devrait bénéficier de la même compassion et de la même compréhension de la part de la communauté internationale que celle dont elle fait preuve pour décider si elle va risquer la vie de ses soldats pour arrêter Karadzic et Mladic. +Les jours du dollar sont-ils comptés ? +Une année auparavant, le dollar dominait le monde comme un colosse. +Il est désormais moins orgueilleux et l'euro triomphe. +Le dollar en tant que réserve et monnaie internationale incontestées est-il destiné à disparaître ? +Ou le " triomphalisme de l'euro " est-il prématuré ? +Cette question préoccupe non seulement les spéculateurs qui suivent le déclin du dollar, mais également les hommes d'affaires qui se demandent quelle devise utiliser lorsqu'ils facturent des importations ou des exportations. +En effet, le rôle joué par les devises dans le commerce mondial en ce qui concerne la facturation n'est pas assez mis en avant. +A l'heure actuelle, le dollar américain domine toujours. +La plupart des exportations et des importations américaines sont réalisées en dollars et le dollar est massivement utilisé pour les échanges n'impliquant pas l'Amérique. +Toutefois, depuis 1980, le dollar a perdu du terrain. +Les estimations de la Commission européenne indiquent que la part du dollar dans le commerce mondial a chuté de 56 % en 1980 à 52 % en 1995 (dernière année d'établissement des statistiques). +La part du Deutsche Mark est restée relativement inchangée entre 1980 et 1995. +Le yen reste en arrière, mais possède la croissance relative la plus élevée avec une part du commerce mondial qui a plus que doublé entre 1980 (2 %) et 1995 (presque 5 %). +Citons, parmi les raisons de la dominance de longue date du dollar en tant que première devise internationale, les faibles coûts de transaction sur les marchés des changes, le rôle historique du dollar dans le commerce mondial depuis 1945 et la dimension même de l'économie américaine. +Mais le rôle de ce dernier facteur est plus complexe qu'il n'y paraît. +Le Japon représente la deuxième plus grande économie au monde, mais la part de son commerce réalisée en yen reste faible, même en comparaison avec les pays européens plus petits. +Ceci s'explique entre autres par la part importante des entreprises américaines sur les marchés où les Américains vendent leurs produits. +Pour comprendre les raisons sous-jacentes à cet état de fait, il est primordial de considérer les facteurs qui sont en jeu lorsqu'une entreprise choisit la devise qu'elle utilisera pour facturer les produits. +Dans ce cas, un exportateur se trouve confronté à deux types de risques : risque de prix et risque de concurrence. +Prenons par exemple une entreprise japonaise qui cherche à réaliser les bénéfices en yen les plus élevés qui soient sur des produits vendus en Suisse. +Si cette entreprise définit le prix en francs suisses, elle s'expose au risque de prix étant donné que le prix en yen fluctuera avec le taux d'échange entre le yen et le franc suisse. +Les exportateurs japonais ont donc tendance à préférer fixer le prix en yen. +Mais les entreprises se soucient également des préférences de leurs concurrents. +Si l'entreprise japonaise vend ses produits sur un marché suisse donné dominé par les entreprises suisses (qui facturent en francs suisses), elle préférera également fixer le prix en francs suisses. +Si le prix était fixé en yens, cette entreprise risquerait de perdre sa part de marché si le yen prenait de la valeur. +Si les entreprises japonaises dominent sur un marché suisse particulier, elles préfèrent fixer le prix en yen : une entreprise japonaise ne se soucierait donc pas de perdre une part de marché en cas de revalorisation du yen car ses concurrents devraient faire face aux mêmes pressions. +Ces arguments expliquent le rôle important joué par le dollar dans le commerce. +La grandeur du territoire américain rend plus probable la dominance des entreprises américaines sur un marché donné soit comme exportateurs, soit comme importateurs-concurrents lorsque des articles d'importation sont vendus en Amérique. +Ceci implique que les entreprises américaines, qu'elles vendent sur leur territoire ou à l'étranger, fixent le prix en dollars et que les entreprises étrangères, pour des raisons concurrentielles, fixeront également le prix en dollars lorsqu'elles exporteront vers les Etats-Unis. +Etant donné que le Japon possède la deuxième plus importante économie au monde, le yen devrait constituer une devise plus importante. +La concurrence explique en grande partie pourquoi ce n'est pas le cas. +Premièrement, les Etats-Unis représentent le plus important partenaire commercial du Japon : plus de la moitié du commerce japonais avec les pays industrialisés se fait avec les Etats-Unis. +Plus de 80 % des exportations japonaises vers les Etats-Unis sont réalisées en dollars sur les marchés où les entreprises américaines tendent à dominer. +Deuxièmement, même lorsqu'ils vendent à des pays autres que les Etats-Unis, les exportateurs japonais sont souvent confrontés à une forte concurrence américaine. +Prenons les exportations japonaises vers l'Asie du sud-est, qui sont réalisées environ pour moitié en dollars en raison de la concurrence des exportateurs américains. +Il est peu probable que ces facteurs changent rapidement et cette situation nous amène à prédire que le yen conservera un profil bas dans le commerce mondial. +Ces facteurs expliquent également pourquoi, au fil du temps, l'euro devrait peser plus lourd dans le commerce international. +Les pays de la zone euro peuvent être considérés comme un seul pays lorsqu'ils traitent de la dénomination du commerce. +Ce " pays " est plus puissant sur le marché que les pays individuels qui forment l'Union monétaire européenne. +L'euro devra donc jouer à l'avenir un rôle plus important dans le commerce international que la somme des devises qu'il a remplacées. +Cependant, ces changements ne se produiront que progressivement. +Ainsi, le " triomphalisme de l'euro " qui a salué le déclin du dollar est en fait prématuré. +Malgré ses problèmes actuels, le dollar devrait conserver sa prédominance pendant un certain temps. +La discrimination en Europe en jugement +Les derniers rapports publiés en 2006 émanant de l'Observatoire Européen des Phénomènes Racistes et Xénophobes de l'Union européenne et du Commissaire aux droits de l'homme du Conseil de l'Europe, s'ils constatent ici et là des améliorations, font état le plus souvent d'une stagnation des conditions de vie des Roms, quand ce n'est pas de leur dégradation. +Malgré les importants efforts faits localement sous l'impulsion et avec l'appui du Conseil de l'Europe, les minorités roms demeurent victimes de nombreuses discriminations. +Parmi elles, la discrimination dans le domaine de l'éducation revêt une importance singulière, en raison de ses conséquences graves quant à l'avenir des victimes. +Elle se traduit dans les cas les plus extrêmes par une ségrégation dans le système éducatif même : des écoles isolées dans des campements isolées, des classes spéciales pour enfants roms dans des écoles ordinaires ou encore une surreprésentation de ces enfants dans des classes pour enfants ayant des difficultés d'apprentissage. +La question était de savoir si les enfants avaient été victimes d'une discrimination liée à leur appartenance à une minorité nationale dans leur droit à l'instruction. +Le gouvernement tchèque a reconnu que certaines de ces écoles spéciales comptaient de 80 à 90 % d'enfants roms. +Mais si discrimination il y avait, elle n'était pas directe, car selon la loi tchèque, un placement dans un tel établissement ne peut être décidé que par le directeur de l'école, sur la base des résultats d'un test portant sur les capacités intellectuelles de l'enfant effectué dans un centre d'orientation psychopédagogique, et sous réserve du consentement des parents ou du tuteur légal de l'enfant. +Une différence de traitement n'est pas en soi nécessairement discriminatoire. +Conformément à la jurisprudence de toutes les cours suprêmes nationales et à la celle de la Cour de Strasbourg, il y discrimination lorsque sont traitées de manières différentes des personnes placées dans des situations comparables. +Or il est reconnu par la jurisprudence nationale et internationale qu'une mesure non discriminatoire en droit peut se révéler discriminatoire en fait. +Dans le cas présent, la discrimination invoquée ne provenait pas de la loi elle-même, mais de ses effets, les plaignants se fondant principalement sur les statistiques qui montraient la surreprésentation de la communauté rom dans ces écoles spéciales. +Il existait bien aussi de nombreux rapports d'ONG et même du Conseil de l'Europe sur la situation des Roms en République tchèque, mais, comme l'a rappelé la Cour à juste titre, elle doit se prononcer sur les seuls cas dont elle était saisie et n'a pas à se prononcer sur la légitimité du système éducatif tchèque. +Ces choix sont des problèmes d'opportunité qui relèvent de la compétence des Etats et peuvent donc varier selon ces Etats. +Selon elle, la loi a pour but légitime d'adapter l'enseignement aux déficiences d'une catégorie particulière d'élèves et les tests psychologiques paraissent suffisamment objectifs pour ne pas être soupçonnés de partialité raciale. +Aussi fondé que soit le raisonnement de la Cour, il demeure une sorte de sentiment de malaise. +Les statistiques font état d'une étonnante proportion d'enfants roms dans ces écoles et le soupçon d'un relent discriminatoire est difficile à évacuer. +Si les lois ont bel et bien changé, les mentalités n'ont pas toujours suivi le même rythme et l'on sait intuitivement que l'on peut tout faire dire à un test psychologique. +Par ailleurs, avant de conclure, la Chambre a éprouvé le besoin de rappeler que si, dans le cas d'espèce, elle n'avait pas conclu à la violation de la Convention, les statistiques révélaient « des chiffres inquiétants et que la situation générale en République tchèque concernant l'éducation des enfants roms rest[ait] à parfaire ». +Enfin, sans toutefois contester le bien fondé de la décision, le président de la Chambre, Jean-Paul Costa, a émis une opinion concordante et le juge Barreto a rédigé une opinion dissidente. +Il n'est d'ailleurs pas anodin que la Cour ait accepté, à la demande des parties, le renvoi de l'affaire devant la Grande chambre. +Selon le Président Costa, une infirmation du jugement de février 2006 impliquerait de contredire la jurisprudence antérieure. +Se prononcera-t-elle sur la conventionnalité du système éducatif tchèque lui-même ? +Suivra-t-elle le juge Barreto qui appelle à la reconnaissance d'une obligation de discrimination positive au bénéfice des Roms ? +Quelle que soit la formule qui sera adoptée, il est certain que les enfants roms doivent recevoir le même traitement que les autres enfants. +C'est cet impératif qui donne toute son importance à la décision à venir, car c'est l'occasion pour la Cour de réaffirmer le caractère fondamental du principe de non-discrimination qui caractérise nos sociétés démocratiques. +Les musulmans d'Afrique et l'islam +Les manifestations qui ont eu lieu au Nigéria (les plus violentes qui ont eu lieu en Afrique contre ces dessins) posent la question du rôle et de la place des musulmans africains (ou plus précisément d'Afrique sub-saharienne) dans le "monde musulman". +Plusieurs de leurs caractéristiques les distinguent des autres musulmans, en particulier de ceux du monde arabe. +Ils sont moins autoritaires et il leur est plus difficile de faire reconnaître leurs droits et de se faire admettre dans leurs pays respectifs. +Une partie du problème tient au dilemme perpétuel auquel ils sont confrontés quant à leur identité. +On parle de l'Afrique comme d'un continent qui a un triple héritage et de ce fait, les musulmans d'Afrique ont une personnalité clivée. +Un Africain de confession musulmane doit se positionner par rapport à sa religion, à sa tribu - les Haoussa par exemple - et à son pays - le Nigéria à titre d'exemple. +Même si l'islam est fortement implanté en Afrique, il incorpore fréquemment des rituels purement africains lors des mariages et des funérailles. +Ainsi, à l'ouest du Kenya, les Luhya qui sont musulmans sacrifient des animaux lors des funérailles, alors que l'islam ne le prescrit pas. +Dans beaucoup de pays d'Afrique sub-saharienne les musulmans sont minoritaires. +Ils ne constituent pas une écrasante majorité, comme au Nigéria où dans le nord, certains Etats à majorité musulmane appliquent la sharia, faisant d'eux jusqu'à un certain point des Etats musulmans. +La République fédérale du Nigéria est néanmoins un pays laïque, comme presque tous les pays d'Afrique sub-saharienne. +L'héritage colonial joue aussi un rôle dans la relative docilité des musulmans d'Afrique sub-saharienne. +Les pouvoirs coloniaux ont tracé des frontières arbitraires qui regroupent à l'intérieur d'un même pays divers groupes ethniques parfois ennemis héréditaires. +Ils ont concentré le "développement" dans les zones les plus riches, tout en négligeant les régions pauvres, souvent musulmanes. +Dans ces pays où règne souvent le clientélisme, les musulmans ont dû épouser un nationalisme ethnique étriqué pour bénéficier des "fruits de l'indépendance" et obtenir un minimum de représentation politique. +Cela a entraîné des problèmes dans les pays qui bordent l'océan indien : la désunion entre les musulmans habitant sur les côtes, plus arabisés, et ceux de l'intérieur, moins arabisés. +Il n'est pas exagéré de dire que les musulmans arabisés des côtes kenyanes et tanzaniennes (y compris l'île de Zanzibar) se considèrent comme "plus musulmans" que ceux moins arabisés de l'intérieur. +Le FMI doit veiller à la stabilité des marchés financiers mondiaux +Le FMI joue un rôle important en raison de sa perspective très large, englobant à la fois les économies avancées et celles qui sont émergentes ou en développement, qui s'intègrent de plus en plus dans le système financier mondial. +Par ailleurs, il ne se focalise pas sur les marchés financiers per se et il a une expertise unique quant aux liens entre l'économie réelle et la situation financière. +Enfin, sa perspective est universelle, ouverte sur l'ensemble des secteurs et des marchés. +Jusqu'à présent le Fond n'a pas exploité sa position unique, car il a souvent manqué d'initiative, n'a pas suffisamment donné de messages clairs et de recommandations à ses membres. +Mais la tourmente financière actuelle montre la réglementation et à la surveillance des marchés présentent des lacunes et que des interactions au niveau mondial, encore mal comprises, demandent une réponse globale. +Nous pensons que le FMI doit agir pour aider à résoudre les problèmes de stabilité financière et anticiper davantage pour éviter ou amortir de futures crises. +Il devrait collaborer étroitement avec le Forum pour la stabilité financière, la Banque pour les règlements internationaux et d'autres organismes internationaux appropriés. +Afin de renforcer son rôle en faveur de la stabilité financière, nous proposons qu'il prenne des initiatives dans trois domaines interdépendants : +- Il doit favoriser la stabilité financière au moyen d'un contrôle multilatéral. +Il doit se positionner au centre des marchés financiers internationaux et fournir une plate-forme d'analyse destinée non seulement aux banques centrales et aux ministères des Finances, mais aussi aux régulateurs des marchés, aux responsables de la réglementation et aux acteurs du marché. +Il doit en particulier améliorer sa connaissance des liens entre les structures de contrôle et la situation macroéconomique, notamment la balance des payements et l'évolution des taux de change, en mettant à profit toute l'information dont il dispose sur le plan international et l'expertise qu'il a acquise avec des missions dans ses 185 pays membres. +Il pourrait alors identifier les menaces macroéconomiques contre la stabilité et encourager l'adoption des meilleures pratiques par les contrôleurs et les régulateurs des marchés. +A partir de ses études, il pourrait contribuer davantage au débat sur les implications macroéconomiques et financières des fonds d'investissements, des fonds spéculatifs et des fonds souverains et faire des recommandations pratique pour souligner leur contribution à la stabilité financière internationale. +- Il doit favoriser la stabilité financière par un contrôle bilatéral. +Il doit repenser la manière d'assurer la stabilité financière dans le travail au jour le jour avec ses membres et intégrer entièrement l'analyse du secteur financier à ses activités de surveillance. +Il doit aussi être davantage proactif et parler avec franchise aux pays importants du point de vue de la systémique qui connaissent des insuffisances dans le contrôle financier et la gestion des crises. +Il doit aider les économies émergeantes à établir des marchés financiers intérieurs sains. +Ces mesures supposent de diversifier les membres des missions du FMI, de manière à utiliser l'expertise du secteur financier en complément des compétences macroéconomiques et budgétaires. +Le Fond doit avoir recours à un plus grand nombre d'experts financiers et moins s'appuyer sur les universitaires. +- Enfin, il doit aider ceux de ses membres qui ont des programmes précis pour libéraliser et intégrer leur économie dans le système financier mondial. +Il devrait envisager de créer les instruments de liquidité appropriés pour donner confiance aux économies de marché émergeantes qui risquent d'être touchées par une crise hors leur contrôle, plutôt que de les forcer à accumuler des réserves de plus en plus importantes ou d'avoir recours à des dispositifs inter-régionaux d'autoassurance. +Des initiatives dans ces trois domaines contribueraient à créer une institution multilatérale qui aurait l'autorité et l'expertise voulue pour conseiller les pays membres sur les problèmes de contrôle et de régulation d'importance systémique. +La tempête financière que nous traversons illustre la nécessité d'une telle institution. +Les pays membres que nous représentons -- des pays avancés et émergeants d'Asie et d'Europe  -- veulent jouer un rôle pour renforcer le rôle du FMI au cœur du système monétaire international. +Pendant trop longtemps, toutes les innovations financières ont été considérées comme bénéfiques pour le développement économique et comme un moyen de partager les risques. +Certes, il y a eu des avertissements prévenant que la prise de risque devenait excessive, mais pendant trop longtemps, l'espoir que les forces du marché allaient résoudre tous les problèmes a prévalu. +Il nous faut des mécanismes d'alerte précoce, assortis d'actions concrètes. +Cela ne signifie pas nécessairement que la bonne réponse soit contenue dans davantage de réglementation, mais ce qui importe est que les mesures soient consistantes. +Il est important d'améliorer les contrôles, mais les pays doivent aussi se préparer à coordonner leurs politiques économiques et de taux de change. +Avec leurs achats massifs de dollars, les économies émergentes ont pendant trop longtemps soutenu la culture du crédit aux États-Unis qui a fini par déboucher sur cette crise. +Il importe particulièrement que le FMI joue un rôle plus affirmé car tous ces problèmes sont interconnectés. +En effet, le FMI, grâce à la diversité de ses pays membres et à l'accumulation de son savoir-faire international, est le mieux placé pour endosser le rôle de meneur dans une approche multilatérale de la stabilité financière. +Ce rôle devrait aller au-delà de son traditionnel travail de conseiller et de prêteur de dernier recours. +Sa casquette de conseiller rend le FMI vulnérable à la critique des pays développés selon laquelle le monde industrialisé ne tient pas compte de son avis. +Étant donné que des équipes du FMI travaillent aujourd'hui dans le monde entier pour aider les gouvernements à mettre en place des programmes capables de restaurer la confiance, il est clair que son rôle de prêteur de dernier recours n'a rien d'obsolète. +Mais cela comporte un sous-entendu amer : le FMI doit à présent réparer les dégâts occasionnés dans les pays émergents par une crise financière dont les origines viennent d'ailleurs. +Au niveau mondial, le FMI peut aider à concevoir un système de réglementation global pour les marchés financiers en fournissant une plateforme aux acteurs clés. +Le Fonds peut apporter une aide analytique, identifier des failles de réglementation et indiquer les endroits où elle a besoin d'être renforcée. +Il doit surveiller les progrès, sans agir lui-même comme un régulateur. +Ce mandat reste entre les mains des contrôleurs actuels et des groupements internationaux comme le Financial Stability Forum. +Mais le FMI deviendrait le "contrôleur des contrôleurs." +Au niveau national, le FMI peut évaluer les systèmes de réglementation et faire des recommandations. +De nombreux membres du FMI l'ont volontairement demandé. +Jusqu'à présent, cependant, les États-Unis se sont abstenus de laisser le FMI s'impliquer. +Des analyses sous la supervision du Financial Sector Assessment Program du FMI doivent devenir obligatoires, et leurs résultats intégrés aux activités ordinaires de surveillance du Fonds. +Une meilleure coordination des politiques peut bénéficier de l'amélioration d'un travail analytique sur les relations entre développements financiers et économie réelle. +Le FMI devrait être autorisé à amener les décideurs d'États-membres clés à la table, et ce sur la base de son analyse indépendante. +Des consultations multilatérales peuvent contribuer à empêcher des pays de prendre des mesures économiques qui affectent négativement la stabilité financière et économique d'autres pays. +Les déséquilibres mondiaux doivent être abordés avec plus de force. +Enfin, le FMI doit mieux s'équiper pour gérer les problèmes du secteur financier. +Les programmes traditionnels du FMI, concentrés sur des politiques budgétaires ou monétaires, sont insuffisants dans cette crise financière. +Le Fonds doit établir des lignes de crédit pour les pays qui conduisent des politiques macro-économiques solides. +Dans ces cas-là, les conditions traditionnellement requises par le FMI ne seront pas nécessaires. +Le nouveau FMI +Le FMI est bien placé pour aider ses membres à venir à bout des gouffres de financement créés par la crise. +Lors de la préparation du sommet du G20, l'accès aux facilités de crédit du Fonds a été simplifié et les conditions rationalisées. +Dans un moment décisif, une nouvelle ligne de crédit non-conditionnelle a été introduite pour les pays affichant de bons résultats. +Le Mexique et la Pologne en seront les premiers bénéficiaires, et d'autres pays y prétendront. +Ces politiques de crédit plus souples reflètent une nouvelle image du FMI. +Le stigmate négatif rattaché au financement par le FMI fait dorénavant partie du passé. +Maintenant que son rôle de financeur dans cette crise est assuré, le FMI a besoin de consolider sa position de gardien d'un système financier international ouvert. +Le FMI a été créé pour éviter des crises comme celle que nous traversons actuellement, et en cela il a failli. +Il faut reconnaître que des alarmes ont été données, mais que les décisionnaires, particulièrement dans les pays avancés, n'y ont pas donné suite. +Le "nouveau" FMI doit être une institution qui communique mieux avec ses membres, équilibre équitablement les intérêts de ses membres avancés, émergents et en développement, et aligne mieux ses politiques sur les besoins du moment. +Maintenant que le FMI bénéficie d'un second souffle, il doit regagner sa position centrale dans le système financier international. +Pour ce faire, il est nécessaire de se concentrer sur trois sujets : une meilleure surveillance de la stabilité financière, une coordination internationale renforcée, et un processus de prise de décision réactualisé. +Le nouveau FMI doit s'exprimer plus clairement sur les problèmes de stabilité financière mondiale. +Il doit s'assurer qu'il n'y a pas de failles dans la surveillance des institutions financières. +Il peut aider à mettre en forme un système de supervision mondial plus robuste, qui doit être érigé afin de préserver les bénéfices des marchés financiers mondiaux. +Et il doit aider à développer la vision de ce à quoi devrait ressembler le futur paysage financier. +Dans ce but, la surveillance du FMI devrait comprendre des réactualisations régulières des organismes de surveillance dans les pays à l'importance systémique. +Des alarmes précoces, commissionnées par le G20, devront être ciblées et le FMI devra s'assurer que les décisionnaires font suivre d'effet les conseils du Fonds. +Le nouveau FMI a besoin de regarder la coordination internationale avec un œil neuf. +L'exigence d'un ordre monétaire différent, tel que le prône la Chine, prépare le cadre d'initiatives nouvelles visant à éviter les déséquilibres internationaux à l'origine de cette crise. +Premièrement, le déficit d'épargne des États-Unis devra être résolu de façon durable. +Deuxièmement, la Chine devra rendre sa monnaie convertible. +Troisièmement, la position de l'euro se renforcera avec le temps à mesure que de nouveaux pays rejoindront la zone euro. +Avec davantage de monnaies-clés en place, la perspective d'un système monétaire réellement multipolaire apparaît, accordant un rôle croissant aux DTS. +Cela diminuera le besoin ressenti par les économies émergentes de s'assurer elles-mêmes contre l'instabilité financière, en amassant de vastes réserves. +Enfin, le nouveau FMI a besoin de structures de gouvernance qui reflètent mieux les nouvelles réalités mondiales. +La perception que les pays avancés gèrent les affaires du Fonds, sans suivre ses conseils pour autant, a sapé l'autorité du FMI. +Le sommet du G20 a marqué le retour des États-Unis au multilatéralisme. +Cette acceptation d'une responsabilité collective devrait s'accompagner de l'abandon du pouvoir de veto des États-Unis en abaissant les majorités requises pour le vote, ainsi que l'abandon de la prérogative de l'Europe de nommer le directeur général du FMI. +L'une des forces de la structure actuelle de gouvernance du FMI, le système de représentation des pays, devrait être imité par le G20, afin d'assurer l'inclusivité. +La croissance rapide de la Chine, de l'Inde et d'autres pays émergents doit s'accompagner de l'intensification de leur influence, mise en place par le biais de l'augmentation des quotas, prévue en 2011. +Les pays avancés, y compris les pays européens, verront un déclin relatif de leur pouvoir de vote. +Les pays émergents, qui auront de plus en plus leur mot à dire, devront aussi endosser davantage de responsabilités internationales, notamment en termes financiers. +Aujourd'hui, les pays européens financent les prêts du FMI à hauteur de 42 %, et les prêts concessionnels de la Banque mondiale à hauteur de 62 %. +Cette tâche devra être partagée par les pays émergents avec de vastes réserves. +Ces réserves sont utilisées au mieux en aidant le FMI à maintenir un système financier ouvert et stable, et à empêcher que ne se reproduisent des crises comme celles-ci. +Pourquoi attendre l'euro ? +Bien que l'agrandissement vers l'est de l'Union européenne n'ait pas encore eu lieu, l'objet du débat se déplace déjà pour se centrer sur ce qui va suivre : à quel moment les nouveaux membres, majoritairement postcommunistes, devront-ils adopter l'euro ? +En supposant qu'ils se conforment aux provisions du Traité de Maastricht relatives à l'UEM - et qu'ils ne soient pas tenus injustement de respecter des critères plus rigoureux - la principale question sera de savoir les nouveaux membres retireront plus d'avantages à attendre ou à postuler rapidement. +Au début, il est nécessaire de souligner qu'en cherchant à adhérer plus tôt à l'UEM, un pays adopte un programme fiscal et structural plus ambitieux que si son adhésion à l'UEM était retardée. +Sinon, adhérer tôt ne servirait à rien. +J'estime qu'une adoption précoce de l'euro n'est pas seulement possible, mais qu'il est préférable de la retarder. +Par adoption précoce, j'entends le délai acceptable le plus court qui soit - deux ans - suite à la subordination par un nouveau membre de sa politique fiscale aux contraintes fiscales et monétaires du mécanisme des taux de change (MTC II). +En supposant une entrée dans l'UE et les MTC II en 2004, les nouveaux membres devraient se fixer 2006 pour entrer dans la zone euro. +Est-ce réaliste ? +Eh bien, la plupart des pays candidats ont déjà atteint un degré élevé de convergence structurale avec l'UE. +Les exportations vers l'Union sont montées en flèche depuis 1991, lorsque la chute du système d'échange COMECON de l'époque soviétique a imposé une réorientation radicale du commerce - aidée par des investissements étrangers massifs provenant de l'UE - vers les marchés de l'Ouest. +La plupart des candidats à l'accession exportent maintenant plus vers l'UE que ne le faisaient la Grèce, le Portugal et l'Espagne à leur entrée dans l'UE et l'UEM. +Le progrès sur la désinflation est, d'une façon similaire, impressionnant. +L'inflation annuelle de la plupart des pays candidats a chuté à 4-5 % - pas bien plus que dans beaucoup de pays de l'UE et moins qu'aux Pays-Bas l'année dernière. +En ce qui concerne la convergence structurale, les candidats à l'UE sont déjà comparativement plus performants que l'Espagne, le Portugal et la Grèce avant leurs débuts dans l'UEM. +Il n'existe pas beaucoup plus de risques de futures grandes oscillations correctives des prix étant donné que la quasi-majorité des prix est complètement libéralisée. +Des études théoriques suggèrent que l'inflation dans les pays candidats à l'accession restera obstinément plus élevée que ne l'autorise le Traité de Maastricht. +Le coupable de cette vision pessimiste est le soi-disant effet « Balassa-Samuelson » : la croissance rapide de la productivité dans les secteurs exportables des candidats à l'accession - la fabrication, par exemple - fait grimper les salaires réels dans toute leur économie, y compris dans les secteurs non exportables tels que les services. +Cette augmentation globale des salaires réels face à une croissance moindre de la productivité du secteur des services fait monter les prix relatifs et garde l'inflation au-dessus de la moyenne de la zone euro. +L'effet Balassa-Samuelson est toujours manifeste en Grèce, en Espagne et au Portugal. +Mais comme l'estime la recherche empirique préparée par les Banques nationales de la CCE5, sa contribution à la croissance totale des prix dans les pays candidats est de 1-2 %. +Avec un effet Balassa-Samuelson si sobre et ayant une portée limitée pour une future inflation corrective, le critère de l'UEM relatif à la stabilité des prix - de l'inflation annuelle dans les limites de 1,5 % du taux moyen pour les trois économies obtenant les meilleures performances dans l'UE - est à portée de la main. +Mais une admission précoce dans l'UEM est-elle préférable au renvoi de l'adhésion ? +Du point de vue des états membres actuels, l'admission de la Hongrie, de la Lettonie, de la Pologne ou de la Slovaquie, plus tôt que tard, affaiblirait-elle l'euro comme le redoutent beaucoup? +Les craintes qu'une extension « trop précoce » de l'UEM aux nouveaux états ébranlerait le taux des échanges externes de l'euro sont irrationnelles. +Si tous les pays candidats rejoignent l'UE environ à la même période, ils ne représenteront tous réunis que 6 % de son PBN total. +Ainsi tout impact négatif sur l'euro provenant de la rapide accession des pays candidats à l'UEM représenterait au pire à peine plus qu'une erreur d'arrondi. +Le report de l'entrée dans l'UE pourrait avoir un sens si une attente plus longue produisait plus d'informations. +Mais une attente plus longue pourrait ne donner lieu à rien, si ce n'est à brasser plus d'air. +De même, la période de transition est déjà agitée, les flux de capitaux entraînés par la convergence augmentant les taux d'échange et compliquant la politique monétaire de plusieurs pays candidats, dont la Pologne, la République tchèque et la Hongrie. +En effet, la volatilité du flux de capitaux expédierait le taux d'échange flexible proposé sous le MTC II - une plage de fluctuation de 15 % de chaque côté d'une parité centrale. +Certains soutiennent que l'adhésion au MTC II doit être considérée comme une proposition à long terme - sans doute jusqu'en 2010 - à l'avantage des candidats. +L'avantage est simple : le MTC II autorise une certaine flexibilité des taux d'échange, par opposition aux taux fixes impliqués par l'adoption de l'euro. +Il contribuerait à aider les candidats à maintenir leur rendement économique à un niveau élevé et à préserver ainsi une convergence réelle avec les niveaux de revenus moyens de l'UE. +Cet argument est exceptionnellement faible et également politiquement suspect. +Comme l'indiquent les données de la Banque centrale européenne, le PNB moyen par habitant dans les pays candidats à l'accession représente 44 % du niveau de la zone euro. +La taille de l'écart des revenus est associée aux faibles différentiels de croissance pour impliquer que le processus de la convergence réelle s'étendra même bien au-delà des dates les plus circonspectes pour l'entrée dans l'UE et l'UEM, et durera sans doute plusieurs décennies. +Plus important, la croissance économique sur le long terme ne dépend pas du type de taux d'échange - qu'il soit flexible ou fixe (UEM) - tandis qu'une accession précoce accélèrera les réformes cruciales. +Quelques années d'une flexibilité limitée du taux d'échange constituent un faible substitut à une rapide exécution des réformes structurales. +Chez presque tous les candidats, une désinflation et une croissance économique à long terme supplémentaires nécessitent une consolidation fiscale, des marchés du travail plus souples et la mise en oeuvre de la privatisation. +Le report de l'entrée dans l'UEM risque d'affaiblir les motivations de réalisation de ces réformes politiquement onéreuses, mais nécessaires. +Tout retard pris dans la mise en oeuvre de réformes ralentira en fin de compte le processus de convergence réelle que les officiels de l'UE chérissent à juste titre. +Par contraste, une adoption précoce inciterait davantage à la réalisation de ces réformes, et donc à une convergence réelle. +La réussite permettrait aux pays candidats de commencer à récolter les avantages d'une plus grande transparence des prix, de coûts de transaction réduits et d'une solide structure macroéconomique. +Cette stratégie, et non celle d'une entrée différée, est la plus prometteuse pour les membres actuels et futurs de l'UE. +Le flambeau révolutionnaire de la liberté +Durant des décennies, Milton Friedman est resté bloqué dans une traversée du désert intellectuelle : il refusait le consensus keynésien de l'après guerre voulant que les gouvernements aient recours à la politique budgétaire pour gérer la demande globale -- conception qui a inspiré les politiques économiques étatistes des années 70. +En effet, à cette période, Friedman faisait figure de véritable révolutionnaire intellectuel, associant la recherche universitaire rigoureuse aux ouvrages et articles à succès écrits avec élégance, en faveur des politiques d'économie de marché -- et revendiquant le lien entre liberté économique et liberté politique, défendu par les grands économistes, d'Adam Smith à Friedrich von Hayek. +Dans le domaine économique, Friedman a fait revivre et développé la théorie monétaire selon laquelle les résultats économiques dépendent essentiellement de la quantité d'argent en circulation. +Dans son chef d'oeuvre Histoire monétaire des Etats-Unis, 1867-1960 (écrit avec Anna Schwartz), il a attribué les récessions, y compris la Grande dépression des années 30, à une baisse de la masse monétaire. +De même, il soutient que l'excédent monétaire est responsable de l'inflation. +Dans les années 60, Friedman a montré que la gestion keynésienne de la demande par la dépense publique augmentait de façon constante la masse monétaire et accélérait la hausse des revenus et des coûts. +Avec Edmund Phelps -- lauréat du prix Nobel cette année -- il a prouvé qu'il n'existe pas de corrélation stable entre le chômage et l'inflation. +Les politiques publiques expansionnistes visant à faire baisser le chômage en deçà d'une certaine limite alimenteraient les anticipations inflationnistes et saperaient la croissance économique et l'emploi. +Cette analyse a anticipé et expliqué la conjonction entre la hausse de l'inflation et la montée du chômage des années 70, connue sous le nom de « stagflation ». +Friedman a joué un rôle catalyseur dans les nouvelles conceptions politiques économiques publiques. +La stimulation et le contrôle budgétaire ont cédé la place à un nouvel instrument de la gestion économique : les politiques monétaires menées par des banques centrales indépendantes. +L'exploitation de la demande selon Keynes a donc été supplantée par une nouvelle conception -- que nous devons largement à Friedman -- aspirant à la discipline budgétaire et à la stabilité des coûts comme garants de la viabilité macroéconomique. +Les travaux de Friedman sur le rôle de l'État dans la société ont tout autant influencé l'opinion publique. +Avec Hayek, son collègue de l'Université de Chicago, Friedman a donné un assaut intellectuel plus général au keynésianisme, en soutenant que tout gouvernement qui se permet de contrôler l'économie au nom de l'égalité menace les libertés individuelles. +Dans ses rubriques pour Newsweek publiées entre 1966 et 1983, et ses ouvrages Capitalisme et liberté , La liberté du choix et La tyrannie du statut quo (en collaboration avec sa femme Rose), Milton Friedman propose une vision de la liberté à la fois séduisante et accessible. +En effet, La liberté du choix -- à l'origine d'une émission de télévision populaire qu'il présentait -- a été publié illégalement en Pologne dans les années 80. Au cœur des années les plus sombres de la domination communiste, ce livre m'a permis, ainsi qu'à beaucoup d'autres, de rêver d'un futur libre. +Dans un style à la clarté remarquable, Friedman met en avant une philosophie politique convaincante, associées à des propositions concrètes. +Par exemple, il a lancé l'idée des bons d'études, persuadé que la compétition dans l'enseignement privé garantirait de meilleurs résultats scolaires que les systèmes publics. +Friedman est le flambeau des conservateurs économiques du monde entier. +Son influence sur le gouvernement de Margaret Thatcher a en partie transformé une Grande‑Bretagne postindustrielle sinistrée et dominée par la lutte des classes en grande puissance économique européenne. +En outre, il a largement inspiré les hauts fonctionnaires du Vietnam pour leurs réformes d'économie de marché dans les années 80. +Il est également à l'origine de la pratique désormais courante consistant à mesurer et à comparer les libertés économiques et politiques pour déterminer dans quels pays la liberté est limitée. +Mais l'anti-étatisme systématique de Friedman l'a aussi conduit à embrasser des points de vue choquant bon nombre de susceptibilités politiques conservatrices -- l'honnêteté intellectuelle est caractéristique de la carrière de Friedman. +Par exemple, il s'opposait aux mesures gouvernementales consistant à interdire ou à réguler les comportements humains, comme les lois anti-drogue et les mesures voulant que les médecins ne puissent exercer sans autorisation, ni les automobilistes conduire sans permis, car ces réglementations serviraient à subventionner le crime organisé. +De même, il s'est considérablement investi dans sa campagne contre le service militaire aux Etats‑Unis. +Même s'il n'a pas remporté toutes ses batailles intellectuelles, il est certain que Friedman est un homme de grande valeur et que les travaux qu'il laisse derrière lui auront une influence durable. +Je vis dans une Pologne désormais libre et je considère Milton Friedman comme l'un des grands architectes intellectuels de notre liberté. +UE : Comment les nouveaux membres peuvent-ils rattraper leur retard ? +8 des 10 nouveaux membres de l'UE se sont radicalement transformés à une vitesse sans précédent. +Pour les 8 pays post-communistes, quel que soit le domaine considéré - la finance, la structure de la propriété, le secteur bancaire, le commerce extérieur, la santé, l'environnement, les marchés ou l'éducation - les institutions ont été entièrement recréées. +Dans beaucoup de ces pays en transition, l'inflation qui atteignait des sommets (251% en Pologne en 1989) a été jugulée et leurs monnaies sont maintenant totalement convertibles. +Les entreprises privées tiennent le haut du pavé pour la production et l'emploi, alors qu'elles ne comptaient que pour 23,1% du PIB de la Pologne en 1989 et seulement pour 4% en République tchèque et en Slovaquie. +De la même manière, après l'effondrement du Conseil d'assistance économique mutuelle (COMECON) en 1991, ces pays ont rapidement réorienté leur commerce extérieur vers l'Ouest. +Dans l'enseignement les offres de formation se sont multipliées, la pollution de l'air et de l'eau a chuté et l'espérance de vie a augmenté jusqu'à se rapprocher du niveau des pays d'Europe de l'Ouest. +Depuis le début des années 1990, la perpective de leur admission a stimulé les réformes institutionnelles chez les nouveaux pays membres. +Leur appartenance à l'UE ne pourra que les y aider. +Leur nouvelle crédibilité politique va susciter l'arrivée de nouveaux investissements étrangers et le budget de l'UE va renforcer le processus de construction des nouvelles institutions, l'investissement dans les infrastructures et la protection de l'environnement. +Il n'y a guère de doute quant à l'impact positif des investissements étrangers. +Ils favorisent les transferts de technologie et du fait de leur complémentarité avec les firmes nationales, ils contribuent proportionnellement plus à la croissance que l'investissement intérieur. +Ainsi, le taux de croissance a augmenté en moyenne de 0,4 à 0,9% pour la Grèce, le Portugal et l'Irlande et de 0,3 à 0,5% pour l'Espagne. +L'intérêt du marché unique est évident, ne serait-ce que parce qu'il est très attractif pour les investisseurs étrangers. +Selon les sondages, 60% des entreprises qui exportent dans au moins 6 pays de l'UE ont vu leurs exportations croître, 80% des consommateurs pensent que le choix des marchandises est plus large et 67% d'entre eux que la qualité des marchandises s'est améliorée. +Les échanges transfrontaliers ont cru de 1/3 depuis la création du marché unique en 1992, ceci grâce au principe de reconnaissance mutuelle qui permet aux entreprises d'appliquer la législation de leur propre pays et aux directives de l'UE visant à harmoniser les réglementations des différents pays. +Le prix hors TVA des voitures neuves peut varier de 70% suivant les pays, essentiellement à cause de réglementations qui s'opposent à la concurrence. +Les services sont encore davantage affectés par les obstacles qui subsistent à l'intérieur du grand marché. +Ainsi, une nouvelle directive exige que les industriels puissent choisir leur fournisseur d'électricité dès juillet 2004 et leur fournisseur de gaz à partir de juillet 2007. +Mais cette directive fait l'impasse sur les particuliers qui en 2001 ne pouvaient choisir leur fournisseur d'électricité que dans 5 pays de l'UE et leur fournisseur de gaz dans seulement 3 pays. +En ce qui concerne la mobilité des citoyens de l'Union, on est loin de la théorie à la pratique. +L'intégration des marchés financiers de l'UE initiée en 1999 avec l'adoption du Plan d'action pour les services financiers (PASF) a aussi besoin d'une impulsion supplémentaire. +Selon la Commission européenne, la création d'un marché financier européen unique permettrait de réduire de 0,5% le coût des capitaux propres des entreprises de l'UE et de 0,4% le coût du financement de leur dette. +Le marché financier unique entraînerait une croissance du PIB de l'Europe des Quinze de 1,1% au cours des 10 prochaines années et ferait progresser l'emploi de 0,5%. +Mais en 2002, seules 31 des 42 mesures du PASF étaient appliquées. +Une entrée rapide dans l'Union économique et monétaire (UEM). La meilleure stratégie pour les nouveaux arrivants est de chercher à entrer aussitôt que possible dans la zone euro, ce qui les poussera à achever les réformes de structure nécessaires pour répondre aux critères de Maastricht en ce qui concerne l'inflation, le déficit budgétaire et la dette publique. +Cela présenterait des avantages évidents pour la croissance économique à long terme, de même que l'élimination des risques liés aux taux de change, du coût lié à la protection contre ces risques et du coût des transactions dans le commerce extérieur. +Les nouveaux membres sont déjà largement intégrés dans l'économie de l'UE, avec une forte convergence à caractère cyclique entre eux et les pays de l'UME. +L'approfondissement de cette intégration va probablement aligner les cycles économiques de ces pays, de la même manière que la synchronisation des chocs de l'offre et de la demande dans l'UE des années 1990. +Aussi, le coût lié à l'abandon d'une politique monétaire indépendante et d'un taux de change flexible ne devrait pas être significatif. +Dans chacun des domaines évoqués, les nouveaux arrivants ont encore un chemin difficile à parcourir avant de parvenir à une intégration totale. +Mais c'est aussi bien souvent le cas des membres de longue date de l'UE. +Leçons de l'après-Kaczyński +Certains gouvernements gâchent les périodes de prospérité économique en repoussant les réformes nécessaires à garantir un avenir prospère. +Le gouvernement à majorité PiS, élu en 2005, a h_3érité d'une économie à croissance rapide mais n'a rien fait pour renforcer cet héritage. +Il a au contraire choisi de bloquer les privatisations, tandis que les réformes fiscales et les déréglementations restaient lettres mortes. +À vrai dire, le gouvernement Kaczyński s'est lancé dans un programme de contre-réformes. +La séparation des pouvoirs (un appareil judiciaire et une banque centrale indépendants) a été oubliée au profit d'un État « fort ». +Le PiS a mis les médias au pas, la fonction de procureur général a été politisée, et avec l'aide des médias, a été transformée en un outil de propagande du parti avec pour objectif de prouver que la Pologne était la proie de forces cachées maléfiques, connues sous le terme układ , qui dupaient les Polonais et les maintenaient dans la pauvreté. +Quiconque tentait de s'opposer à ce scénario ou de critiquer les méthodes du PiS, et en particulier celles de son chef, Jarosław Kaczyński, était rapidement catalogué comme appartenant aux układ . Personne n'a été épargné. +Lech Wałęsa et Władysław Bartoszewski, le Mandela polonais, ont en particulier été attaqués sans pitié. +Contrairement à la notion communément admise, la victoire du PiS en 2005 n'avait rien à voir avec une « fatigue des réformes », puisque que peu de réformes ont été appliqu_ées entre 2000 et 2005 ((à l'exception d'une tentative ambitieuse, mais inachevée, de consolidation fiscale). +Cette explication ne tient pas non plus la route ailleurs. +En Slovaquie, le dirigeant réformiste Mikuláš Dzurinda a remporté les élections en 1998 après avoir mis en œuvre un rigoureux programme de stabilisation, et aurait pu rester au pouvoir après les élections de 2006 sans les dissensions au sein de sa coalition. +En République tchèque, un gouvernement réformiste a été élu en 2006, et en Hongrie, les divisions politiques, plus qu'une fatigue des réformes, dominent les campagnes électorales. +Bien sûr, il n'est jamais aisé pour les réformistes de gagner les élections. +Au contraire, les réformes ne sont généralement entreprises que lorsque les signes d'une crise imminente sont tellement évidents qu'il est impossible de les ignorer, ou alors une fois qu'une crise a « éduqué » les électeurs. +(Si toutefois la crise suit les réformes, des politiciens populistes peuvent l'emporter en blâmant les réformes au lieu de leur nature inachevée, comme en Argentine). +Les réformistes peuvent remporter des élections s'ils parviennent à battre les populistes sur le terrain de la communication. +Il est souvent plus facile de vendre de mauvaises politiques que les bonnes. +En Pologne en 2005, le principal enjeu était celui de la corruption. +Le PiS a sauté dans le train en marche de la lutte anti-corruption et a renforcé son attrait en lui associant le spectre des forces de l'ombre qui pervertissaient soi-disant la société et la démocratie polonaises. +Sans cela, il est très probable que le résultat des élections ait été tout autre. +Il est toujours risqué de critiquer les campagnes contre la corruption, parce que le sens des mots peut être détourné pour faire croire à l'indifférence. +Il me faut donc d'abord présenter mes références dans ce domaine : en qualité de vice-Premier ministre, j'ai été, en 1999, le premier politicien polonais à demander un audit à la Banque mondiale sur la corruption en Pologne et les moyens de l'éradiquer. +Dans le cours de mes fonctions publiques, j'ai souligné l'importance de l'abrogation des réglementations discrétionnaires -- la principale cause à la fois de l'inefficacité et de la corruption. +Mais nous ne devons pas nous leurrer sur ce qui peut se passer lorsque les démagogues détournent le propos de la lutte anti-corruption. +Il est intéressant de noter que tous les indices disponibles de la corruption réelle montraient un déclin amorcé avant l'élection des frères Kaczyński. +Par exemple, l'indice de la fréquence des pots-de-vin versés, calculé par la Banque mondiale et la BERD, était de 2,7 en 1999 et de 2,03 en 2005 (la valeur de 1 étant le minimum). +La « taxe de corruption » (le pourcentage des pots-de-vin dans les ventes) est passée de 1,22 pour cent en 2002 à 0,7 pour cent en 2005. +En Pologne, l'écart entre les taux de corruption perçus et les taux réels est aujourd'hui très important. +La corruption est perçue comme étant pire qu'en Slovaquie, qu'en République tchèque, qu'en Hongrie et qu'en Grèce, alors qu'en réalité, elle est moindre -- ou égale. +Par exemple, le pourcentage de personnes ayant admis avoir versé des pots-de-vin en 2006 était de 5 pour cent en Pologne et de 17 pour cent en République tchèque et en Grèce. +En 2005, cet indice était de 2,03 en Pologne, 2,22 en Slovaquie, 2,09 en République tchèque, et 2,37 en Grèce. +En 2005, la taxe de corruption était de 0,7 pour cent en Pologne, de 0,93 pour cent en Slovaquie et de 0,63 pour cent en Hongrie. +Il est évident que les Polonais ne doivent pas pour autant s'accommoder des taux de corruption actuels. +Il faut au contraire que la lutte contre ce fléau ait pour objectif d'en éliminer les causes profondes : l'ampleur des mesures discrétionnaires dans le secteur public et la mise sous tutelle des forces du marché. +Cette voie est la seule à promettre à la fois moins de corruption et plus de croissance économique. +Combattre la corruption en renforçant l'arsenal juridique, tout en laissant intact un secteur public surdimensionné et discrétionnaire, ne conduira qu'à la paralysie des fonctionnaires, au report de décisions importantes et à faire le jeu de démagogues cyniques et de politiciens fanatiques. +On sait que la fusion nucléaire est source d'énergie depuis l'invention de la bombe à hydrogène. +Mais sa maîtrise demeure un défi pour les chercheurs, et n'est donc pas un détail technique facilement surmontable. +Il est extrêmement difficile d'enfermer une étoile dans une boîte, et ce principalement pour trois raisons. +Premièrement, le combustible nécessaire n'est pas l'eau de mer, mais un mélange des deux isotopes lourds de l'hydrogène, le deutérium et le tritium, un élément radioactif produit en petites quantités pour les bombes à hydrogène. +Le développement de réacteurs à fusion exigerait une production industrielle de tritium par des méthodes qui n'ont pas encore été inventées. +Deuxièmement, la réaction deutérium-tritium s'amorce autour de 100 millions de degrés. +Pour atteindre cette température, il faut un champ magnétique pour piéger et accélérer un plasma, sorte de grande flamme de deutérium et de tritium. +Cela se passe en ultravide dans une grande enceinte de confinement. +ITER n'est pas conçu pour produire de l'électricité, mais pour étudier la stabilité de la flamme dans le champ magnétique. +D'autre part, les réactions de fusion produisent des particules alpha qui polluent le plasma, il faut insérer un « divertor » dans la flamme à 100 millions de degrés pour les extraire. +Troisièmement, la fusion s'accompagne d'une émission de neutrons qui produisent des bulles d'hélium à l'intérieur des matériaux de structure. +Les partisans d'ITER soutiennent que si les parois sont poreuses, les bulles peuvent s'échapper. +Or un matériau ne peut être à la fois étanche et poreux, et ITER n'est pas conçu pour étudier cette contradiction. +A l'avenir, une « couverture » devrait être placée autour du plasma, avec deux objectifs : protéger les parois et produire du tritium à partir de réactions nucléaires dans un fluide circulant contenant du lithium. +Pour fonctionner, il faudrait que la couverture soit non seulement hermétique et poreuse, mais aussi suffisamment perméable aux neutrons pour leur permettre d'atteindre les atomes de lithium. +Le problème des matériaux est à lui seul tout un domaine de recherche. +Pour l'étudier, on a prévu de construire l' International Fusion Materials Irradiation Facility (IFMIF) au Japon. +Certains scientifiques soulignent que l'irradiation de neutrons dans l'IFMIF ne sera pas la même que dans les réacteurs de fusion, mais l'IFMIF coûtera dix fois moins qu'ITER, à un milliard d'euros. +Alors pourquoi ne pas attendre les résultats de l'IFMIF avant de construire ITER ? +C'est une question de budget. +Si ITER était vraiment la solution de la crise énergétique qui menace la planète, 10 milliards d'euros ne représenteraient qu'un investissement négligeable : moins que les bénéfices nets du groupe pétrolier TOTAL (13 milliards d'euros en 2006) et l'équivalent de dix jours de guerre en Irak. +Mais si la fusion fonctionne un jour dans des centrales, ce ne sera pas avant plusieurs décennies. +Même si ITER est un succès et si l'on parvient à résoudre les problèmes de la production de tritium et des matériaux, il faudra tout tester grandeur nature avant de pouvoir construire un premier prototype de réacteur industriel. +Or il est urgent de réduire les émissions de CO2 de manière drastique, et il y a peu de chances que la fusion produise de l'énergie commercialisable avant le XXIIe siècle. +En réalité, ITER est un outil de recherche fondamentale, et son coût annuel de 500 millions d'euros est donc à comparer avec des initiatives scientifiques similaires, comme l'Organisation européenne pour la recherche nucléaire (CERN), qui coûte chaque année un milliard de francs suisses. +A mon avis, il est plus important d'étudier la structure fondamentale des particules que la stabilité d'un plasma. +En France, la contribution à ITER dépasse l'ensemble du financement disponible pour les projets de recherche de tous nos laboratoires de physique. +Le danger est donc qu'ITER absorbe le financement dont auraient pu bénéficier d'autres projets essentiels. +On a déjà le mauvais exemple de la station spatiale internationale, un gaspillage de 100 milliards de dollars qui n'a produit aucun résultat scientifique. +ITER ne résoudra pas notre problème énergétique. +Il présente un certain intérêt scientifique pour la physique des plasmas, mais les Etats participants devraient affirmer que son financement ne se fera pas au détriment d'autres domaines de recherche. +Parallèlement, la communauté internationale devrait soutenir la recherche sur les économies d'énergie et le stockage, et accélérer le développement de réacteurs nucléaires de quatrième génération, capables d'utiliser la fission de manière propre et durable. +Une Europe unie dans des valeurs communes +Parallèlement au débat sur la Constitution de l'Union européenne, un autre débat s'est ouvert sur les valeurs européennes. +Il est important non seulement pour donner un sens à la Constitution, mais aussi parce qu'il est appelé à déterminer la vitalité et l'énergie de l'EU elle-même. +L'Union européenne, fruit de plusieurs grandes traditions religieuses et philosophiques, est une communauté de valeurs. +Nous avons été forgés par les idées des Grecs et des Romains, du christianisme, du judaïsme, de l'humanisme et des Lumières. +Le dialogue avec les cultures arabes et musulmanes a également contribué à la formation de notre identité. +Nos valeurs sont une toile tissée pendant des centaines d'années. +L'Europe est le continent de Michel-Ange et de Montesquieu, mais aussi de la guillotine et des chambres à gaz. +De fait, l'expérience amère de la deuxième guerre mondiale a enseigné aux Européens l'importance fondamentale de valeurs communes. +Sur un continent appauvri et ravagé par la guerre, les Européens aspiraient à la paix, à la liberté, à la stabilité et à une nouvelle prospérité. +Les architectes de l'intégration européenne - Monnet, Schuman, Adenauer, De Gasperi et d'autres - avaient compris que ces idéaux ne pourraient être concrétisés qu'en associant les intérêts pratiques des pays européens. +Ils ont bâti leur fragile édifice de paix sur des fondations de charbon et d'acier. +Les fondateurs ont passé le flambeau à la génération de Jacques Delors, Helmut Kohl, François Mitterrand, Václav Havel ou encore Valéry Giscard d'Estaing, qui ont élargi et approfondi la coopération européenne, et permis à l'Europe d'avancer à grands pas vers ses idéaux d'après-guerre : la paix, la stabilité et la prospérité. + +Nous sommes aujourd'hui au seuil d'une nouvelle étape de la coopération européenne. +A la fin du mois d'octobre, le traité constitutionnel de l'Union européenne sera signé. +Une nouvelle génération de politiciens est prête à reprendre le flambeau. +Mais la lumière de ce flambeau est-elle toujours aussi vive ? +Au début des années 50, Jean Monnet affirmait : " Il ne s'agit pas de créer une coalition d'Etats, mais d'unir des individus. " +Apparemment pas. +Alors que l'Union avance à toute allure, elle semble avoir perdu ses citoyens en cours de route. +Beaucoup d'Européens se désintéressent du projet dans son ensemble. +Ils ont du mal à reconnaître les points communs. +Ils n'ont pas le sentiment de faire partie du tout. +Même dans les nouveaux Etats membres, l'enthousiasme pour la famille des démocraties européennes est réservé. +Nous sommes parvenus à unir l'Europe sans unir les Européens. +Les générations d'aujourd'hui, qui n'ont pas connu la guerre, tiennent les grandes réalisations de l'Europe - la liberté, la paix et la prospérité - pour acquises. +L'idée européenne comme un héritage et une mission ne veut plus dire grand chose. +Pourtant, sans idéaux, les fondations de l'Europe vont s'affaiblir. +La prépondérance des intérêts particuliers accroît cette menace. +Ma génération a grandi avec l'image de l'Europe comme espace de coopération économique . +Les motivations politiques de l'intégration ont été éclipsées par le projet économique, et l'Europe est donc perçue comme un marché. +Une Europe de transactions et d'argent - non plus d'humanité et de moralité - a dominé l'entreprise. +Mais sans fondement moral, il ne peut y avoir d'économie de marché. +Aujourd'hui, nous payons chèrement de ne pas nous être suffisamment concentrés sur nos valeurs et notre mission communes . Tant que les Européens ne sauront pas exactement ce que signifie l'Europe, ce qui nous inspire et ce qui nous motive, l'Union ne sera pas en mesure de prendre des actions conjointes sur la scène internationale. +La Constitution de l'UE rendra l'Europe plus démocratique et plus transparente. +Elle garantit que les décisions seront prises au plus près des citoyens, et reconnaît l'importance des valeurs sur lesquelles l'Union repose : le respect des droits fondamentaux et de la dignité humaine, la liberté, la démocratie, l'égalité et l'Etat de droit. +Ces valeurs assurent la cohésion des gouvernements, conscients qu'il n'est plus temps de s'accrocher à des intérêts individuels lorsque des préoccupations communes exigent une réponse commune. +A quoi bon supprimer les frontières physiques si les citoyens demeurent divisés ? +Comment les Européens peuvent-ils se réjouir de la disparition du rideau de fer, si des individus et des groupes dans toute l'Union se barricadent derrière leurs propres murs ? +La peur, l'insécurité et le nationalisme refont leur apparition. +Il est important pour les Européens d'y réfléchir, au moment où ils se préparent à d'autres phases d'élargissement et envisagent d'entamer des négociations d'adhésion avec la Turquie. +Le préambule de la Constitution énonce que l'Europe est " unie dans la diversité. " +C'est peut-être la définition la plus concise qu'on puisse imaginer de ce qui caractérise l'Europe. +Mais ces mots soulèvent la question de savoir ce qui fait cette unité. + +La réponse se trouve dans les valeurs sur lesquelles est fondée l'Union, et que l'on peut résumer en trois concepts : liberté, solidarité et respect mutuel. Ensemble , ces concepts permettent à l'Europe d'ouvrir ses portes à des peuples très divers, tout en continuant de s'exprimer en tant que communauté de peuples prêts à assumer des responsabilités mutuelles. +Pour concrétiser cette communauté, rien ne sert de croire que la culture européenne est meilleure que les autres. +Il faut au contraire entamer un dialogue et une profonde réflexion sur les valeurs que les Européens partagent. +Ces valeurs doivent nous mener à ce que ni les marchés ni les institutions ne peuvent obtenir : l'adhésion des citoyens européens à l'Union européenne. +Ce n'est qu'en adhérant à leurs valeurs communes que les Européens pourront éviter que l'Union ne devienne une machine sans âme. +Ensemble, ils doivent trouver leurs points communs, et y puiser un nouvel enthousiasme, un nouvel élan, qui fait cruellement défaut pour aborder les grandes questions d'aujourd'hui, auxquelles aucun pays ne peut répondre seul. +Après plus de cinquante ans, l'Europe comme communauté de valeurs est toujours aussi nécessaire. +Nouvelle Aube européenne +Aujourd'hui à Rome, les chefs d'Etat et de gouvernement des 25 Etats membres de l'Union européenne vont signer le traité pour une Constitution de l'Europe. +Nous avons fait un long chemin depuis que les six membres fondateurs formèrent la Communauté économique européenne en mars 1957, depuis Rome également. +Une fois le traité signé, il sera présenté devant les parlements nationaux pour être ratifié. +Il est donc d'importance cruciale de comprendre pourquoi le traité mérite d'être ratifié. +Brièvement, il place plus que jamais les intérêts des citoyens européens au cœur des activités de l'Union européenne. +Et il le fait de quatre manières différentes. +Tout d'abord, le traité pour la Constitution garantit que les institutions de l'Union respecteront les droits fondamentaux de toute personne au sein de l'UE. +Le " catalogue des droits fondamentaux " inclus dans la Constitution est long, centré sur le respect de la dignité humaine, la liberté et l'égalité ainsi que les principes démocratiques et la primauté du droit. +En les consacrant dans la Constitution, ces droits fondamentaux et ces principes acquièrent force de loi et les citoyens auront plus de recours pour faire appel devant la Cour de justice. +De ce point de vue, l'UE est à l'avant-garde mondiale en matière de protection des droits fondamentaux. +Ensuite, le traité démocratise l'UE et rapproche le gouvernement des citoyens européens. +L'Union n'a pas à interférer dans les affaires qui peuvent être réglées de manière satisfaisante au niveau local, régional ou national. +Les objectifs de l'UE sont précisément ceux que les pays ne peuvent réaliser par eux-mêmes, tels qu'une économie plus forte et une plus grande sécurité. +Le traité pour la Constitution comprend des garanties pour assurer que l'UE adhère à ces principes de manière stricte. +Les parlements nationaux pourront intervenir et stopper toutes les propositions de Bruxelles qui sembleront interférer inutilement. +Si un tiers des parlements nationaux le décident, alors la Commission européenne doit reconsidérer la proposition. +De plus, le traité de la Constitution donne aux citoyens le droit de demander à la Commission européenne d'agir sur une question précise. +Une initiative citoyenne de cette ampleur nécessite un million de signatures venues de pays différents. +Au même moment, le Parlement européen aura de plus grands pouvoirs. +Il aura autorité pour prendre des décisions conjointes dans plus de domaines, dont le budget. +Ainsi, les représentants élus des citoyens européens seront mieux à même d'examiner en profondeur le travail de la Commission. +Puis, le traité propose une UE plus ouverte et plus transparente. +Les citoyens veulent que les pouvoirs soient clairement définis et que les décisions soient prises de manière transparente et compréhensible. +Nombreux sont ceux qui désespèrent de trouver leur chemin dans le labyrinthe des traités européens et de leurs nombreux amendements. +Hors de Bruxelles, on trouve très peu de gens qui peuvent expliquer la structure de " pilier " et faire la distinction entre l'Union et la Communauté. +La Constitution envoie ces difficultés dans les oubliettes de l'histoire. +Elle donne aussi aux peuples un meilleur accès aux informations officielles en étendant leurs droits d'accès aux documents de toutes les institutions, les organes et les corps. +Finalement, le traité rend l'Europe plus efficace. +Ceci est essentiel si les questions qui affectent le quotidien de nos vies doivent être traitées avec succès. +Deux thèmes sont considérés comme cruciaux : une économie européenne plus forte (plus d'emplois et de croissance) et une plus grande sécurité (réduction de la criminalité transfrontalière). +Les pays européens s'appuient énormément les uns sur les autres pour traiter ces questions. +Et les gens comptent sur l'Europe pour agir. +Cependant, du fait que les décisions de l'UE doivent souvent être prises unanimement, cela est parfois très difficile. +En outre, nous manquons souvent des moyens pour travailler ensemble efficacement. +Le traité introduit des améliorations importantes dans ce domaine, nous permettant de coopérer plus efficacement pour atteindre nos objectifs. +En résumé, le traité pour la Constitution inscrit fermement les droits fondamentaux dans la législation, et démocratise également l'UE, la rendant plus transparente et plus efficace. +Cela en fait un bon traité pour tous : les peuples qui attendent une plus grande coopération et des résultats concrets de la part de l'Union, mais aussi pour ceux qui s'inquiètent des interférences excessives de l'Europe dans des questions qui sont mieux débattues au sein des Etats eux-mêmes. +L'an prochain, nous célébrerons 60 années de paix à travers une grande partie de l'Europe. +Jamais dans notre histoire avons-nous profité d'une si longue période de paix, une période qui a vu une forte croissance de la prospérité. +La démocratie s'est enracinée dans presque tous les coins d'Europe et les Européens bénéficient maintenant d'une plus grande liberté pour vivre, travailler et étudier où ils le veulent comme ils le veulent. +Ces réussites sont largement dues à la coopération européenne. +Le traité pour la Constitution est une réflexion de notre souhait de continuer dans la même direction et de continuer à travailler ensemble. +Nous voulons réaffirmer notre engagement envers un quotidien sans guerre ni injustice et envers la liberté qui nous est si chère. +Le traité pour la Constitution de l'Europe apporte les fondations solides de notre avenir commun. +La paix, la sécurité et la prospérité sont aussi vulnérables qu'elles sont importantes. +Ce traité les renforce. +Et cela nous renforce. +La cérémonie de signature sera donc un message d'espoir. +C'est un nouveau commencement. +De l'utilisation du Tribunal de La Haye +Le Tribunal International de La Haye fut établi pour servir d'épée de Damoclès aux violateurs des Droits de l'homme dans les Balkans. +À l'intérieur des Balkans, cependant, c'est devenu un outil politique que les nationalistes aussi bien que leurs opposants exploitent sans fin en un stratagème visant à diviser pour (espérer) mieux régner. +Et la Croatie représente un cas d'école exemplaire ici. +Des obstacles et des déchirures contrarient maintenant les réformes démocratiques naissantes de la Croatie. +Ce tumulte tient au fait que le Premier ministre Ivica Racan refuse de s'attaquer aux centres de pouvoir laissés en place par le régime de l'ancien président Franjo Tudjman, dont le parti à orientation nationaliste, l'Union pour la Démocratie Croate (HDZ), fut exclu du pouvoir en janvier 2001 suite au décès de Tudjman en décembre 1999. +Tudjman avait élaboré un régime autoritaire où la frontière entre le HDZ et les administrations gouvernementales était brouillée, en particulier là où l'armée et la police étaient concernées. +Cet héritage confus touche au coeur des problèmes actuels de la Croatie et de ses relations avec le Tribunal de La Haye. +En janvier 2001, le nouveau Premier ministre d'alors, Ivica Racan, dut faire face à des choix difficiles : purger rapidement les institutions gouvernementales des partisans de Tudjman ou céder aux stratagèmes obstructionnistes des partisans du HDZ. +Fidèle à son indécision instinctive, le Premier ministre tarda. +Il préféra concentrer son effort sur les réformes constitutionnelles, généralement perçues comme une tentative visant à priver le nouveau président, Stjepan Mesic (lui-même un opposant de longue date de Tudjman), des pouvoirs exécutifs puissants que Tudjman introduisit à son propre usage dans la constitution. +Pendant ce temps, le nouveau gouvernement ne put enquêter sur les nombreux crimes de guerre, les erreurs judiciaires, et la corruption de l'ère Tudjman. +Ce manquement offrit aux partisans du HDZ l'occasion de mettre à l'épreuve la détermination du gouvernement Racan. +Un de leurs ruses préférées fut de créer d'importants obstacles aux moindres tentatives de mise au pas des criminels de guerre. +En septembre 2000, suite à l'assassinat d'un témoin pour le Tribunal de La Haye et à l'arrestation d'un chef croate accusé d'avoir massacré des Serbes en 1991, douze généraux de l'armée publièrent une lettre appelant à défendre les anciens combattants croates et à cesser de "présenter de manière négative et historiquement erronée" la participation croate aux guerres des Balkans. +En un rare étalage de détermination gouvernementale, le président Mesic suspendit et mit à la retraite d'office ces douze officiers. +Plusieurs d'entre eux rejoignirent alors un nouveau parti qu'ils dirigent: Pour la Prospérité et l'Intégrité croate (HIP), un parti organisé par le fils aîné de Tudjman, l'ancien chef des services secrets croates. +Le bras de fer avec les partisans de Trudjman continua au printemps de cette année, avec l'arrestation de Mirko Norac, un des douze généraux, accusé du massacre de civiles serbes en 1991. +Plusieurs organisations d'anciens combattants organisèrent des rassemblements de masse contre le gouvernement "traître" de Mesic et Racan. +Ces pressions n'auraient pas eu d'effets aussi dévastateurs si elles n'avaient pas reçu le soutien d'une partie de la coalition au pouvoir, notamment le soutien de Drazen Budisa et de son Parti Social Libéral croate (HSLS), et de certains évêques catholiques influents. +Affaibli, le gouvernement s'est ainsi montré psychologiquement prêt à faire des concessions plus importantes. +En juillet, le Tribunal de La Haye pour l'ex-Yougoslavie mit en accusation deux généraux croates, Rahim Ademi et Ante Gotovina, pour crimes de guerre. +Au lieu de les livrer au Tribunal, Racan utilisa cette occasion pour entamer un bras de fer, en réclamant au parlement un vote de confiance pour ce qui fut considéré comme une dévalorisation des mandats du Tribunal de La Haye. +Cela provoqua la démission de Budisa de la direction du Parti Social Libéral croate, ce qui entraîna la quasi scission de ce groupe clé de la coalition, le seul parti de la coalition au pouvoir qui voulait résister au Tribunal de La Haye. +En dépit de cela, Racan a gagné son vote de confiance et s'est assuré un minimum de stabilité dans son gouvernement. +Et pourtant, les divers factions qui forment l'opposition Tudjmanienne y ont gagné l'occasion de tirer Budisa à eux, créant ainsi un nouveau centre de gravité politique en vue de la prochaine crise. +Le Tribunal de La Haye est souvent accusé d'accabler les fragiles gouvernements de réforme de la Croatie et de la Serbie avec des exigences déraisonnables qui font le jeu des politiciens nationalistes. +Ceci n'est vrai que dans la mesure où le Tribunal est insensible à l'équilibre complexe attendu de la part des officiels des pays de l'ex-Yougoslavie. +Par exemple, la libération, avant son procès, de Biljana Plavsic, une des leaders serbe bosniaque des plus coupables, en échange de son témoignage évidemment écrasant aurait une signification plus importante si le Tribunal s'était montré aussi accomodant avec des accusés moins coupables et n'appartenant pas au groupe des Serbes. +La réticence à poursuivre les criminels de guerre est un atout que les gouvernements des Balkans utilisent pour pacifier leur public nationaliste et, de fait, éviter le problème épineux d'une réforme profonde. +Racan n'aurait pas eu à traiter avec le Tribunal de La Haye s'il avait eu le courage de se lancer dans le ménage de son propre pays, et dans les enquêtes sur les petits copains de Tudjmans et les criminels de guerre que le président décédé protégeait. +Maintenant, le Premier ministre Racan tire profit de ses attermoiements vis-à-vis des acolytes de Tudjman, dans l'espoir qu'ils seront aussi généreux avec lui s'ils devaient revenir au pouvoir. +Parce qu'en Croatie, chaque nouveau gouvernement délivre une absolution totale à ses prédécesseurs. +Une petite élite est donc ainsi protégée de sérieuses remises en cause et, finalement, dégagée de toute responsabilité, même dans le cas des crimes les plus abominables. +Les " Three Mis-Represents " +Deux années se sont écoulées depuis que le Parti communiste de Chine (PCC) a dévoilé son nouveau credo idéologique, appelé " Three Represents ". +Quelle chance que la doctrine la plus sacrée, la plus englobante et la plus influente de Chine élaborée autour du triumvirat des " intérêts de la majorité populaire ", de la " culture avancée " et des " forces productives avancées " ait trouvé un parti politique pour la représenter ! +Une chance, mais pour le PCC, et non pour la Chine et ses habitants. +La doctrine " Three Represents " se décline en plusieurs versions officielles, chacune d'elle comprenant les mots " toujours ", " Chine " et " représenter ". +Leur signification est claire. +De l'autre côté, la " majorité populaire ", la " culture avancée " et les " forces productives avancées " ainsi que d'autres expressions qui dominent la doctrine restent vagues, sans doute intentionnellement. +Le bon sens suggère que la " majorité populaire ", que le PCC est supposé " représenter ", inclut les ouvriers. +Mais le PCC les a abandonnés depuis longtemps. +Combien ont perdu leur travail le mois dernier ? +Combien ont été obligés de partir en préretraite ? +Combien y a-t-il eu d'accidents dans les mines ? +Combien de protestations ? +Qui a emprisonné leurs organisateurs ? +Le " représentant des Three Represents " refuse de s'exprimer. +Les ouvriers qui protestent et font grève " font une émeute ". +Celui qui signale ces événements est " anti-révolutionnaire ". +La même histoire se vérifie dans les relations du Parti avec les paysans, qui se sont engagés comme soldats et suppléants dans les armées de Mao Zedong pour mener des guerres qui duraient des décennies. +Les paysans ont suivi Mao car le PCC leur avait promis des terres. +Mais Mao a décidé de reprendre les terres aux paysans avant même qu'ils n'en bénéficient. " +L'éducation des paysans constitue un grave problème ", a-t-il dit. +Il leur a donc enseigné que toutes les terres appartenaient à l'état. +Les " représentants " des paysans sont les nouveaux propriétaires. +Dans une Chine sans démocratie, les opinions des étudiants constituent un baromètre politique essentiel. +A l'inverse des ouvriers ou des paysans, les étudiants viennent de tous les niveaux de la société et tout ce qui les mobilise représente le centre d'intérêt de la société à ce moment précis. +Du 15 avril au 4 juin 1989, les étudiants ont manifesté dans le square de Tiananmen et leurs partisans ont réalisé le sondage d'opinion le plus triste de toute l'histoire chinoise, exprimant une volonté commune de mettre fin au totalitarisme, de construire la démocratie et d'éliminer la corruption. +Ceux qui défendent la sanglante répression du Parti contre ces étudiants n'ont aucun droit de se proclamer les représentants de la majorité populaire. +Leur affirmation selon laquelle ils " représentent toujours la direction moderne d'une culture avancée " constitue une autre déclaration suffisante et vide. +La culture chinoise remonte à trois mille ans et couvrira peut-être des milliers d'années dans le futur. +Doit-elle être " toujours représentée " par un parti politique isolé ? +Je ne sais pas ce qu'est " la direction moderne d'une culture avancée ", mais la culture avancée n'a joué aucun rôle dans les campagnes inspirées par le PCC, à savoir " Décimer les mauvaises herbes vénéneuses ", le " Mouvement contre la droite " ou " Eliminer les démons et l'hérésie ". +Un tel obscurantisme crée seulement une culture d'une uniformité débilitante. +Tel un brin d'herbe sous une pierre, la culture sait comment et dans quelle direction chercher la lumière. +Elle n'a nul besoin d'être " représentée ". +Des " Three Represents ", la signification la plus claire figure dans le voeu du PCC de " toujours représenter les demandes des forces productives avancées ". +Cela implique de représenter les intérêts des da-kuan, ceux qui sont subitement devenus riches, généralement grâce à des relations haut placées au gouvernement. +L'expression ne revêt aucune autre signification plus poussée. +L'union du pouvoir et de l'argent dans la Chine d'aujourd'hui prend son origine dans l'augmentation excessive et constante de la bureaucratie. +Avant le Grand bond en avant, les communes pouvaient tout juste accueillir quelques cadres à plein temps. +Aujourd'hui, chaque commune en accueille des centaines. +Leur salaire de base est payé par le gouvernement central, mais les primes et autres avantages dépendent des contributions des " forces productives avancées " au niveau du comté et de la commune. +Tout ce que les riches demandent au PCC (baux fonciers, prêts à intérêts modiques, violation du droit du travail, normes environnementales, contrats et propriété intellectuelle) peut être considéré comme " les demandes des forces productives avancées ". +Même dans des situations moins corrompues, représenter " les forces productives les plus avancées " demeure une idée imparfaite. +Imaginez que le Comité olympique représente uniquement les intérêts des médaillés d'or ou que le Ministère de l'éducation représente uniquement les programmes post-doctoraux et ignore les écoles élémentaires. +Tandis que le secteur de haute technologie qui figure au sommet de la pyramide économique revêt une grande importance, les secteurs traditionnels au bas de la pyramide en forment toujours la base. +Qu'adviendrait-il des centaines de millions de paysans et de chômeurs dans les secteurs d'activité en déclin ? +Qui s'attaquerait à l'inégalité et aux intérêts sociaux divergents ? +Une société de plus en plus pluraliste est poussée dans une structure de type Procruste qui n'autorise qu'une seule voix, qu'un seul besoin et qu'un seul type d'intérêt : la voix, les besoins et les intérêts du parti. +Mais la théorie des " Three Represents " demeure néanmoins nécessaire car une nouvelle situation a émergé. +Lorsque le PCC a accédé au pouvoir en 1948, il a pu affirmer qu'il incarnait le socialisme, le marxisme et la mission historique du prolétariat. +Cinquante ans après, les avantages du socialisme, la vérité du marxisme et le caractère prolétarien du Parti ont tous été défiés de manière irréfutable. +Ainsi, la doctrine des Three Represents constitue un effort pour sauver le règne d'un seul parti. +Vous pouvez douter du socialisme, mais non des " forces productives avancées ". +Vous pouvez ne pas croire au marxisme, mais vous devez croire en une " culture avancée ". +Le PCC ne représente plus les ouvriers et les paysans, mais il peut représenter la " majorité populaire ", y compris les capitalistes " rouges ". +En effet, seule leur acceptation du règne d'un seul parti détermine si les membres du PCC qui sont devenus " révolutionnairement " riches restent " rouges ". +Accueillir des " capitalistes rouges " n'implique donc pas la démocratisation du pays. +Ces individus chercheront très probablement à renforcer leurs privilèges plutôt qu'à promouvoir le pluralisme et le règne de la loi. +Le totalitarisme, et non les réformes politiques, constitue leur gagne-pain. +C'est cet avant tout cet aspect que défend la théorie des Three Represents. +Souvenirs de Zhao Ziyang +Les conditions dans lesquelles Zhao Ziyang vivait au moment de sa mort, en isolation complète de la société chinoise du fait d'une incarcération à domicile, illégale et imposée depuis 16 ans, ne font pas honneur à la justice chinoise et au Parti communiste chinois (PCC). +Les persécutions à l'encontre de Zhao sont celles réservées à un leader qui s'était voué corps et âme pendant plus de dix ans à des efforts novateurs qui ont posé les fondements de la réforme de l'économie chinoise. +A la fin des années 1970, les paysans chinois avaient perdu leurs droits à leur terre depuis longtemps suite à la collectivisation et l'établissement des communes populaires. +C'est un droit qu'ils n'ont jamais reconquis. +Zhao, cependant, fut le premier à défendre le retour à l'autonomie paysanne et initia ainsi le premier test pilote d'abolition des communes populaires. +Les industries chinoises se sont transformées en filiales des organismes gouvernementaux via la nationalisation et la planification centrale. +Zhao fut le premier à proposer « une autonomie étendue des entreprises chinoises » et « la restauration d'une relation saine entre le gouvernement et l'industrie ». +L'autonomie étendue des entreprises et de la paysannerie représente des étapes essentielles dont les succès ont éventuellement mené à une réforme économique totale. +Ce sont là quelques-unes des petites victoires que Zhao remporta pour aider le peuple chinois à se libérer de la stagnation suffocante du socialisme maoïste. +En qualité de numéro 1 chinois, Zhao mit en place dix années de réforme économique qui apportèrent un progrès régulier dans lequel le peuple, particulièrement les paysans, ont bénéficié d'améliorations tangibles. +Et Zhao fut également le seul leader du PCC à proposer une réforme politique pour régler la question du système chinois de parti unique. +Le monopole inattaquable du PCC sur le pouvoir politique assurait systématiquement que toute erreur faite, telle que l'horrible décennie de la Révolution culturelle, se transforme en crise nationale prolongée. +Pour une stabilité réelle et à long terme, Zhao proposa des réformes qui à terme ont visé à légaliser et systématiser la démocratie. +Il avait souhaité établir un type de politique démocratique à même de soutenir et de favoriser une économie de marché saine. +Bien que les objectifs pratiques et à court terme des réformes politiques de Zhao étaient limités par les circonstances dans lesquels ils furent proposés, les mesures visaient toutes à limiter le pouvoir du Parti communiste et représentaient un pas définitif vers un retour pacifique au pouvoir populaire en Chine. +Les propositions de Zhao, tranchant d'avec le totalitarisme de Mao, furent approuvées par le 13ème congrès du Parti, la plus haute autorité officielle au sein du PCC. +Durant les vingt mois qu'il passa servir en qualité de Secrétaire Général du PCC, Zhao créa une culture au sein de laquelle le Bureau politique choisit de ne pas interférer avec les tribunaux, et il stoppa toute tentative de contrôle sur la littérature et les arts. +Zhao abolit la politique selon laquelle les entreprises étaient gérées par des organisations liées au Parti et le système qui faisait des fa ren (les « représentants légaux ») le cœur des entreprises. +Malheureusement, les réformes politiques de Zhao prirent fin quand il fut déchu du pouvoir. +Le terrible résultat qui s'ensuivit fut le déni sans distinction de tous les droits civiques et de tous principes démocratiques et la montée de ce que les leaders d'aujourd'hui appellent « le socialisme à caractéristiques chinoises », euphémisme amer pour décrire un pouvoir partisan et gouvernemental débridé lié aux intérêts commerciaux. +Le sort de Zhao est également un rappel glacial d'autres injustices qui reposent sur la conscience de ceux qui sont aujourd'hui au pouvoir. +La seule raison qui a permis de continuer à ainsi mal traiter Zhao fut son opposition à la répression violente des manifestations de la place Tienanmen en 1989. +Ces événements relevaient de son pouvoir de décision en qualité de Secrétaire Général, mais rien ne se produisit comme il aurait fallu à ce moment-là. Il faut se rappeler que l'ancien Secrétaire général, Hu Yaobang, forcé par Deng Xiaoping de se retirer deux ans auparavant à cause de ses prises de positions libérales, mourut en avril 1989, déclenchant des manifestations estudiantines spontanées et pacifiques à Beijing, qui se propagèrent dans tout le pays. +Un demi million d'étudiants rien qu'à Beijing se sont impliqués dans ce mouvement. +Il dura 50 jours et fut soutenu avec ardeur par les habitants de Beijing et d'autres un peu partout dans le pays, issus de tous horizons socioprofessionnels. +Zhao fit remarquer au Bureau politique que les sentiments exprimés par ces étudiants et résidents dans leur commémoration de Hu, dans leurs manifestations contre la corruption et leur désir de démocratie étaient en fait identiques à ceux qu'eux-mêmes ressentaient. +Il pensait qu'il devait être possible de résoudre la crise estudiantine tout en respectant les principes démocratiques et la primauté de la règle de droit. +Sous la direction de Zhao, le Bureau politique et son Comité permanent appelèrent au dialogue avec les étudiants. +Cette direction pleine d'espoir changea complètement, cependant, quand Deng Xiaoping montra son désir de répression violente. +Finalement, tout cela se réduisit à un combat entre cinq membres du Bureau politique et du Comité central : Li Peng et Yao Yiling, qui souhaitaient déployer l'armée. +Zhao s'y opposa. +Qiao Shi et Hu Qili qui prirent position avec Zhao dans un premier temps avant de lui retirer leur soutien et de demander alors à Deng Xiaoping de prendre une décision finale. +Ces profondes divisions mises à jour, Deng choisit de ne pas tenir compte des institutions en place et d'ignorer le Bureau politique et le Comité central du Parti, ainsi que le Congrès national du peuple et son Comité central. +Sans plus de discussions, Deng mobilisa 500 000 hommes pour entrer dans Beijing et monter à l'assaut des étudiants et civils désarmés. +Le massacre de la Place Tienanmen en 1989 fut une tragédie en Chine, une nouvelle tragédie pour le vingtième siècle. +Seize ans se sont écoulés mais la souffrance est toujours là, enfouie dans les cœurs et les esprits du peuple. +Au fil des années qui se sont écoulées, les leaders chinois furent responsables non seulement de l'emprisonnement à domicile de Zhao mais également des efforts systématiques entrepris pour effacer son nom de l'Histoire. +Pourtant, leurs tentatives pour masquer la vérité sur les événements passés ne révèlent que leur faiblesse et leur impudence. +Parce qu'une chose ne changera jamais : Zhao Ziyang nous accompagne, dans la lutte ininterrompue du peuple chinois pour ses droits et la démocratie. +Nouveau départ pour la non-prolifération +Obama s'est engagé à revitaliser un régime vacillant de non-prolifération, dont le Traité de non‑prolifération (TNP) des armes nucléaires de 1970 est la pierre angulaire. +Il n'est pas difficile d'identifier les problèmes majeurs. +Premièrement, les cinq grands Etats nucléaires n'ont pas pris au sérieux l'obligation de mesures de désarmement souscrite avec le TNP. +Au lieu de cela, ils mettent en avant le fait que les armes nucléaires sont essentielles à leur sécurité et poursuivent la modernisation de leurs arsenaux nucléaires -- ce qui les prive naturellement de l'autorité morale de convaincre les autres pays de ne pas acquérir d'armes nucléaires, toujours perçues comme source de pouvoir et d'influence, et comme police d'assurance contre d'éventuelles attaques. +Deuxièmement, comme on l'a vu avec la Corée du Nord, rien n'empêche les pays signataires de simplement déclarer que des « événements extraordinaires » ont mis en péril leurs intérêts suprêmes pour se retirer. +Troisièmement, l'Agence internationale de l'énergie atomique, censée contrôler le système de non-prolifération, dispose de si peu de fonds que c'en est scandaleux. +Pour savoir si tel ou tel pays poursuit ou non un programme clandestin d'armes nucléaires, les inspecteurs de l'AIEA ont la plupart du temps les mains liées soit parce qu'ils n'ont pas l'autorité légale nécessaire pour accéder aux lieux qu'ils jugent bon d'examiner, soit parce que les laboratoires d'analyse de l'Agence sont obsolètes, soit encore parce que l'Agence ne dispose pas d'un accès approprié à l'imagerie satellite. +Quatrièmement, les contrôles des exportations n'ont pas réussi à empêcher la diffusion d'une technologie nucléaire sensible, notamment à cause des activités très élaborées de réseaux clandestins comme celui dirigé par A.Q. Khan, scientifique nucléaire pakistanais. +Neuf pays disposent déjà d'armes nucléaires et il serait naïf de supposer que d'autres, en particulier dans les régions de conflit, ne tenteront pas de s'en procurer. +Par ailleurs, certains pays dotés de programmes d'énergie nucléaire pourraient, s'ils le souhaitaient, fabriquer des armes nucléaires en quelques mois si leur perception de la sécurité changeait, vu qu'ils maîtrisent déjà les techniques de base d'enrichissement de l'uranium et de retraitement du plutonium. +Ce choix pourrait être le talon d'Achille de la non-prolifération. +Cinquièmement, la communauté internationale, menée par le Conseil de sécurité des Nations Unies, a souvent été paralysée par des difficultés de sécurité internationale, et inefficace pour réagir aux cas suspects de prolifération nucléaire. +Certes, ces difficultés ne pourront être surmontées du jour au lendemain, il est tout de même possible de faire beaucoup en relativement peu de temps. +Les Etats-Unis et la Russie ont entamé des négociations sur d'importantes réductions de leurs arsenaux nucléaires, qui représentent 95 % des 27.000 ogives nucléaires de la planète. +Parmi les autres mesures qu'il conviendrait de prendre, citons l'entrée en vigueur du Traité d'interdiction complète des essais nucléaires, la négociation d'un traité vérifiable pour mettre fin à la production de matériel fissile destiné à l'armement ; l'amélioration radicale de la sécurité physique de matériaux nucléaires et radioactifs, essentielle pour empêcher ces derniers de tomber entre les mains de terroristes ; et la consolidation de l'AIEA. +Le mois dernier, j'ai proposé au Conseil des gouverneurs de l'AIEA une mesure clé de renforcement de la non-prolifération : la création d'une banque d'uranium faiblement enrichi de l'AIEA utilisable par les pays qui ont besoin de combustible nucléaire pour leurs réacteurs. +Cet uranium ne peut être utilisé pour construire des armes. +Un mécanisme de ce type sera indispensable dans les décennies à venir vu le nombre croissant de pays à se tourner vers l'énergie nucléaire. +Ma proposition consiste à créer une réserve physique d'uranium faiblement enrichi à disposition de l'AIEA, qu'utiliseront en dernier ressort les pays qui rencontrent des difficultés d'approvisionnement pour des raisons non commerciales. +Les pays concernés seraient rassurés de pouvoir compter sur des réserves d'énergie fiables pour faire tourner leurs centrales, et n'auraient donc pas besoin de développer leur propre capacité d'enrichissement de l'uranium ou de retraitement du plutonium. +Cela contribuerait à éviter que ne se reproduisent des expériences telles que celle de l'Iran après sa révolution de 1979, lorsque les contrats pour le combustible et la technologie prévus dans le cadre de son programme nucléaire n'étaient pas honorés. +Trente ans plus tard, on en ressent encore certaines conséquences. +L'uranium faiblement enrichi sera mis à disposition des pays dans le besoin sur la base de critère non politiques et non discriminatoires, aux prix du marché, conformément à leurs obligations de garanties nucléaires. +Aucun Etat ne serait donc contraint d'abandonner le droit de créer son propre cycle du combustible. +Les fonds nécessaires au lancement d'une banque d'uranium faiblement enrichi sont en place, principalement grâce à une organisation non gouvernementale  -- Nuclear Threat Initiative -- et au financement initial de Warren Buffett. +Cette banque ne serait qu'une première étape, qui devra être suivie d'un accord faisant passer l'ensemble des activités d'enrichissement et de retraitement du contrôle national au contrôle exclusivement multinational. +Cette idée est audacieuse, mais plus que jamais nécessaire. +Il y a soixante ans, nous manquions l'occasion de placer le cycle du combustible nucléaire sous contrôle multinational à cause de la guerre froide. +Aujourd'hui, compte tenu de la diffusion de la technologie nucléaire et du risque croissant de terrorisme nucléaire, nous n'avons pas le droit à l'erreur. +Un coin de l'Europe au désespoir +--  Trois niveaux du parlement moldave sont en ruine, calcinés. +En Moldavie, république de l'ex-URSS devenue le pays le plus pauvre d'Europe, la démocratie a subi le même sort. +Sur les 3,5 millions d'habitants à l'époque de l'indépendance, 15 % ont déjà quitté le pays à la recherche d'une vie meilleure sur d'autres terres ; et plus de 63 % des jeunes déclarent vouloir partir. +Début avril, la victoire controversée aux législatives du parti communiste à la tête du pays a déclenché une manifestation. +Des membres de l'opposition et des rebelles, jeunes sans perspective d'avenir pour la plupart, sont descendus dans la rue. +Une minorité violente a fait irruption dans le palais présidentiel et le parlement a été mis à feu. +Pour toute réponse, les communistes ont imputé la violence aux membres de l'opposition surnommés « fascistes » et à la Roumanie et ses irrédentistes vivant en Moldavie. +La police s'en est pris aux jeunes et en a placé une centaine en détention. +Plusieurs sont, semble-t-il, morts de coups. +Le président Vladimir Voronine a par la suite amnistié les détenus. +Il en reste néanmoins beaucoup en prison et Voronine continue d'accuser l'opposition et la Roumanie d'avoir fomenté un coup d'état. +Des poursuites judiciaires ont été entamées. +Il importe de restaurer la stabilité et un système démocratique équitable en Moldavie, tout d'abord car les habitants méritent d'avoir un gouvernement sur lequel s'appuyer. +Cette stabilité compte aussi beaucoup car le pays est voisin de la Roumanie, un état membre de l'Union européenne. +Ces deux pays partagent une même langue et une même culture. Et, jusqu'à ce que Staline les séparent, ils faisaient du reste partie d'un même état. +Une minorité qui se fait entendre pense que fusionner avec la Roumanie permettrait à la Moldavie d'accéder plus rapidement au statut d'état membre de l'UE, avec ses avantages financiers, et surtout ses passeports permettant de fuir une économie sans espoir pour construire une nouvelle vie ailleurs. +Il se trouve en effet que de nombreux Moldaves possèdent déjà un passeport roumain afin de voyager et travailler dans l'UE. +Un quart de la population (un million de citoyens moldaves) a déjà profité de l'octroi de passeports roumains facilité par certains officiels roumains, y compris le président Traian Basescu. +Mais toute tentative d'attirer ses citoyens à l'extérieur fait bien sûr hésiter le gouvernement moldave. +Toute action états-unienne pour aider à restaurer la stabilité en Moldavie serait bienvenue. +De concert avec l'Union européenne, les Etats-Unis peuvent assurer une investigation sur la violence post-électorale et sur les plaintes portées contre la police. +Les Etats-Unis devraient faire preuve de plus de dynamisme en exigeant que les autorités moldaves respectent l'état de droit, établissent une liste de tous les détenus, leur permette de rencontrer un avocat et les membres de leur famille et garantissent qu'ils ne sont pas molestés. +Les leaders de l'opposition et certains organismes de surveillance démocratiques avancent que, dans le fond, les élections moldaves étaient truquées. +Les médias nationaux, en particulier les chaînes de télévision, auraient accordé un temps d'antenne disproportionné aux communistes durant la campagne électorale. +Ces derniers sont de plus accusés d'avoir manipulé les voix (ajout de noms sur les listes) et d'avoir ressuscité les morts. +Sur le long terme, les Etats-Unis et l'Union européenne devraient soutenir la société civile et ses organisations en pressant le gouvernement moldave : de garantir un temps d'antenne équitable, de cesser le harcèlement policier envers les dirigeants politiques de l'opposition, les travailleurs et les journalistes, de réformer la police et de mettre fin aux abus du parti au pouvoir sur les institutions nationales, et de permettre à tous les partis politiques d'avoir une chance d'inspecter les listes électorales et de surveiller les lieux de vote. +Ils devraient insister pour établir un dialogue entre l'opposition et le parti au pouvoir. +En plaçant leur aide financière sous conditions, les Etats-Unis donneront du poids à leur requête. +L'UE a davantage de marge de manœuvre : la Moldavie en dépend encore plus que toute autre ancienne république soviétique. +Plus de la moitié de ses échanges commerciaux se font avec l'UE,  et la Moldavie reçoit un soutien financier important de sa part. +La majeure partie des émigrés moldaves travaillent dans l'Union et 75 % de la population souhaitent adhérer à l'UE. +La Roumanie aussi devrait jouer son rôle et offrir de signer un traité fondamental et un accord frontalier avec la Moldavie. +La dernière chose dont les Moldaves appauvris ont besoin est un gouvernement autocratique et irresponsable qui manque d'imagination pour faire renaître le pays. +Et la dernière chose dont l'UE a besoin est l'afflux de centaines de milliers de migrants fuyant la pauvreté, la répression politique et le désespoir en Moldavie et dans d'autres pays de l'ex-union soviétique. +Pauvre petit pays riche +Il est difficile d'éprouver de la compassion pour la Norvège : grâce à ses réserves importantes de pétrole en Mer du Nord, le pays a atteint un niveau de richesses inimaginable un peu moins d'une génération plus tôt. +Ce qui lui a permis de battre froid l'Union européenne depuis 1994. Mais les problèmes de la Norvège, bien loin d'être aussi dramatiques que ceux de l'Afrique sub-saharienne ou de l'Afghanistan, n'en sont pas moins suffisamment sérieux pour provoquer l'inquiétude, à défaut de pitié. +Quand l'abondance d'une ressource naturelle fraîchement découverte par un pays mène à une richesse inattendue, les investissements dans les autres secteurs économiques se détournent du secteur exportable (principalement des exportations de produits manufacturés) pour s'orienter vers le secteur non-exportable (principalement le secteur des services et des biens de consommations). +Ce diagnostic est commun et connu sous le nom de « syndrome hollandais ». +Quand la ressource naturelle ayant généré cette richesse inattendue (ici le pétrole et le gaz) disparaît, l'économie n'a plus assez d'industries compétitives et bien trop de librairies-cafés vides. +S'en suit alors une restructuration très coûteuse. +Jusqu'à présent, la Norvège a évité les pires pièges du syndrome hollandais en utilisant ses revenus pétroliers, très importants, pour mettre en place un système d'épargne national, le Fonds pétrolier, qui n'est autorisé à investir que dans des actifs étrangers. +Cette réglementation a permis de réguler la pression de la demande inflationniste tout en empêchant les élus politiques de dilapider la richesse nationale dans des projets politiquement satisfaisants mais économiquement peu viables. +Dans ces deux domaines, cependant, la Norvège vient de céder du terrain et se dirige droit vers les ennuis. +Les salaires sont montés en flèche dans tous les secteurs économiques, avec une hausse moyenne de 6% prévue pour cette année. +En retour, les entreprises ont monté les prix, ce qui alimente l'inflation. +Pourtant, la Banque centrale s'est engagée à maintenir l'inflation aux alentours des 2,5%, et de ce fait les taux d'intérêt norvégiens sont les plus élevés d'Europe. +Ceci a permis aux taux de change de se renforcer de 10% l'an dernier par rapport aux monnaies des principaux partenaires commerciaux de la Norvège, entraînant un plus grand manque de compétitivité de son secteur d'exportation. +Les industries locales confrontées à la concurrence étrangère commencent maintenant à mettre la clé sous la porte ou à se délocaliser à l'étranger. +Ainsi le chômage augmente dans l'un des plus riches pays au monde. +Mais le vrai problème se pose dans le secteur public. +Les dépenses gouvernementales s'accroissent de 4% par an à cause d'une nouvelle « réglementation d'action », mise en place en 2001, qui permet l'injection dans l'économie intérieure de revenus issus du Fonds pétrolier. +Pourtant, ce revenu budgétaire supplémentaire n'a que peu fait baisser les impôts tandis que les salaires et les taux d'intérêt élevés font grimper les dépenses publiques. +Il faut donc ainsi toujours plus de mannes publiques pour maintenir le niveau des services publics et le chômage à un bas niveau. +Ce cercle infernal prend aussi d'autres allures dangereuses : l'augmentation des taux d'intérêt, variation en hausse des cours d'une monnaie sur les marchés des changes, la décimation avancée du secteur des exportations, et le risque d'un chômage accru. +Si la Norvège veut éviter de succomber au syndrome hollandais, il n'y a qu'une seule solution : l'importance du marché des exportations diminuant, il faut que le secteur des biens et services accroisse sa productivité et sa production. +Il n'existe qu'une seule manière de parvenir à des gains de production et de productivité : le surplus de la demande dans le secteur public doit être reporté ailleurs. +Après tout, la demande ne disparaîtra pas d'elle-même. +Les listes d'attente pour les soins médicaux et infirmiers paraissent déjà sans fin en Norvège, et les bâtiments scolaires se dégradent, certains ayant même dû être fermés par les autorités sanitaires. +Il faudrait donc privatiser un certain nombre de services publics. +Comme toujours dans ces cas-là, ce sera un processus politique litigieux et difficile mais il fournira aussi la possibilité de réaliser le potentiel du pays grâce à une stratégie d'investissements sensés : ce à quoi était destiné le Fonds pétrolier à l'origine. +Cette stratégie devra s'accompagner d'investissements humains importants en matière d'éducation, de formation et de recherche scientifique fondamentale. +Même si les idées de génies ne nous viennent pas sur commande. +Tout effort gouvernemental pour soutenir une industrie mourante ou pour allouer des subventions en choisissant des projets « novateurs » de toutes sortes ira droit à la catastrophe économique. +Comme si souvent de par le monde, les richesses inattendues qui ont fait le bonheur de la Norvège grâce au pétrole et au gaz peuvent se révéler tout autant dangereuses que positives. +Avec des réserves estimées à 10 à 15 années de production, les Emirats arabes unis ont abandonné toute exigence particulière dans l'accord de visas aux occidentaux pour accélérer le développement d'une industrie du tourisme viable. +Le Kazakhstan lui n'en est qu'au début de cette aventure avec la découverte récente des énormes réserves de la Mer Caspienne. +Ces pays, tout comme la Norvège, ont gagné à la loterie des ressources naturelles, mais ce n'est en aucun cas la garantie qu'ils resteront riches quand elles seront épuisées. +Sortir du bourbier tibétain +Il y a un an, les intellectuels chinois et occidentaux se sont surpassés pour attribuer l'engouement du peuple pour le Tibet à une confusion puérile avec la vallée fictive Shangri-la issue d'un film de 1937 intitulé Lost Horizon . +Mais comme les manifestations tibétaines antichinoises de ces 12 derniers mois s'élèvent à plus de 150, il ne semble pas du tout fantaisiste de s'en inquiéter. +En effet, dans la catégorie facteur de stabilité régionale et souci majeur de relations internationales, le Tibet pourrait bientôt supplanter Taiwan. +Les régions peuplées par les Tibétains couvrent désormais un quart de la Chine. Une si vaste partie du territoire coupée du monde extérieur et placée sous contrôle militaire discrédite la légitimité et le statut de puissance mondiale revendiqués par le parti communiste. +Les manifestations de l'an passé au Tibet ont été les plus massives et les plus importantes depuis des décennies. +Ont pris part : des nomades, des fermiers et des étudiants, qui auraient en théorie dus être très reconnaissants à la Chine d'avoir modernisé l'économie de leur pays. +Nombre d'entre eux arboraient le drapeau du Tibet -- interdit -- montrant bien qu'ils considèrent que c'était un état à part entière dans le passé. Des bureaux officiels ont été mis à feu lors d'environ 20 incidents. +On dénombre même un cas d'agression de migrants chinois, causant la mort de 18 personnes. +Difficile de ne pas voir combien ces événements mettent le régime chinois au défi. +Le gouvernement chinois a réagi en imputant le problème à des complots extérieurs. +Il a envoyé plus de troupes, a dissimulé les détails de la mort de manifestants, a condamné à perpétuité un éducateur de prévention HIV qui avait illégalement copié des CD en provenance d'Inde et a banni, des mois durant, des journalistes et des étrangers du plateau tibétain. +En direct sur une chaîne nationale en novembre dernier, des officiels chinois ont ridiculisé les propositions de négociation d'exilés tibétains. +La Chine a même annulé un sommet avec l'Union européenne en raison d'une rencontre entre le président français Nicolas Sarkozy et le dalaï-lama et sous-entend régulièrement que les Tibétains sont des terroristes. +Le 28 mars à Lhassa, les Tibétains ont dû célébrer « la journée de l'émancipation des serfs », avalisant ainsi les arguments utilisés par la Chine pour justifier sa prise de pouvoir de 1959. +Mais cette terminologie teintée de lutte des classes rappelle la révolution culturelle. Or, comme un tel discours est aujourd'hui inimaginable à l'intérieur de la Chine, son seul effet est de singulariser davantage le Tibet. +Même si les deux camps se disent prêts à discuter, c'est un dialogue de sourds : les exilés souhaitent négocier sur la base de leurs propositions d'autonomie tandis que la Chine affirme ne vouloir aborder que le sujet du « statut personnel » du dalaï-lama -- qui vivrait à Pékin s'il devait revenir en Chine. +L'affrontement viscéral se poursuit lorsque le chef spirituel décrit la vie des Tibétains sous le joug chinois comme « un enfer sur terre ». +Sans doute faisait-il référence à leur vie sous Mao plutôt que leur vie actuelle, mais ses remarques ont permis à la Chine de déclencher davantage d'attaques médiatiques et de faire monter la température politique. +Les gouvernements occidentaux ont été taxés d'ingérence. Il est pourtant peu probable qu'aucun d'entre eux souhaite faire dérailler ses relations avec la Chine, surtout en temps de crise économique. +En octobre dernier, le Ministre britannique des affaires étrangères David Miliband était si soucieux de plaire à la Chine qu'il a failli accuser ses prédécesseurs d'avoir reconnu l'autonomie du Tibet cent ans auparavant. +A l'échelle internationale, la question du mandat de la Chine sur le Tibet est compréhensible : le Tibet est un haut plateau stratégique situé entre deux grandes puissances nucléaires asiatiques. +Bien gouverner le toit du monde est un bien public. +La Chine pourrait aider à diminuer les tensions croissantes en admettant que ces questions sont raisonnables. +Le dalaï-lama pourrait ralentir ses rencontres internationales et reconnaître que, malgré l'émasculation par la Chine de toute vie intellectuelle et religieuse au Tibet, certains aspects de la culture tibétaine (comme l'art moderne, le cinéma et la littérature) se portent plutôt bien. +Les observateurs occidentaux pourraient accorder aux exilés que leurs propositions d'autonomie sont négociables et non des facteurs trop décisifs, plutôt que de les envoyer paître avant d'entamer des pourparlers. +Les deux camps gagneraient à s'intéresser à deux officiels tibétains qui ont osé prendre la parole en Chine le mois dernier. Un gouverneur à la retraite de la préfecture de Kardze a déclaré au journal singapourien Zaobao que « le gouvernement devrait faire plus confiance à la population, et en particulier aux moines tibétains ». +Le gouverneur actuel du Tibet a reconnu que certains des manifestants de l'an dernier n'étaient pas « satisfaits par [leurs] mesures » sans pour autant les qualifier d'ennemis de l'état. La Chine concédait alors pour la première fois que les manifestations pouvaient être liées à l'impopularité de ses mesures. +Jusqu'à présent, le Parti a suivi une stratégie plus conventionnelle : il a envoyé une délégation d'officiels aux Etats-Unis la semaine dernière (la première, d'après eux, à être exclusivement composée de Tibétains, fait plutôt embarrassant à reconnaître). Le porte-parole, Shingtsa Tenzin Choedak, a expliqué aux journalistes que les Tibétains bénéficiaient de la liberté de culte. +Or, toute personne ayant récemment travaillé au Tibet le sait bien : cette déclaration est inexacte car, depuis 1996 au moins, tous les tibétains qui travaillent pour le gouvernement et tous les tibétains étudiant dans leur pays n'ont pas le droit de pratiquer le bouddhisme. Pourtant, la loi chinoise interdit d'empêcher toute personne de pratiquer une religion officielle. +Le Gouvernement chinois pourrait immédiatement améliorer la situation en se séparant des officiels responsables de telles mesures illégales, et en s'excusant auprès des Tibétains pour n'avoir pas prêté attention aux abus de ces 15 dernières années. +Il pourrait aussi commencer par réévaluer sa politique tibétaine plutôt que de renforcer contrôles et allégations. +Sans quoi, la quête de la Chine vers un respect d'envergure internationale continuera de se dérober et le Tibet demeurera sans aucun doute à l'ordre du jour des affaires internationales. +L'Europe et la crise alimentaire mondiale +Mais trouver une solution va au-delà de la simple identification des pays capables de nourrir le reste du monde. +Il est de plus en plus urgent que chaque nation soit en mesure de se nourrir elle-même. +Cela signifie que l'agriculture doit devenir une priorité internationale, avec une aide octroyée aux pays les plus pauvres pour qu'ils établissent l'indépendance et la sécurité de leur approvisionnement alimentaire. +Les pays et les organisations internationales commencent déjà se mobiliser. +L'organisation des Nations unies pour l'alimentation et l'agriculture estime que l'augmentation du prix des aliments comporte le risque d'un accroissement des conflits mondiaux. +Le Forum économique mondial de Davos a fait de l'insécurité alimentaire l'un des principaux risques mondiaux. +La Banque mondiale a vigoureusement souligné l'importance de l'agriculture pour faire démarrer l'expansion économique et briser le cercle vicieux de la pauvreté. +Ban Ki-moon, le secrétaire général des Nations unies, a mis sur pied un groupe de travail pour élaborer un plan d'action commun, et Nicolas Sarkozy, le président français, a proposé un partenariat mondial pour l'alimentation et l'agriculture. +Cette proposition de partenariat repose sur trois piliers. +Le premier est la création d'un groupe international chargé de définir une stratégie mondiale pour la sécurité alimentaire. +Le deuxième est la mise sur pied d'un groupe international de scientifiques chargé d'évaluer la situation de l'agriculture mondiale, d'alerter sur les risques de crise, et éventuellement de faciliter l'adoption par les gouvernements de mesures politiques et stratégiques pour faire face aux crises alimentaires. +Et le troisième est de mobiliser la communauté financière internationale, malgré ses problèmes actuels. +La taille et la fiabilité de la production agricole de l'Union européenne signifient qu'elle peut et doit jouer le rôle de régulateur des marchés mondiaux. +Si l'Europe réduisait sa production agricole, l'augmentation de ses importations contribuerait nettement à une hausse du prix des denrées alimentaires. +Pour cette raison, le niveau de production agricole de l'UE doit rester stable -- à la fois dans l'intérêt des Européens et des populations des pays les plus pauvres. +Mais l'Europe ne peut pas développer son agriculture au détriment des moins fortunés, et l'UE doit donc harmoniser sa politique avec les pays plus pauvres. +Aujourd'hui, les subventions à l'exportation et autres mesures de soutien représentent moins de 1 pour cent du budget agricole européen, et l'UE a entrepris de les éliminer une fois que les principaux pays exportateurs auront pris des mesures analogues. +Depuis 2001, avec le règlement dit « Tout sauf les armes », tous les produits des pays les moins avancés -- à l'exception des armes et des munitions -- peuvent accéder au marché unique de l'UE en franchise de douanes, faisant ainsi de l'UE le principal marché des produits de ces pays. +L'UE cherche parallèlement à répondre aux nouveaux défis en réformant sa politique agricole commune, comme le montre son récent abandon des jachères obligatoires. +Aujourd'hui l'UE se prépare à augmenter progressivement les quotas laitiers, et à évaluer l'impact de sa décision concernant les biocarburants sur les marchés mondiaux. +Mais le souci premier de l'Europe doit être d'encourager le développement des agricultures au plan local, le seul moyen d'améliorer la sécurité alimentaire mondiale et de réduire la pauvreté. +Cette préoccupation devrait également permettre de garantir que les prix élevés actuels des produits agricoles profitent aux agriculteurs des pays pauvres. +Cette évolution est vitale, parce que selon des estimations de la Banque mondiale, la croissance dans le secteur agricole contribue deux fois plus à réduire la pauvreté que la croissance dans d'autres secteurs de l'économie. +L'agriculture reste en effet le principal secteur productif des économies les moins avancées, employant près de 65 pour cent de la population active et contribuant à plus de 25 pour cent du PIB. +Mais au cours des vingt dernières années, le soutien au développement de l'agriculture a décliné. +Le montant alloué à l'agriculture ne s'élève qu'à 4 pour cent de l'aide au développement. +La Commission européenne et les États membres de l'UE prévoient en conséquence d'accroître le montant de l'aide, à la fois par le biais du Fonds européen de développement et en trouvant de nouvelles sources de soutien financier. +Une plus grande libéralisation du commerce agricole ne garantira pas la sécurité alimentaire. +Face à la nature erratique des marchés agricoles, une réglementation est nécessaire pour amortir la volatilité des prix des denrées alimentaires pour les pays les plus pauvres. +Cela ne signifie pas pour autant que le protectionnisme est la voie à suivre, mais seulement que prendre en compte des questions spécifiques affectant le commerce agricol international -- conditions climatiques, volatilité des prix, risques sanitaires -- peut être parfois nécessaire. +Mais dans un monde où les différences de productivité peuvent être de l'ordre du 1 pour 1000, il serait peu raisonnable de compter uniquement sur les marchés pour permettre aux pays les moins avancés de développer leur économie. +Il n'est pas non plus réaliste de s'attendre à une expansion économique résultant d'une concurrence entre distributeurs et producteurs multinationaux dans des pays où rode encore la famine. +Mais rassembler l'expertise extérieure et les compétences locales concernant la géographie et les contraintes environnementales et économiques, de manière à répartir les risques et partager la gestion des ressources et des projets, est une démarche bien plus à même d'aider les pays les plus pauvres à obtenir leur indépendance alimentaire. +C'est cette approche qui a permis, en moins de 20 ans, à l'Europe d'après-guerre d'établir sa souveraineté alimentaire. +Les pays, comme l'Inde et le Vietnam, qui ont choisi de protéger le développement de leur agriculture des aléas du marché ont obtenu une réduction substantielle de la pauvreté dans les zones rurales. +Le temps est venu de donner la priorité à l'agriculture, de manière à assurer une croissance avec un visage plus humain. +Au coeur de l'Union européenne, la France souhaite jouer son rôle dans un effort collectif qui devient rapidement un sujet de préoccupation pour nous tous. +Le capitalisme managérial se distingue par des économies où de grandes sociétés -- souvent les soi-disant « fleurons nationaux » - dominent la production et l'emploi. +Les entreprises plus petites existent également, mais ce sont en général des commerces de détail ou de services avec seulement quelques employés. +Ces sociétés grandissent en réalisant des économies d'échelle, en raffinant et en produisant en série les innovations radicales des entrepreneurs (voir plus bas). +Les économies d'Europe occidentale et du Japon sont les principaux exemples du capitalisme managérial, qui comme le capitalisme d'État, ont donné lieu à de fortes performances économiques. +Mais le capitalisme managérial a lui aussi son talon d'Achille. +Les entreprises bureaucratiques sont typiquement réticentes à prendre de gros risques -- c'est-à-dire à développer et à commercialiser les innovations radicales qui repoussent la frontière des possibilités de production, produisant des sauts de productivité importants et durables et de ce fait une croissance économique soutenue. +Les grosses entreprises ne répugnent pas seulement à prendre des risques parce qu'elles sont bureaucratiques, avec plusieurs échelons de direction nécessaires pour approuver toute innovation, mais aussi parce qu'elles hésitent à soutenir de nouveaux projets qui pourraient rendre obsolètes les produits ou les services qui sont à l'origine de leurs profits présents. +À notre avis, les limites du capitalisme managérial expliquent pourquoi l'Europe occidentale et le Japon, après avoir approché le niveau américain de revenu par personne à la fin des années 1980, n'ont pas profité comme les Etats-Unis du rebond de productivité lié aux nouvelles technologies à la fin des années 1990. +Ce qui nous amène à la quatrième forme de capitalisme : le capitalisme entrepreneurial . +Les économies dont le dynamisme tient à la création de nouvelles entreprises ont toujours commercialisé les innovations qui repoussent la frontière des possibilités de production. +Les exemples des deux derniers siècles comprennent les innovations et les produits à effet transformateur tels que les trains, les voitures et les avions ; le télégraphe, téléphone, radio et télévision ; la climatisation ; et comme mentionné plus haut, les nouvelles technologies ayant permis la révolution de l'information, que ce soit les ordinateurs portables ou les serveurs centraux, les routeurs wifi et autres matériels informatiques, et tous les logiciels qui permettent de s'en servir.ar +Il est certain qu'aucune économie ne peut réaliser tout son potentiel en n'étant qu'entrepreneuriale. +La combinaison optimale d'entreprises comprend une bonne dose de grandes sociétés, qui ont les ressources financières et humaines pour raffiner et produire en série les innovations radicales, avec une pincée de nouvelles entreprises. +Le dilemme du paracétamol +La substitution de l'aspirine par le paracétamol conduirait, d'après les recherches, à une réponse immunitaire allergique plus prononcée, augmentant de ce fait la susceptibilité à l'asthme et à d'autres allergies. +Diverses études épidémiologiques ont depuis dégagé un lien entre l'asthme et une exposition au paracétamol dans l'utérus, durant l'enfance et l'adolescence. +En fin de compte, ces études suggèrent que l'usage du paracétamol constituerait un facteur de risque important dans l'apparition de l'asthme. +Les résultats d'une étude épidémiologique d'envergure internationale sur l'asthme infantile récemment publiée dans la revue médicale The Lancet viennent corroborer cette hypothèse. +L'analyse, faite par l'International Study of Asthma and Allergies in Childhood (ISAAC, Centre d'étude international sur l'asthme et les allergies infantiles) portait sur plus de 200�000 enfants âgés de six et sept ans dans 73 centres de 31 pays. +Les parents ou tuteurs ont répondu à un questionnaire écrit sur les symptômes actuels de l'asthme, de la rhinite (rhume des foins) et de l'eczéma, et sur d'autres facteurs de risques, y compris l'usage du paracétamol pour soulager la fièvre d'un enfant de moins de 12 mois et la fréquence de la prise de paracétamol au cours des 12 derniers mois. +L'étude a mis en évidence un lien entre l'usage du paracétamol pour traiter une fièvre dans la première année de vie et la présence de symptômes de l'asthme chez les enfants de six et sept ans. +Ce lien, notable à l'échelle de toute la planète, causerait une augmentation des risques de 46�% (cette estimation prend en compte d'autres facteurs de risque. +La seconde observation porte sur la quantité de paracétamol ingéré au cours des 12�derniers mois et les symptômes de l'asthme chez les 6-7 ans. +D'autres liens entre la prise de paracétamol et la propension à de graves risques d'asthme ont aussi été démontrés. +La proportion de cas asthmatiques pouvant être dus à l'exposition au paracétamol irait de 22�% à 38�%. +De similaires observations ont été faites, associant la prise de paracétamol à la fois dans la première année de vie et chez les enfants de 6 et 7 ans avec une augmentation des risques des symptômes de la rhinite et de l'eczéma. +Ce qui laisse supposer que les éventuels effets du paracétamol ne se limitent pas aux voies respiratoires, mais peut aussi affecter divers organes. +L'étude n'identifiaient aucun mécanisme éventuel à l'origine du lien entre le paracétamol et l'asthme (et autres allergies). +Mais d'autres chercheurs ont soumis divers mécanismes plausibles, essentiellement liés aux effets négatifs du paracétamol sur la faculté du corps à résister au stress oxydant et à l'éventuelle amélioration de sa réponse immunitaire allergique. +Les auteurs insistent sur le fait qu'un lien de cause à effet ne peut être établi rétrospectivement en raison d'autres paramètres faussant l'étude. Par exemple, l'interaction entre une infection virale du système respiratoire telle que le virus respiratoire syncytial (RSV) et un risque accru d'asthme infantile tardif est notoire, donc l'analyse de la prise de paracétamol aurait été faussée dans ce type de cas.  +L'étude alimente le débat sur les avantages du traitement de la fièvre chez les enfants, une question traitée très complètement par Fiona Russel et d'autres confrères dans le Bulletin de l'Organisation mondiale pour la santé (OMS). +Ils avancent que les preuves scientifiques à disposition montrent que la fièvre est une réponse universelle, atemporelle et généralement positive, aux infections et que son traitement présente peu d'avantages tangibles, si ne n'est aucun.  +Au contraire, ils suggèrent que supprimer la fièvre pourrait parfois avoir des effets néfastes et concluent qu'il est préférable de ne pas encourager l'usage répandu de médicaments pour faire baisser la fièvre. +Pour ce qui est des enfants, ils limitent leurs recommandations d'usage à des accès de fièvre très élevée, autres désagréments visibles ou douleurs véritables. +La nécessité d'essais contrôlés aléatoires pour déterminer les effets à long terme de l'usage fréquent du paracétamol chez l'enfant fait l'unanimité. +L'élaboration de règles d'usage ne pourra se faire qu'à l'appui de ces essais. +En attendant de tels résultats, le paracétamol demeure le médicament favori pour soulager douleurs et fièvres chez l'enfant, à utiliser selon les recommandations de l'OMS qui préconisent qu'il ne soit donné aux enfants qu'en cas de fièvre supérieure ou égale à 38,5�°C. +La prise d'aspirine chez les jeunes enfants est contre-indiquée en raison du risque du syndrome de Reye, une complication rare mais grave. +Le paracétamol demeure toutefois le moyen préféré pour soulager douleurs et fièvres chez les enfants et adultes souffrant d'asthme, car l'aspirine et les autres anti-inflammatoires sans stéroïdes peuvent provoquer des crises chez les asthmatiques. +Les fausses promesses des normes mondiales de gouvernance +L'idée d'un ensemble unique de critères d'évaluation de la gouvernance des sociétés cotées en bourse est certes séduisante. +Les investisseurs et ces sociétés évoluent dans des marchés financiers mondiaux de plus en plus intégrés ; pourtant, la quête de tels critères mondiaux est peu judicieuse. +Ces dix dernières années, on a certes noté une utilisation croissante des normes mondiales de gouvernance, très développées aux Etats-Unis, pour évaluer comment pays et sociétés protègent les investisseurs minoritaires. +Or, les efforts dans ce sens n'ont pas tenu compte des différences fondamentales entre les sociétés contrôlées, qui ont un actionnaire majoritaire, et les sociétés à actionnariat dispersé, qui n'en ont pas. +Si ces dernières dominent dans les marchés financiers aux Etats-Unis et au Royaume-Uni, ce sont les sociétés contrôlées qui prévalent dans la plupart des autres pays. +Les difficultés auxquelles sont confrontées les créanciers varient considérablement selon qu'on parle de sociétés à actionnariat dispersé ou de sociétés contrôlées. +Dans le premier cas, la préoccupation majeure est l'opportunisme des administrateurs, qui exercent un contrôle de fait ; dans le deuxième, c'est l'opportunisme de l'actionnaire majoritaire, au détriment des actionnaires minoritaires. +Puisque les problèmes fondamentaux de gouvernance diffèrent nettement selon le type de société, les dispositifs en faveur des investisseurs dans les sociétés à actionnariat dispersé peuvent être inappropriés voire contre-productifs dans les sociétés contrôlées, et inversement. +En conséquence, l'application d'une norme unique pour évaluer la protection des investisseurs dans le monde entier risque d'être inefficace pour les sociétés à actionnariat dispersé, pour les sociétés contrôlées ou pour les deux types de sociétés. +Prenons l'exemple du Corporate Governance Quotient system, conçu par l'entreprise américaine RiskMetrics, société leader en matière de conseil aux actionnaires. +Utilisé par des investisseurs institutionnels dans le monde entier, ce système attache une grande importance aux dispositifs qui régissent le contrôle interne. +Ces dispositifs sont en fait importants pour les investisseurs dans les sociétés à actionnariat dispersé. +En revanche, dans les sociétés à actionnaire majoritaire, les luttes pour le contrôle entre les actionnaires ne sont pas possibles, et les conditions auxquelles elles sont soumises, hors de propos. +Les investisseurs et les autorités de pays où prévalent les sociétés contrôlées devraient cesser d'utiliser des normes de gouvernance mondiale basées sur une expérience avec des sociétés américaines à actionnariat dispersé. +Au lieu de cela, ils devraient s'efforcer d'élaborer des normes adaptées aux sociétés contrôlées. +Le plus évident, c'est que l'appréciation de sociétés contrôlées ne devrait pas donner de poids significatif aux dispositifs qui régissent le contrôle d'entreprise. +De même, les mesures qui rendent les conseils d'administration plus réceptifs aux souhaits d'une majorité d'actionnaires (comme par exemple, faciliter la tâche des actionnaires pour le remplacement d'administrateurs) peuvent servir les intérêts des investisseurs dans les sociétés à actionnariat dispersé, mais produire les effets inverses pour les créanciers de sociétés contrôlées. +Dans ces dernières, où la préoccupation est d'écarter les actionnaires minoritaires, faire en sorte que les administrateurs soient encore plus réceptifs à l'actionnaire majoritaire rendra probablement les investisseurs minoritaires encore plus vulnérables. +En outre, dans les pays qui comptent un grand nombre de sociétés contrôlées, il convient d'accorder une attention particulière aux transactions entre parties liées et aux opportunités d'affaires  -- principaux moyens d'écarter la valeur des investisseurs minoritaires dans ce type de sociétés. +Pour répondre à de telles questions, les accords qui permettent à une minorité d'actionnaires d'opposer leur veto aux transactions entre parties liées  --  non garantis dans les sociétés à actionnariat dispersé  -- pourraient s'avérer utiles. +Enfin, dans le cadre de l'appréciation de sociétés contrôlées, il importe de ne pas juger l'indépendance des administrateurs essentiellement sur leur indépendance vis-à-vis du conseil de la société où ils siègent, mais plutôt vis-à-vis de son actionnaire majoritaire. +Pour améliorer la gouvernance d'entreprise et la protection des investisseurs, les autorités et les investisseurs des pays dont les marchés financiers sont dominés par des sociétés contrôlées devraient se méfier des normes de gouvernance mondiale conçues pour les entreprises américaines. +Ils devraient se concentrer sur les problèmes propres aux sociétés contrôlées et sur les règles les plus efficaces pour protéger les investisseurs minoritaires dans ces sociétés. +Finance : des tests toxiques +Beaucoup d'observateurs en ont déduit que les banques américaines - institutions de toute première importance tant pour l'économie américaine que pour l'économie mondiale - sont sorties d'affaire. +Mais ce raisonnement est erroné. +Les tests de stress américains n'avaient pas comme objectif l'évaluation des pertes que les banques ont subies sur nombre de leurs "actifs toxiques" - actifs qui ont été au cœur de la crise financière. +Pourtant le modèle américain fait tache d'huile. +Lors d'une rencontre ce mois-ci, les ministres des finances du G8 ont convenu de suivre l'exemple américain et de soumettre leurs propres banques aux tests de stress. +Mais pour que ces tests soient fiables, il ne faut pas commettre la même erreur qu'aux USA. +Jusqu'à il y a peu, le gouvernement américain s'intéressait essentiellement aux actifs toxiques qui déséquilibraient le bilan des banques. +Alors que les règles comptables permettent souvent d'évaluer les actifs à leur valeur nominale, on admet généralement que la valeur réelle de beaucoup d'actifs toxiques est tombée bien en dessous de leur valeur nominale. +L'administration Obama a proposé un plan à hauteur de 1000 milliards de dollars destiné au rachat des actifs toxiques des banques, mais pour l'instant il est suspendu. +On aurait pu espérer que les responsables des tests de stress évaluent le volume des pertes que les banques ont subi à cause des actifs toxiques. +Or ils se sont contentés d'évaluer les pertes que pourraient subir les banques sur les prêts (et sur d'autres actifs) qui arriveront à maturité à la fin de l'année prochaine, ignorant délibérément les pertes qu'elles subiront après 2010. +Ainsi les tests ne prennent pas en compte une part importante des pertes supportées par les banques en raison de la crise. +Nous n'avons pas encore d'estimation de ces pertes, mais elles pourraient être importantes. +A titre d'exemple, d'après un rapport récent de la Deutsche Bank, dans le secteur de l'immobilier d'entreprise les emprunteurs auront de la difficulté à refinancer les centaines de milliards de prêts qui arriveront à maturité après 2010. +Plutôt que d'évaluer la valeur des actifs bancaires - ce que serait leur valeur sur un marché au fonctionnement optimum - et les comparer au passif, il aurait mieux valu que les tests de stress aient seulement pour objectif d'évaluer dans quelle mesure les pertes comptables des banques lors des deux prochaines années risquent de dépasser leur capital tel qu'il est inscrit dans leurs comptes. +Tant que l'on autorise les banques à fonctionner de cette manière, les responsables chargés du contrôle de l'activité bancaire parient sur la capacité des banques à se redresser - même si la valeur de leurs actifs ne dépasse pas nettement celle de leur passif. +Mais la capacité des banques à lever de nouveaux capitaux propres, indépendamment de la fiabilité des tests de stress, signifie-t-elle que les investisseurs estiment que la valeur de leur actif dépasse franchement celle de leur passif ? +Absolument pas. +Prenons le cas d'une banque supportant un passif d'un milliard de dollars. +Supposons que ses actifs qui arriveront à maturité à long terme aient une valeur nominale de 1,2 milliards de dollars mais que leur valeur actuelle ne soit que d'un milliard de dollars. +Bien que la valeur des actifs ne dépasse pas celle du passif, les déposants ne fuiront pas tant que le gouvernement garantit leurs dépôts. +Si dans deux ans les actifs de la banque ont une chance sur deux de s'apprécier à hauteur de 1,2 milliards de dollars et une chance sur deux de descendre à la valeur de 0,8 milliards de dollars, la banque pourra lever de nouveaux capitaux propres. Car dans la perspective de réaliser un bénéfice si les choses se passent bien, les nouveaux investisseurs acceptent de prendre un risque. +Un diagnostic exact de la santé financière des banques passe par l'estimation de la valeur de leurs actifs toxiques. +Les régulateurs devraient encourager les banques à vendre une partie de leurs actifs toxiques de manière à extrapoler à partir du prix qu'elles en obtiennent la valeur de la totalité de leur portefeuille d'actifs toxiques. Autre possibilité, ils pourraient estimer par eux-mêmes la valeur de ce portefeuille.   +Quelle que soit la méthode, il est indispensable d'estimer la valeur des actifs toxiques d'une banque avant de conclure que son capital est suffisant pour qu'elle puisse tenir le rôle clé qui lui est dévolu. +Le type de tests de stress utilisé par les USA, et que l'on demande à d'autres pays d'appliquer - et la capacité des banques à lever de nouveaux fonds propres - ne permettent pas de conclure quant à la santé financière d'une banque. +Que la fête recommence? +Pas avant de réformer. +La priorité politique à donner à la révision de la rémunération des cadres est l'une des leçons clés de la crise financière. +La façon, effectivement, dont les institutions financières rémunèrent leurs cadres, a contribué largement à l'excès de risques qui a précipité la crise. +En les récompensant pour leurs prises de risque, tout en leur garantissant l'impunité pour certaines des conséquences fâcheuses imputables à ce comportement, elles les ont poussés à des paris irrationnels. +Et ces prises de risque ont été d'autant plus excessives, qu'il s'agissait le plus souvent de récompenser des bénéfices à court terme, même avec un recul de ces bénéfices dans la foulée. +Le marché a eu beau perdre plus de la moitié de sa valeur boursière au cours des cinq dernières années, les cadres n'en ont pas moins touché, avant que la bourse n'implose, d'énormes dividendes et bonus. +Ces systèmes de rétribution disposaient trop les cadres à une course au profit rapide -- les incitant à se porter sur des prêts et des investissements rapportant à court terme -- en dépit du risque d'implosion qu'ils faisaient croître en agissant ainsi. +Au lendemain de la crise, le problème est apparu clairement, y compris à des managers comme le PDG de Goldman Sachs, Lloyd Blankfein. +Mais la question est encore loin d'être réglée: la récente décision, chez Goldman, d'accorder des bonus records en récompense des performances obtenues aux deux derniers trimestres, par exemple, est un pas dans la mauvaise direction. +Pour renoncer à récompenser ces performances à court terme et privilégier les résultats à long terme, il faut entreprendre une refonte du système d'attribution des primes. +En ce qui concerne le paiement des bonus en actions, les cadres ne devraient pas être autorisés à tirer profit des stock options qui leur ont été confiées, avant une échéance de cinq ans, par exemple -- c'est à dire avant le moment où elles seraient arrivées à "maturité," et où on ne doit pas pouvoir les retirer aux cadres. +L'impossibilité de tirer profit des stock options, pendant une longue durée, lierait le salaire du cadre à la valeur des actions à long terme. +La durée de cette période devrait être fixée, et ne devrait pas dépendre d'actions ou de conditions étant, au moins partiellement, du ressort des cadres. +Inversement, l'interdiction de tirer profit des stock options avant de quitter la société, pourrait inciter ceux des cadres qui auraient accumulé des stock options à forte valeur ajoutée à partir, ce qui serait contre-productif. +Il faut revoir également les bonus, de façon à ce qu'ils viennent récompenser les performances à long terme. +Il faudrait déjà cesser de distribuer des bonus pour des résultats qui n'ont qu'un an. +De plus, on ne devrait pas verser les bonus immédiatement, mais les placer sur un compte de la société pendant plusieurs années, et les ajuster à la baisse, si par la suite la société apprend que ce qui en avait motivé l'attribution est devenu caduc. +Indépendamment de l'importance excessive accordée aux résultats à court terme, on n'a pas assez pris en considération une autre source d'incitation à prendre des risques excessifs. +Les salaires des cadres du secteur financier étaient liés à des paris à fort effet de levier sur la valeur de leur société. +Pourquoi les rémunérations du secteur financier ne devraient pas être laissés à la loi du marché +Il n'est peut-être pas surprenant que de nombreux grands patrons de la finance s'opposent fermement à ces décisions. +Ils prétendent qu'ils doivent rester libres d'établir le montant des rémunérations afin de se préserver les meilleurs éléments -- ceux qui seront à même de ressusciter le système financier international. +Les gouvernements devraient-ils donc reculer et laisser les sociétés de la finance procéder eux-mêmes à ces réformes ? +La réponse est non, bien sûr. +Dans le nouvel ordre post-crise financière, les gouvernements doivent endosser le rôle de surveillance et de régulation des rétributions dans les sociétés financières ; dans le cas contraire, les motivations perverses qui ont contribué à la crise actuelle pourraient bien refaire surface. +Il est important de distinguer deux sources d'inquiétudes à propos des rémunérations pratiquées dans le secteur financier. +L'une concerne les actionnaires. +Les chiffres récemment publiés par le procureur général de l'état de New York, Andrew Cuomo, indiquent que neuf grandes institutions financières ont rétribué plus de 600 milliards de dollars à leur personnel entre 2003 et 2008, alors même que leur capitalisation boursière connaissait une baisse substantielle. +Ce genre d'évolution est à même d'éveiller quelques inquiétudes chez les actionnaires sur le fait que les grilles de rémunérations ne sont peut-être pas bien conçues pour servir leurs intérêts. +Même si certains problèmes de gouvernance dans ces sociétés font que la politique de rémunération n'est pas en phase avec les intérêts des actionnaires, de tels problèmes ne justifient pas nécessairement l'intervention du gouvernement sur la politique appliquée. +De tels problèmes sont mieux gérés par des règles qui visent à améliorer les processus internes de gouvernance et à renforcer les droits des investisseurs, tout en laissant au conseil d'administration et aux actionnaires qui le nomment la liberté de déterminer la politique de rémunération. +Mais les rémunérations pratiquées dans le secteur financier provoquent une deuxième source d'inquiétude : même si la politique de rémunérations retenue est conçue dans le respect des intérêts des actionnaires, elle peut être source d'incitations à des prises de risques excessives qui sont socialement indésirables. +En conséquence, même si les sociétés financières parviennent à trouver des solutions à leurs problèmes de gouvernance, l'intervention régulatrice du gouvernement peut malgré tout se justifier. +Supposons que les organismes régulateurs comptent sur le fait que la plupart des sociétés financières agissent dans l'intérêt des actionnaires. +Cela justifierait-il que ces sociétés soient exemptées d'appliquer des règles en vigueur qui contraignent leurs décisions en matière de prêts, d'investissements ou de réserves de capitaux ? +Non, bien sur, parce que les actionnaires ne supportent pas l'intégralité des coûts de la faillite d'une société, et, ainsi que le démontre la crise récente, la facture d'une telle débâcle doit être payée, tout au moins en partie, par les contribuables et l'économie. +Donc, des décisions trop « risquées » servent parfois les intérêts des actionnaires et il serait normal de règlementer de telles décisions, sinon nécessaire. +Encadrer les rémunérations pratiquées dans les établissements financiers découle des mêmes raisons qui ont justifié la mise en place des organismes de contrôle sur le fonctionnement de ces établissements. +Les incitations générées par les modes variables et invariables de rétribution déterminent la façon avec laquelle les managers se comportent dans le cadre autorisé par les règlementations traditionnelles directes. +Et comme les règles traditionnelles autour des décisions prises dans les affaires sont vouées à l'imperfection, encadrer la politique de rémunération peut être un outil supplémentaire pour contrôler les risques posés par le comportement des sociétés financières. +Si la politique de rémunération choisie peut avoir des incidences sur la stabilité des établissements financiers, règlementer ces choix peut aussi être utile pour préserver cette stabilité. +Les sociétés financières qui s'opposent à la réglementation des rémunérations seront probablement aussi opposées à une compensation du « micro management », s'appuyant sur l'argument que les choix de compensation devront prendre en compte des informations sur chacun des managers, informations que les régulateurs n'auront certainement pas. +Mais les règlementations sur les rémunérations peuvent améliorer la situation sans micro management en établissant des cadres standard que les établissements devront respecter mais qui leur laissera encore suffisamment de liberté pour prendre en compte les situations individuelles de chaque manager. +Par exemple, une des exigences de ces cadres standard pourrait être que les plans de rémunération excluent la possibilité pour les managers de percevoir les bénéfices des actions et options octroyées pendant une période déterminée. +Dans un tel cas, les sociétés pourraient encore rester libre de déterminer le nombre d'actions et d'options proposées à un manager, de même qu'elles pourraient modifier la période pendant laquelle toute possibilité de cession serait impossible. +Enfin, ceux qui s'opposent à une réglementation sur les rémunérations seront sûrement ceux qui nous mettront en garde contre les « conséquences fortuites ». +Mais ces mises en garde ne feront pas long feu. +Nous avons vu au cours de ces dernières années les conséquences réelles et coûteuses d'un système de compensation qui laissait les sociétés libres d'établir leur propre politique de rémunération. +Devons nous croire que ces conséquences sont préférables aux conséquences fortuites d'une réglementation en matière de rémunération ? +Les arguments spéculatifs sur d'éventuelles conséquences involontaires ne devraient pas mettre un frein aux efforts entrepris pour éviter les dysfonctionnements résultant de politiques de rémunération défectueuses. +Les établissements financiers ne devraient pas garder la liberté de créer des incitations perverses qui sont un risque pour nous tous. +Pas de bouée de sauvetage pour les détenteurs d'obligations ! +On s'attend maintenant à ce que l'Etat vienne au secours de celles jugées "trop grande pour couler". +Mais jusqu'à quel point doit-il intervenir ? +Ainsi les détenteurs d'obligation d'AIG, de la Bank of America, du Citigroup et de Fannie Mae ont été totalement couverts grâce à l'intervention de l'Etat en faveur de ces institutions, alors que leurs actionnaires ont subi des pertes importantes. +Cela a été la même chose au Royaume-Uni, en Europe et ailleurs. +Les détenteurs d'obligations ont été épargnés parce que l'Etat a souvent décidé d'injecter des liquidités en échange d'actions ordinaires ou privilégiées subordonnées aux créances des détenteurs d'obligations ou encore d'améliorer leur bilan en rachetant ou en garantissant la valeur de leurs actifs. +Deux éléments poussent un Etat à sauver une institution financière et à protéger ses créanciers. +D'une part les déposants et les créanciers étant libres de retirer leur capital à tout moment, le parapluie de l'Etat peut s'avérer nécessaire pour éviter une panique bancaire susceptible de s'étendre aux autres institutions. +Aussi, l'Etat aurait-il peut-être intérêt à garantir implicitement ou explicitement leurs créances. +La Censure à Hongkong +On ne voit aucune botte militaire défiler au pas dans les centres commerciaux raffinés de Hongkong, mais dans le fond de l'air, une bouffée de totalitarisme est bien perceptible. +Les expressions révélatrices sont sur toutes les lèvres : discussions sur la nécessité des lois anti-subversion, contrôle de la presse, gouvernement fort, ajustement aux nouvelles réalités de Hongkong. +Tout le monde regarde vers le grand voisin du nord pour trouver une orientation et râle contre l'opportunisme. +La majeure partie du globe a cessé de s'intéresser à Hongkong après 1997 quand l'"Anschluss" avec la Chine n'a pas produit immédiatement de grands bouleversements. +Au cours des deux dernières années, cependant, le rythme de l'intégration à la République populaire de Chine s'est intensifié de manière décisive. +La vie quotidienne du South China Morning Post , le principal quotidien de langue anglaise de Hongkong, et de ce fait un indicateur politique manifeste, offre une vue sur de qui se passe dans toutes les institutions de Hongkong. +L'atmosphère du journal a commencé à s'assombrir de manière notable quand ses journalistes-phares furent écartés, les uns après les autres. +Il serait exagéré de comparer cette situation à la façon dont les nazis s'emparèrent des institutions en Allemagne dans les années 1930, et à la façon dont tout le monde tomba d'accord à l'époque, parce que personne n'a encore été déporté en camp de concentration. +Hongkong reste une ville riche et prospère. +Et pourtant, la dictature de Beijing fait sentir sa présence, même si ce n'est que par ses intermédiaires et collaborateurs. +Avant de choisir de faire entendre ma protestation auprès du rédacteur en chef qui m'a sacqué récemment, j'étais moi aussi coupable et complice. +Je me suis tu quand le plus célèbre dessinateur du journal, Larry Feign, fut injustement renvoyé et je me suis même encore tu après le renvoi du meilleur auteur satirique du quotidien, Nury Vittachi. +Je n'ai ressenti le malaise qu'au renvoi et au remplacement du journaliste britannique, Jonathan Fenby. +" Moi, ça va ", me disais-je , " ils me laissent encore écrire ce que je veux... " +Ma position de chef du bureau de Beijing m'isolait des luttes du siège lointain de Hongkong. +De plus, travailler à Beijing est en soi un combat tenace sur le plan de la conscience et du compromis. +Les journalistes étrangers sont sous surveillance constante et prennent le risque de mettre en danger leurs contacts. +Ce qui implique qu'ils se mettent rapidement à éviter les sujets difficiles tels que la répression dont fait l'objet Falun Gong et ses partisans. +Peu à peu, on remarque aussi un changement dans le comportement des collègues de Hongkong. +Quand le gouvernement propose d'introduire des lois contre la subversion et renforce son contrôle sur la fonction publique, ils se mettent à surveiller leurs propos et se gardent bien de mentionner les pressions subies d'en haut. +Les rumeurs chuchotées sur les interférences quotidiennes de la direction ne se confirment qu'en privé. +Certains ont réagi de manière opportuniste, constatant qu'ainsi, avec la disparition de collègues talentueux, leur avancement hiérarchique devenait possible. +De fait, le rédacteur en chef de renommée internationale, Willy Lam, fut remplacé par un homme du continent, Wang Xiangwei. +Ceux qui organisèrent ce coup espéraient qu'il les mènerait à un avenir meilleur pour eux-mêmes ; ceux qui signèrent la pétition de protestation furent limogés peu de temps après. +La direction a alors commencé à propager la rumeur insidieuse des besoins du journal en hommes capables de " composer " avec les sensibilités du parti communiste. +Curieusement, certains officiels de Beijing se sont plaints des manoeuvres grossières de ceux qu'on avait envoyé gérer le bureau de Hongkong. +Il semble que l'empressement à collaborer de certains eût tôt fait de surpasser les exigences du parti. +Le ton du journal commença à évoluer, devenant de plus en plus déférent à l'égard des dirigeants chinois. +Les reportages devinrent de plus en plus insipides. +La direction invoqua les vertus de l'écriture pour permettre aux lecteurs de lire entre les lignes. +Ces bouleversements se sont accentués ces derniers mois. +Même le photographe du bureau remarqua bientôt des changements dans les choix photographiques. +Les bureaux des Affaires de Hongkong et Macao prirent en main les correspondants du journal basés sur le continent, exigeant qu'ils soient remplacés par des Chinois de souche. +Puis ils se mêlèrent d'offrir des conseils en matière de journalisme en échange de services tels que la mise en contact avec les officiels. +En dépit de la direction évidente que tout cela prenait, les réactions individuelles varièrent. +Certains continuèrent de nier les faits, s'indignant si le sujet était abordé, tandis que d'autres se dirent qu'en gardant un profil bas et en faisant des concessions, la crise se résorberait.. +Une sorte d'apathie s'est abattue sur Hongkong, dans la fonction publique tout particulièrement. +Le monde des affaires reste peu touché et continue de parler de manière optimiste des possibilités créées par une intégration plus resserrée avec le continent. +Mais Hongkong abandonne ainsi la position unique et exceptionnelle qu'elle détenait dans la civilisation chinoise. +À mesure que d'autres villes chinoises se libèrent et renforcent leur confiance en elles-mêmes, Hongkong abandonne, soumise, les libertés qu'elle détenait autrefois avec fierté. +En 1997, la Chine promettait de préserver ces libertés pour les cinquante ans à venir sous l'égide de la devise du " un seul pays, deux systèmes ". +Maintenant Hongkong elle-même défait ce système. +Nombre de ses magnats (dont Robert Kuok, qui contrôle le South Morning China Post ) se débarrassent de leur autonomie au nom des affaires - même quand cela n'est pas exigé. +Ils se montrent sourds aux valeurs de ce qu'ils sacrifient. +Les impondérables de la liberté détermineront la vitalité et l'avenir de Hongkong. +Malheureusement, des telles pertes ne figurent pas dans les rapports de pertes et profits des comptables. +Des barrages sur les fleuves de Chine +Dans le Yunnan coulent trois grands fleuves asiatiques : le Mekong, le Salween (ou Nu), et le Jinsha. +Tous prennent leur source sur le grand plateau tibétain et coulent parallèlement de l'angle nord-ouest de la province jusqu'au sud-est asiatique. +Ce sont les derniers fleuves intouchés de Chine, néanmoins désignés pour être sacrifiés à l'insatiable soif de puissance du pays. +Des projets envisagent l'érection de dizaines de barrages le long de leur sinueux cours à travers les montagnes du Yunnan. +J'ai eu l'occasion de voir un de ces fleuves ainsi que le site envisagé pour l'un des barrages les plus controversés du pays, lors d'une récente randonnée à travers l'étonnante Gorge du tigre bondissant, au nord de la ville de Lijiang, dans le nord du Yunnan. +Pendant sa descente depuis le toit du monde, la rivière Jinsha, affluent du puissant Yangtze, cascade à travers cette gorge d'une quinzaine de kilomètres en direction de Shanghai et de la mer de Chine orientale. +Si, ou plutôt quand le barrage sera érigé sur la rivière, il contribuera à l'effort énergétique des villes et des usines du littoral chinois. +Le soleil était haut au-dessus des neiges de la Montagne du dragon de jade quand mon guide pointa son doigt en direction de la gorge et désigna les eaux marron qui bouillonnaient à des centaines de mètres en-dessous de nous. +"C'est là qu'ils vont construire le barrage," déclara Xiao Chun, un Naxi de 17 ans, membre d'une des 22 minorités ethniques du Yunnan. +"Ce sera très mauvais pour nous. +Il y aura beaucoup de pollution. +J'espère que ça n'arrivera pas." +Le barrage aura son utilité. +Le lac Dianchi, près de Kunming, la capitale de la province, est si diminué et pollué que la ville est confrontée à une grave pénurie d'eau. +L'eau de la Gorge du tigre bondissant sera déviée pour alimenter le lac Dianchi, sans lequel Kunming ne prospèrera pas. +Alors que la Chine cherche à maintenir son moteur économique, les barrages et l'énergie hydraulique représentent une alternative plus propre au charbon. +La Chine envisage de doubler sa capacité d'énergie hydroélectrique à plus de 120 GW d'ici 2010 et de construire plus de projets liés à l'énergie hydraulique pendant au moins encore 20 ans. +Les experts estiment que seul un quart de l'énergie hydraulique de la Chine a été canalisé. +Pourtant les coûts pourraient surpasser les bénéfices. +Le nord-ouest du Yunnan est l'une des région du monde possédant la plus grande diversité biologique ; il abrite la moitié des espèces animales de Chine et un quart de ses espèces végétales. +Les portions de ces écosystèmes qui ne seront pas noyées par le barrage seront perturbées à coup sûr, de manière potentiellement désastreuse. +Une inquiétude plus immédiate est l'immense quantité de gens qu'il faudra reloger quand les réservoirs inonderont les vallées densément peuplées de la région. +Depuis 1949, 16 millions de personnes ont été déplacées à cause de réservoirs. +Quelque 10 millions d'entre elles vivent encore dans la pauvreté. +À la Gorge du tigre bondissant, où seulement 100 000 habitants devront être déplacés, les occupants craignent qu'on leur ordonne de monter plus haut sur les flancs escarpés de la montagne pour ouvrir des terres marginales de 900 à 2 800 mètres. +Les opposants au barrage, notamment les groupes écologistes indigènes qui arrivent à se faire entendre, ont mené une bataille apparemment victorieuse pour protéger la Gorge du tigre bondissant et la Salween (ou rivière Nu). +Début 2005, trois ans après qu'une nouvelle loi sur l'évaluation de l'impact environnemental a été votée, le Bureau de protection de l'environnement d'État a ordonné l'arrêt de 30 vastes projets, dont 26 installations d'énergie hydroélectrique qui n'avaient pas fourni les évaluations de l'impact environnemental appropriées. +Parmi les projets suspendus figurait le premier barrage sur la Nu/Salween. +Ces efforts semblent avoir fait naître une grande sensibilité environnementale parmi les dirigeants du pays. +Le gouvernement a récemment appelé à un développement plus équilibré, proposant même un "indice vert" pour mesurer la croissance. +Le premier Ministre Wen Jiabao a déclaré qu'il a l'intention de voir plus de "développement scientifique" dans l'approche qu'a la Chine de ses problèmes, et a même appelé à un arrêt temporaire du barrage sur la rivière Salween (Nu). +Les écologistes ont été autorisés à participer à une audition publique sur le projet de la Gorge du tigre bondissant, une première pour la Chine. +Malheureusement, le parti communiste souffle le chaud et le froid quand il s'agit de tolérer ce genre d'activités civiques. +Le parti, alarmé par les"révolutions colorées" qui ont renversé les dirigeants post-soviétiques en Géorgie, Ukraine et au Kirghizstan, met un frein aux organisations non-gouvernementales nationales de peur qu'elles aussi ne deviennent les catalyseurs de soulèvements populaires. +Le soutien pour un "développement vert" à l'intérieur d'organisations du gouvernement central, comme le Bureau de protection de l'environnement, offre peu d'assurance d'un contrepoids efficace. +"Nous devons nous aiguiser les dents," a affirmé Pan Yue, directeur adjoint du Bureau de protection de l'environnement quand l'agence a fait arrêter les projets de barrages. +Mais la Chine a connu une décentralisation constante des pouvoirs ces dernières années, ce qui rend difficile pour le Bureau de protection de l'environnement d'exercer une influence au niveau régional et local. +En effet, les gouvernements locaux paraissent moins effrayés par les dents de Beijing qu'auparavant. +Lorsque les frontières ont été négociées pour le Parc des trois rivières parallèles, classé au patrimoine de l'humanité par l'UNESCO en 2003, les autorités locales ont gagné un combat pour en exclure la Gorge du tigre bondissant, car elles savaient qu'un barrage à cet endroit triplerait les revenus fiscaux. +Le pays a instamment besoin de maintenir un taux de croissance annuel de plus de 9% pour faire rempart contre le désordre social. +Le résultat en est que la Chine se consomme lentement elle-même, et qu'il se pourrait bien qu'aucun grand espace chinois ne demeure intouché. +Vaines proclamations +Le Sommet mondial sur le développement durable qui se tient actuellement à Johannesburg envisage comme prévu de prendre nombre d'engagements spectaculaires, mais ce n'est que vaine agitation. +Car si le terme de "développement" concerne le développement humain au sens large, le seul qui vaille est celui qui permet aux peuples de la Terre de vivre en paix dans le respect des droits fondamentaux de l'homme. +Il y a peu de chance que l'action internationale puisse faire cesser la violation de ces droits dans la majorité des pays de la planète, notamment chez ceux qui s'efforcent de faire du Sommet de la Terre une boite de résonance des critiques formulées à l'encontre des pays riches pour la faiblesse de leur engagement dans la lutte contre la pauvreté dans le monde ou pour la protection de l'environnement. +Nous pourrions au moins nous réjouir de ce que ces deux thèmes, la pauvreté et l'environnement, sont les sujets principaux de ce sommet. +C'est un progrès par rapport aux obsessions habituelles des premiers lobbies en faveur du développement durable, comme le supposé épuisement des matières premières, l'incapacité de la planète à nourrir une population croissante ou encore la biodiversité. +La majorité des commentateurs lucides ont souligné les exagérations outrancières des écologistes. +L'économie nous apprend que lorsque la demande croit les prix augmentent, ce qui entraîne - hormis les manoeuvres spéculatives à court terme - une diminution de la demande et une augmentation de l'offre (y compris l'offre de produits de substitution). +A cause de ce mécanisme, aucun des scénarios apocalyptiques des années 1960 et 70 (souvenons-nous des prévisions du Club de Rome) ne s'est réalisé. +Sur le long terme, le prix de presque toutes les ressources minières a baissé. +Le monde ne risque pas de se trouver en manque dans ce domaine. +Les prophéties de famine imminente à l'échelle de la planète étaient tout aussi dépourvues de fondement. +Les famines surviennent, mais elles surviennent rarement, sinon jamais, dans les démocraties. +De l'époque des collectivisations en URSS dans les années 30 jusqu'à la politique raciste menée aujourd'hui au Zimbabwe par le président Mugabe, les famines sont la conséquence de la guerre civile ou d'extravagances idéologiques. +Le climat peut certes aggraver la situation, mais les gouvernements démocratiques ont les moyens de faire face grâce à la mondialisation du commerce et à l'existence de surplus alimentaires dans beaucoup de régions agricoles. +Et en ce qui concerne la biodiversité, la première espèce menacée est l'espèce humaine. +L'aide internationale peut contribuer à traiter les deux problèmes voisins que sont la pauvreté et la dégradation de l'environnement. +Ainsi, les pays riches devraient diminuer leurs subventions agricoles et s'ouvrir davantage aux exportations du Tiers monde. +L'action internationale peut aussi aider à réduire les problèmes écologiques au niveau de la planète. +Il existe beaucoup d'exemples de ce type d'action, comme le protocole de Montréal relatif à la réduction de la couche d'ozone. +Il est regrettable que les USA se soient retirés du protocole de Kyoto destiné à combattre le réchauffement de la planète, plutôt que d'essayer de le faire évoluer vers une solution liée à l'économie de marché, très éloignée des mécanismes de régulation que les bureaucrates aiment tant. +Mais la lutte contre la pauvreté et la dégradation de l'environnement, par exemple l'amélioration de l'accès à l'eau potable, qui concerne des milliards de personnes dans le Tiers monde dépend d'abord de facteurs locaux. +Le respect de la loi, du droit de propriété, de la liberté d'entreprendre, de la liberté d'expression et de manifester, dépendent avant tout de la situation locale. Il en est de même pour quantité d'autres droits fondamentaux mentionnés dans les nombreuses conventions internationales signées par la presque totalité des pays participant au Sommet de la Terre, mais qu'ils bafouent au grand jour. +Le respect des droits de l'homme n'est pas seulement un moyen de lutte contre la pauvreté et la dégradation de l'environnement, c'est aussi un outil majeur, souvent le plus important, pour améliorer le bien-être et le développement des populations. +Les événements de ces douze derniers mois montrent que le premier danger qui menace l'humanité n'est pas la dégradation de l'environnement, mais les conflits qui jettent les hommes les uns contre les autres. +Malheureusement, intervient le respect dévolu aux souverainetés nationales. De ce fait, la marge de manoeuvre laissée à l'action internationale en faveur des droits de l'homme dans les nombreux pays où ils sont violés, est très limitée. +C'est pourquoi les proclamations tonitruantes qui vont sans doute couronner le Sommet de la Terre sont vouées à l'échec. +Quand la vieille Europe éternue, la nouvelle Europe s'enrhume +Deux pays -- la Hongrie et l'Ukraine -- ont déjà demandé des plans de soutien de taille. +Plusieurs autres pays vont sans doute en faire autant dans le courant du mois qui vient, si le gel des marchés du crédit se prolonge. +Et si cette situation devait durer jusqu'à la fin de l'année, ce qui n'est pas à exclure, beaucoup d'autres pays seraient en butte à des crises bancaires graves. +Au cours des vingt dernières années, l'Europe de l'Est a entrepris de vastes réformes et adopté le processus global d'intégration financière. +Les banques étrangères, notamment celles de l'Europe de l'Ouest, ont pénétré ses marchés avec une rapidité et une force sans précédent et sont progressivement allé jusqu'à tendre la main à des petites et moyennes entreprises, sujettes à risque, ainsi qu'à aider les gens à acheter leur maison et à monter leur affaire. +A présent, ces pays sont à la merci de la prospérité financière. +Jusqu'ici, les pays de l'Europe émergente ont extraordinairement bien résisté aux compressions financières internationales et sont parvenu à endiguer le ralentissement d'immenses marchés de l'exportation et la hausse des taux d'emprunt. +Mais aucune économie de marché ouverte n'est capable de survivre à la fermeture totale des marchés du crédit. +Peut-être ces pays sont-ils devenus trop tributaires du crédit à taux réduit, mais c'est une tendance dont ils n'ont pas le monopole. +Certaines des banques étrangères sont en train de retirer leurs avoirs liquides des filiales qu'ils ont en Europe de l'Est. +Selon la Banque de Russie, les banques extérieures à ce pays ont retiré plus de 10 milliards de dollars, pour le seul mois de septembre, ce que corroborent d'autres banques centrales. +Pour faire bonne mesure, Raiffeisen International a annoncé qu'elle soutenait sa filiale ukrainienne, la banque Aval, en lui allouant 180 millions d'euros de plus. +Les comportements, vis à vis de leurs filiales, des autres banques centrales mères, présentes dans la région, seront fonction de la tournure que prendra la crise en Europe occidentale. +Mais les plans de sauvetage en Europe de l'Ouest risquent d'aggraver la situation de l'Europe émergente. +La plupart des banques mères implantées dans la région sont susceptibles de profiter de ces mesures, mais il n'est pas dit qu'elles les traduisent nécessairement en soutien à leurs filiales à l'étranger. +En fait, on court le danger que ces sauvetages ne s'accomplissent au détriment de l'Europe de l'Est. +Plusieurs Etats ont déclaré que l'argent des contribuables ne servira pas à approvisionner les opérations à l'étranger. +Les Etats de l'Europe émergente auront, bien sûr, leur rôle à jouer dans la stabilisation de leurs propres systèmes financiers. +Mais à ce stade, ils n'ont plus vraiment les coudées franches. +Beaucoup n'ont pas l'assise financière suffisante pour répondre aux formidables pressions des marchés financiers. +La proposition par la Hongrie d'accorder une garantie générale des dépôts et de cautionner les fonds des marchés interbancaires, est peu crédible. +Pour surmonter cette crise, l'Europe émergente a besoin d'une aide extérieure. +D'abord et avant tout, il faut que les dirigeants d'Europe de l'Ouest veillent à ce que la crise soit éradiquée définitivement et nombre d'observateurs doutent qu'ils aient fait tout le nécessaire. +Ensuite, il faut qu'ils empêchent les mesures de crise déjà prises de léser les filiales en Europe de l'Est, qu'elles soient dans l'Union européenne ou en dehors. +Enfin, il faut qu'ils joignent leurs forces, comme en Hongrie, à celles des institutions financières internationales dans le relèvement de l'économie. +Ce qui s'est passé en Géorgie, à la suite du récent conflit avec la Russie, peut servir d'exemple. +Le FMI a déployé une ligne de crédits d'urgence pour soutenir la monnaie, la Banque mondiale a coordonné des dispositifs d'exonérations (dont beaucoup ont été financés par les Etats-Unis et l'Union européenne) et la Banque européenne pour la reconstruction et le développement a mis ses compétences en service pour conduire le redressement du système financier. +Le programme de la Géorgie n'est pas tout à fait réglé et, d'un pays à l'autre, le contexte est variable, mais manifestement, on peut aller loin avec les instruments de base. +Pourtant, il nous faudra davantage de ressources et d'instruments nouveaux. +Le cas de la Hongrie montre que l'Union européenne peut ajuster un instrument existant -- le soutien de la balance des paiements -- et s'en servir de façon créative. +Pour les pays hors Union européenne, comme la Turquie et l'Ukraine, des idées inédites sont instamment requises. +Il ne devrait y avoir aucune ambiguïté sur ce qui est en jeu. +Il a échappé à l'attention générale qu'au cours des dernières années, l'Europe de l'Est, Russie comprise, a battu les Etats-Unis et le Royaume Uni en termes de marchés à l'exportation, les siens étant les plus performants de la zone euro. +Nombre de ces marchés doivent maintenant lutter contre un ralentissement, voire une croissance négative. +De plus, les entreprises de l'Europe de l'Ouest ont fait des investissements d'une ampleur qu'on n'aurait pas imaginée auparavant. diff --git a/mosesdecoder/scripts/ems/example/data/run.hierarchical.sh b/mosesdecoder/scripts/ems/example/data/run.hierarchical.sh new file mode 100644 index 0000000000000000000000000000000000000000..3c2a455a48a5f0274bd3bb8158eb362aa1e0e8aa --- /dev/null +++ b/mosesdecoder/scripts/ems/example/data/run.hierarchical.sh @@ -0,0 +1,6 @@ +EMS_DIR=/home/hieu/workspace/github/mosesdecoder/scripts/ems + +nice $EMS_DIR/experiment.perl -exec -config=config.hierarchical +#nice $EMS_DIR/experiment.perl -exec -continue=1 + + diff --git a/mosesdecoder/scripts/ems/example/data/test-ref.en.sgm b/mosesdecoder/scripts/ems/example/data/test-ref.en.sgm new file mode 100644 index 0000000000000000000000000000000000000000..8aa97ae5bf1290e0eca136f589cd68eb09ddb4c2 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/data/test-ref.en.sgm @@ -0,0 +1,157 @@ + + + + Illhaeusern... finally + +

+ Illhaeusern has finally regained its path to victory on its own soil after a long period of draught. + Without playing a great match, the Yellow and Black have created the most occasions and managed to turn one of these into the match winner. + The rhythm was not very steady during the match and the attackers found it hard to express themselves. +

+

+ After a first attempt by the guest captain Kauffmann who narrowly missed the goal from a far shot, Illhaeusern went on to take a slight lead and in turn Fonderflick from afar, then with Hirn from high, Romain with the tip of his foot or again Diebold came to tickle the Dannemarie defence. + At the front, there was a midfield block that allowed just the centre forward Riahi at the forefront of the attack. + The beginning of the second half was decisive with the first two occasions dominated by Riahi and Temporale for Dannemarie, immediately after the score was opened for Illhaeuserns by Marais, well positioned to pick up a ball bounced off an initial attempt by Diebold (53'). + But the Illhaeusern striker did not enjoy his success for long and was forced to return to the locker room a dozen minutes later, leaving his team-mates numerically inferior. + But Dannemarie could not profit and could not cause any major problems to the Illhaeusern Eleven who just fell back a little to make its defence more "compact", except in the very last few seconds of the game where, after a big mess, the ball went very near the crosspiece. +

+
+ + + Sarkozy meets angry fishermen. + +

+ Before leaving for the United States, Nicolas Sarkozy is going to make a trip to Brittany. + Facing the display of force by the fishermen who on Monday had badly disturbed the access to several ports in Brittany and Normandy, on Tuesday morning at Guilvinec port, in Finistère, the president of the Republic has decided to yield and to meet their representatives. + The latter have promised to accept "with a constructive spirit" and they hope he "will arrive with practical proposals". +

+

+ A presidential visit which occurs at the same time as the general meeting of the "crisis committee" created by fishermen in Brittany to come up with measures of addressing the soaring prices of oil, which peaked at an average of more than 1.14 Euro per litre. + According to the Elysée spokesman David Martinon, the president "will discuss with them solutions that can be devised to help their enterprise to recover competitiveness and secure employment conditions and sailors' remuneration" +

+

+ Nicolas Sarkozy is expected with determination by the fishermen. + On Tuesday morning, they conducted slow driving operations in the Morbihan and Calvados, causing traffic jams for almost 10 km. + The leisure craft harbour of Quiberon was also blocked, but the roads to Belle-Isle were not blocked. + A filtering roadblock was set up on the Quiberon peninsula. +

+

+ The sailors have already shown their determination on Monday by burning, since dawn, tires and pallets in front of the fuel depots at the port of Brest and Lorient, while demonstrations were taking place in Concarneau or Saint-Brieuc. + The movement has spread to other ports on the Atlantic coast and on the Channel, such as Sables d'Olonne in Vendée, where trawlers remained docked at the quayside or Le Havre, where about twenty boats blocked any movement of any merchant ships. +

+

+ Fishermen in La Turballe and Croisic, in Loire-Atlantique, in the evening stopped the blockade of the important Total refinery at Donges. + Those at Boulogne-sur-Mer have decided to wait until after the meeting at the ministry on Wednesday to decide on possible actions. +

+

+ In Guilvinec, the "crisis committee" has to decide on Tuesday whether to comply with the movement and its participation in the planned meeting at the Ministry of Agriculture and Fisheries in Paris. + But some Breton fishermen do not want to be represented by the officials of the National Committee of Fisheries, which did not support their movement. + "The strike will continue" because "the fishermen will not give up" and "do not want to have to move onto Paris", for example, announced Liliane Cariou, president of the Fisheries Committee of Lorient. +

+

+ Professional fishermen, who pay no taxes on diesel, currently pay about 50 cents per litre but believe that the threshold of profitability for a vessel is achieved with diesel fuel prices less than 0.30 Euro per litre . +

+
+ + + Paul Newman the Magnificent + +

+ The unforgettable interpreter of "Butch Cassidy and the Kid" died as a result of cancer at the age of 83, in his home in Connecticut. + Hillary and Bill Clinton, Nicolas Sarkozy, George Clooney, Julia Roberts, Robert Redford or Sam Mendes paid tribute to the cinema legend and devoted actor, Paul Newman, who died at the age of 83. +

+
+ + + Embraer maintains its delivery forecast for 2008 + +

+ The Brazilian aircraft manufacturer is counting on 215 planes to be delivered this year despite threats of recession hanging over the global economy. +

+

+ The fourth largest global aircraft manufacturer, Embraer will maintain its delivery forecast for 2008 with 215 aircraft delivered, reaffirmed Fredrico Fleury Curado, its chairman. + In the first semester, the manufacturer has delivered 97 aircraft. + The Brazilian manufacturer put a lot of hope on the Chinese market especially for its aircraft range of 30 to 120 seats. + To date, Embraer delivered 41 aircraft to Chinese customers in eight years. +

+
+ + + AIG would cede more than 15% of its assets + +

+ The International American Insurance Group, that the U.S. monetary authorities have refloated, plans to sell more than 15% of its assets to repay the $85 billion that were advanced to it, according to the Sunday edition of the Financial Times. + AIG is ready to explore the sale of most of its activities beyond its international life insurance and its pension business in the United States, said the newspaper quoting sources close to the case. + The administration board of AIG met on Sunday evening to consider possible cessations, according to the FT. + No confirmation could be obtained from AIG. + The assets which AIG plans to cede include its leasing subsidiary Air International Lease Financial Corp., its participation of 59% in the reinsured Transatlantic Holdings, and its property portfolio in addition to its private equity investments, the FT added. + No final decision has been taken on these disposals, the FT continued. + AIG must quickly find the funds to repay the loan of 85 billion that it has with the Federal Reserve or else risk seeing the U.S. authorities take 80% of its shares, diluting the proportion due to current shareholders. +

+
+ + + Analysis Paris Historical of the Meeting Morning Historic Morning Meeting + +

+ The New York Stock Exchange showed a historical fall on Monday after the rejection by the House of Representatives of the Paulson plan to rescue the banks: the Dow Jones lost 6.98%, a loss never seen before approaching 800 points, and Nasdaq 9.14%. + The Dow Jones Industrial Average (DJIA) fell by 777.68 points to 10365.45 points. + In terms of points, the biggest drop in its history (684.81 points) had previously been recorded on 17 September 2001, the day of the resumption of trade after the terrorist attacks of Sept. 11. + The Nasdaq index, mainly technological, has lost 199.61 points to 1983.73 and the expanded Standard & Poor's 500 index 8.81% (or 106.85 points) to 1106.55 points, according to final closing figures. + Already suffering a depression at the beginning of the meeting, Wall Street went down after the unexpected rejection by the House of Representatives of the rescue plan for banks that was to inject some stability in the markets. + With 228 votes against and 205 for, the delegates have refused to Treasury Secretary Henry Paulson the resources he asked for. + Nearly two out of three Republicans rejected his plan. + "This is a bad signal for the market, which saw the Congress failing to adopt a plan, "said Lindsey Piegża of FTN Financial. + "This shows how much the market relied on this plan," she added, fearing that a draft adopted in several days time can be "too late". + "If the project is effectively dead (...) then the relay will be quickly passed to the Fed (i.e. the U.S. central bank) and other central banks to manage the crisis which would further tighten the credit conditions", predicted Brian Bethune, chief economist at Global Insight. + And further accentuating the sense of urgency, "each day that passes sees the fall of another financial institution" in the United States, emphasised Mrs Piegża. + After the bankruptcy of Washington Mutual on Friday, the authorities have organized the takeover of Wachovia's banking activities by its rival Citigroup. + In Europe, the crisis has accelerated sharply, pushing for emergency interventions by banks in the United Kingdom, Benelux, Iceland and Germany, a sign that the markets face "not only a crisis in U.S., but a global crisis", added the analyst from FTN Financial. + The bond market has climbed sharply. + The performance of 10-year Treasury bond fell to 3.632%, against 3.827% on Friday evening, and the 30-year bond to 4.161%, against 4.357% on the previous day. +

+
+ + + Obama, who won on points the first televised duel + +

+ To the first debate on Friday between the two candidates for the White House has succeeded another to see who, John McCain or Barack Obama, won. + Not surprisingly, the campaign headquarters of the Republicans and the Democrats have declared their own victory in the televised duel which was watched by a third of American families. +

+

+ The political analyst David Gergen believes that John McCain's performance, though admirable, was not "brilliant" enough to enable it to reverse its decline in the polls five weeks from the presidential election. + The Gallup, whose opinion poll published on Saturday gives a five points lead to Obama (49% against 44% for McCain), judges that the Democrats have pulled their own on Thursday. +

+

+ According to a CBS poll, among the undecided voters, who are those that count, Obama has won 39% of respondents, while 25% of them give victory to McCain. + Obama should be able to confirm his lead on Thursday with the expected good performance of his fellow candidate, Joseph Biden, during the first and only public debate with his rival, Sarah Palin. + "It would be a mistake to underestimate her. + She has good instincts nonetheless", warned Bill Clinton this weekend. +

+

+ The septuagenarian McCain has repeatedly put forward his unquestionable experience in foreign policy, while stressing the "naivety" of his opponent on these issues that were at the heart of this initial face-to-face debate. + "Senator Obama does not seem to understand that ..." he accused several times. + "I do not believe that Senator Obama has the experience and knowledge necessary to be president," he also assured. + An angle of attack hammered yesterday in Republican television advertisements. +

+

+ Obama, himself, has stressed that he represented the future. + Without disassembling, he was concise and precise. + He put forward his ability to make the right decisions and to restore the image of the United States in the world. + "McCain has never understood, while Obama, if", argued this weekend, a Democratic spot criticizing the Republican of not taking the whole measure of the impact of the crisis on the "American on the streets". +

+

+ "During the ninety-ten minute debate, John McCain had much to say about me, but nothing about you, Obama denounced yesterday to 20 000 people assembled for an electoral meeting in North Carolina in the pouring rain. + He did not even utter the words "middle class" or "workers". "The financial crisis clearly gives an advantage to Obama, who is considered by Americans as the most likely to save the economy on the brink of a precipice. + "The coming week could be a turning point", estimated yesterday the influential Democratic Senator Charles Schumer. + The Democratic representative Rahm Emanuel, an alumnus of the Clinton administration, compared the "good economic instincts" of Obama to those of Bill Clinton during the 1998 financial crisis. + For the Democratic candidate, the current crisis "is the final verdict of eight years of poor economic policies implemented by George Bush and supported by Senator McCain". +

+

+ Reaffirming that he would still reduce the taxes of 95% of the Americans despite the turmoil on Wall Street, the senator from Illinois also reported that the achievement of the country's energy independence by promoting renewable energy was his first priority, together with the establishment of a system of health insurance. + McCain, he wanted to build a cluster of 45 nuclear plants by 2030. + Cautious, both candidates have dodged questions about the financial rescue plan of 700 billion dollars (470 billion Euro) adopted yesterday by Congress and extremely unpopular. +

+
+
diff --git a/mosesdecoder/scripts/ems/example/data/test-src.fr.sgm b/mosesdecoder/scripts/ems/example/data/test-src.fr.sgm new file mode 100644 index 0000000000000000000000000000000000000000..ed5856a74b92b14bdd3dda355a769e6baaa9d95c --- /dev/null +++ b/mosesdecoder/scripts/ems/example/data/test-src.fr.sgm @@ -0,0 +1,157 @@ + + + + Illhaeusern... enfin + +

+ Illhaeusern a enfin retrouvé le chemin de la victoire sur son terrain après une longue période de disette. + Sans faire un grand match, les Jaunes et Noirs se sont créés le plus grand nombre d'occasions et ont réussi à en transformer une pour le gain du match. + Le rythme n'était pas très soutenu durant cette rencontre où les attaquants ont eu du mal à s'exprimer. +

+

+ Après une première tentative du capitaine visiteur Kauffmann qui frôlait la lucarne sur un tir de loin, Illhaeusern allait prendre légèrement l'ascendant et tour à tour Fonderflick de loin, puis avec Hirn au-dessus, Romain du bout du pied ou encore Diebold venaient chatouiller la défense de Dannemarie. + En face, on faisait bloc au milieu de terrain et on laissait juste le remuant Riahi à la pointe de l'attaque. + Le début de seconde mi-temps allait être décisif avec d'abord deux occasions signées Riahi et Temporale pour Dannemarie, et aussitôt après l'ouverture du score pour les Illhousiens par Marais, bien positionné pour reprendre une balle repoussée sur une première tentative de Diebold (53e'). + Mais le buteur Illhousiens ne pourra pas savourer son bonheur longtemps et sera obligé de regagner les vestiaires une douzaine de minutes plus tard et laisser ainsi ses coéquipiers en infériorité numérique. + Mais Dannemarie ne saura pas en profiter et ne posera pas de gros problèmes à un Onze illhousien qui a juste reculé un peu pour "compacter" sa défense, hormis dans les toutes dernières secondes de jeu où, après un gros cafouillage, la balle passait très près de la transversale. +

+
+ + + Sarkozy à la rencontre des pêcheurs en colère + +

+ Avant de s'envoler pour les Etats-Unis, Nicolas Sarkozy va faire un détour par la Bretagne. + Face à la démonstration de force des pêcheurs qui ont fortement perturbé lundi les accès de plusieurs ports bretons et normands, le président de la République a décidé de se rendre mardi matin au port du Guilvinec, dans le Finistère, pour y rencontrer leurs représentants. + Ces derniers ont promis de l'accueillir "dans un esprit constructif" et espèrent qu'il "viendra avec des propositions concrètes". +

+

+ Une visite présidentielle qui tombe au même moment quune assemblée générale du "comité de crise" créé par les pêcheurs bretons pour obtenir des mesures face à l'envolée des prix du gazole, qui a atteint un record à plus de 1,14 euro par litre en moyenne. + Selon le porte-parole de lElysée David Martinon, le président "discutera avec eux des solutions qui peuvent être imaginées pour aider leurs entreprises à retrouver de la compétitivité et pour sécuriser les conditions d'emplois et de rémunération des marins". +

+

+ Nicolas Sarkozy est attendu de pied ferme par les pêcheurs. + Mardi matin, ils ont mené des opérations escargots dans le Morbihan et le Calvados, occasionnant des bouchons de près de 10 km. + Le port de plaisance de Quiberon était également bloqué, mais les liaisons vers Belle-île pas stoppées. + Un barrage filtrant a été mis en cours sur la presqu'île de Quiberon. +

+

+ Les marins ont déjà montré lundi leur détermination en brûlant, dès l'aube, des pneus et des palettes devant les dépôts de carburants des ports de Brest, et Lorient, tandis que des manifestations se déroulaient à Concarneau ou Saint-Brieuc. + Le mouvement s'est propagé à d'autres ports de la façade Atlantique et de la Manche, comme aux Sables d'Olonne, en Vendée, où les chalutiers sont restés à quai, ou au Havre, où une vingtaine de bateaux ont bloqué les mouvements des navires de commerce. +

+

+ Les pêcheurs de La Turballe et du Croisic, en Loire-Atlantique, ont stoppé dans la soirée le blocus de l'importante raffinerie Total de Donges. + Ceux de Boulogne-sur-Mer ont décidé d'attendre la tenue de la réunion de mercredi au ministère pour décider d'éventuelles actions. +

+

+ Au Guilvinec, le "comité de crise" doit en effet décider mardi des suites à donner au mouvement et de sa participation à lentrevue prévue au ministère de l'Agriculture et de la Pêche à Paris. + Mais certains pêcheurs bretons ne veulent pas être représentés par des responsables du comité national des pêches, qui n'a pas soutenu leur mouvement. + "La grève va se poursuivre" car "les pêcheurs ne lâcheront rien" et "ne souhaitent pas se déplacer à Paris", a par exemple annoncé Liliane Cariou, la présidente du comité des pêches de Lorient. +

+

+ Les pêcheurs professionnels, qui ne paient pas de taxes sur le gazole, paient actuellement environ 50 centimes par litre mais ils estiment que le seuil de rentabilité d'un bateau n'est atteint qu'avec un gazole inférieur à 0,30 euro le litre. +

+
+ + + Paul Newman le magnifique + +

+ L'inoubliable interprète de "Butch Cassidy et le Kid" est mort des suites d'un cancer, à l'âge de 83 ans, dans sa maison du Connecticut. + Hillary et Bill Clinton, Nicolas Sarkozy, George Clooney, Julia Roberts, Robert Redford ou encore Sam Mendes ont salué la légende du cinéma et l'acteur engagé, Paul Newman, décédé à l'âge de 83 ans. +

+
+ + + Embraer maintient ses prévisions de livraison en 2008 + +

+ L'avionneur brésilien table sur 215 avions livrés cette année malgré les menaces de récession qui planent sur l'économie mondiale. +

+

+ Le quatrième constructeur aéronautique mondial, Embraer, maintient ses prévisions de livraisons pour 2008 avec 215 appareils livrés, a réaffirmé Fredrico Fleury Curado, son président. + Au premier semestre, l'avionneur a livré 97 avions. + Le constructeur brésilien espère beaucoup du marché chinois notamment pour ses avions de la gamme allant de 30 à 120 sièges. + A ce jour, Embraer a livré 41 appareils à des clients chinois en huit ans. +

+
+ + + AIG envisagerait de céder plus de 15% de ses actifs + +

+ L'assureur American International Group, que les autorités monétaires américaines ont renfloué, envisage de céder plus de 15% de ses actifs afin de rembourser les 85 milliards de dollars qui lui ont été avancés, selon l'édition dominicale du Financial Times. + AIG est prêt à étudier la vente de la plupart de ses activités au-delà de son assurance-vie à l'international et de son activité retraite aux Etats-Unis, précise le journal qui cite des sources proches du dossier. + Le conseil d'administration d'AIG s'est réuni dimanche dans la soirée pour examiner d'éventuelles cessions, selon le FT. + Aucune confirmation n'a pu être obtenue auprès d'AIG. + Les actifs dont AIG envisage de se séparer comprennent sa filiale de leasing aérien International Lease Financial Corp., sa participation de 59% dans le réassureur Transatlantic Holdings ainsi que son portefeuille immobilier et ses investissements dans le private equity, ajoute le FT. + Aucune décision définitive n'a été prise sur ces cessions, poursuit le FT. + AIG doit rapidement réaliser des liquidités pour rembourser le prêt de 85 milliards que lui a consenti la Réserve fédérale au risque de voir les autorités américaines prendre 80% de son capital, diluant à due proportion les actuels actionnaires. +

+
+ + + Analyse Paris Historique de la séance Morning Meeting Historique Morning Meeting + +

+ La Bourse de New York a accusé une chute historique lundi après le rejet par la Chambre des Représentants du plan Paulson de sauvetage des banques: le Dow Jones a perdu 6,98%, soit une perte jamais vue approchant les 800 points, et le Nasdaq 9,14%. + Le Dow Jones Industrial Average (DJIA) a plongé de 777,68 points à 1O.365,45 points. + En termes de points, la plus forte chute de son histoire (684,81 points) avait auparavant été enregistrée le 17 septembre 2001, jour de la reprise des échanges après les attentats terroristes du 11 septembre. + L'indice Nasdaq, à dominante technologique, a cédé 199,61 points à 1.983,73 et l'indice élargi Standard & Poor's 500 8,81% (soit 106,85 points), à 1.106,55 points, selon les chiffres définitifs de clôture. + Déjà déprimée en début de séance, Wall Street s'est enfoncée après le rejet inattendu par la Chambre des représentants du plan de sauvetage des banques qui devait permettre de retrouver un peu de stabilité sur les marchés. + Par 228 voix contre et 205 pour, les représentants ont refusé au secrétaire au Trésor Henry Paulson les moyens qu'il demandait. + Près de deux républicains sur trois ont rejeté son plan. + "C'est un mauvais signal envoyé au marché, qui voit le Congrès incapable d'adopter un plan", a estimé Lindsey Piegza, de FTN Financial. + "Cela montre à quel point le marché comptait sur ce plan", a-t-elle ajouté, craignant qu'un projet adopté dans plusieurs jours n'arrive "trop tard". + "Si le projet est effectivement moribond (...) alors le relais sera passé rapidement à la Fed (la banque centrale américaine, ndlr) et aux autres banques centrales pour gérer la crise, ce qui resserrerait davantage les conditions de crédit", a prévenu Brian Bethune, chef économiste à Global Insight. + Et accentuant davantage le sentiment d'urgence, "chaque jour qui passe apporte la chute d'une institution financière" aux Etats-Unis, a souligné Mme Piegza. + Après la faillite de Washington Mutual vendredi, les autorités ont organisé le rachat des activités bancaires de Wachovia par sa rivale Citigroup. + En Europe, la crise s'est brusquement accélérée, poussant à des interventions d'urgence au profit de banques au Royaume-Uni, au Bénélux, en Islande et en Allemagne, signe que les marchés font face "non seulement à une crise américaine, mais à une crise mondiale", a ajouté l'analyste de FTN Financial. + Le marché obligataire a fortement monté. + Le rendement du bon du Trésor à 10 ans a reculé à 3,632%, contre 3,827% vendredi soir, et celui à 30 ans à 4,161%, contre 4,357% la veille. +

+
+ + + Obama, vainqueur aux points du premier duel télévisé + +

+ Au premier débat de vendredi entre les deux candidats à la Maison Blanche a succédé un autre pour savoir qui, de John McCain ou Barack Obama, l'a emporté. + Sans surprise, les QG de campagne républicain et démocrate ont proclamé leur propre victoire dans ce duel télévisé qui aurait été suivi par un tiers des familles américaines. +

+

+ L'analyste politique David Gergen estime que la prestation de John McCain, bien qu'honorable, n'a pas été assez "brillante" pour lui permettre d'enrayer sa baisse dans les sondages à cinq semaines des présidentielles. + L'institut Gallup, dont une enquête d'opinion publiée samedi accorde une avance de cinq points à Obama (49 % contre 44 % à McCain), juge que c'est le démocrate qui a tiré son épingle du jeu. +

+

+ Chez les électeurs indécis, qui sont ceux qui comptent, Obama est sorti vainqueur pour 39 % des sondés, tandis que 25 % d'entre eux accordent la victoire à McCain, selon un sondage CBS. + Obama devrait pouvoir confirmer son avance jeudi avec la bonne prestation attendue de son colistier, Joseph Biden, lors du premier et unique débat public avec sa rivale, Sarah Palin. + "Ce serait une erreur de la sous-estimer. + Elle est a de bons instincts", a toutefois prévenu Bill Clinton ce week-end. +

+

+ Le septuagénaire McCain n'a eu de cesse de mettre en avant son indiscutable expérience en matière de politique étrangère, tout en soulignant la "naïveté" de son adversaire sur ces questions qui étaient au cœur de ce premier face-à-face. + "Le sénateur Obama ne semble pas comprendre que..." a-t-il accusé a plusieurs reprises. + "Je ne crois pas que le sénateur Obama ait l'expérience et le savoir nécessaires pour être président", a-t-il aussi assuré. + Un angle d'attaque martelé depuis hier dans les publicités télévisées républicaines. +

+

+ Obama a, lui, souligné qu'il représentait l'avenir. + Sans se démonter, il s'est montré concis et précis. + Il a mis en avant sa capacité à prendre les bonnes décisions, et à restaurer l'image des Etats-Unis dans le monde. + "McCain n'a toujours pas compris, tandis qu'Obama, si", a rétorqué, ce week-end, un spot démocrate reprochant au républicain de ne pas avoir pris toute la mesure de l'impact de la crise sur l'"Américain de la rue". +

+

+ "Pendant les quatre-vingt-dix minutes de débat, John McCain avait beaucoup de choses à dire sur moi, mais rien sur vous, a dénoncé Obama, hier, devant 20 000 personnesrassemblées pour un meeting électoral en Caroline du Nord sous une pluie battante. + Il n'a pas même prononcé les mots "classe moyenne" ou "travailleurs"." La déroute financière avantage clairement Obama, qui est considéré par les Américains comme le plus à même de sauver l'économie au bord du précipice. + "La semaine à venir pourrait être un tournant décisif", estimait, hier, l'influent sénateur démocrate Charles Schumer. + Le représentant démocrate Rahm Emanuel, un ancien de l'administration Clinton, a comparé les "bons instincts économiques" d'Obama à ceux de Bill Clinton pendant la crise financière de 1998. + Pour le candidat démocrate, la débacle actuelle "est le verdict final de huit années d'une mauvaise politique économique mise en œuvre par George Bush et soutenue par le sénateur McCain". +

+

+ Réaffirmant qu'il parviendrait quand même à réduire les impôts de 95 % des Américains malgré les soubresauts de Wall Street, le sénateur de l'Illinois a aussi signalé que la réalisation d'une éventuelle indépendance énergétique du pays par la promotion des énergies renouvelables était sa première priorité, avec la mise en place d'un système d'assurance-santé. + McCain, lui, a souhaité construire un parc de 45 centrales nucléaires d'ici à 2030. + Prudents, les deux candidats ont esquivé les questions portant sur le plan de sauvetage financier de 700 milliards de dollars (470 milliards d'euros) adopté hier soir par le Congrès et extrêmement impopulaire. +

+
+
diff --git a/mosesdecoder/scripts/ems/example/data/weight.ini b/mosesdecoder/scripts/ems/example/data/weight.ini new file mode 100644 index 0000000000000000000000000000000000000000..e42fbb529e4593045cf20fa3153cc6a2d566b064 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/data/weight.ini @@ -0,0 +1,14 @@ +######################### +### MOSES CONFIG FILE ### +######################### + +[weight] +Distortion0= 0.3 +UnknownWordPenalty0= 1 +WordPenalty0= -1 +TranslationModel0= 0.2 0.2 0.2 0.2 +PhrasePenalty0= 0.2 +LexicalReordering0= 0.3 0.3 0.3 0.3 0.3 0.3 +LM0= 0.5 + + diff --git a/mosesdecoder/scripts/ems/example/data/weight_bilinguallm.ini b/mosesdecoder/scripts/ems/example/data/weight_bilinguallm.ini new file mode 100644 index 0000000000000000000000000000000000000000..55153e035223be76dbec395f1776358bf2c19b29 --- /dev/null +++ b/mosesdecoder/scripts/ems/example/data/weight_bilinguallm.ini @@ -0,0 +1,14 @@ +######################### +### MOSES CONFIG FILE ### +######################### + +[weight] +Distortion0= 0.3 +UnknownWordPenalty0= 1 +WordPenalty0= -1 +TranslationModel0= 0.2 0.2 0.2 0.2 +PhrasePenalty0= 0.2 +LexicalReordering0= 0.3 0.3 0.3 0.3 0.3 0.3 +LM0= 0.5 +BLMbilinguallm= 0.1 + diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/builder.js b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/builder.js new file mode 100644 index 0000000000000000000000000000000000000000..f1f42b9ac6b5073dd5f9b30adc34589f3fc353cb --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/builder.js @@ -0,0 +1,136 @@ +// script.aculo.us builder.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 + +// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// script.aculo.us is freely distributable under the terms of an MIT-style license. +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +var Builder = { + NODEMAP: { + AREA: 'map', + CAPTION: 'table', + COL: 'table', + COLGROUP: 'table', + LEGEND: 'fieldset', + OPTGROUP: 'select', + OPTION: 'select', + PARAM: 'object', + TBODY: 'table', + TD: 'table', + TFOOT: 'table', + TH: 'table', + THEAD: 'table', + TR: 'table' + }, + // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken, + // due to a Firefox bug + node: function(elementName) { + elementName = elementName.toUpperCase(); + + // try innerHTML approach + var parentTag = this.NODEMAP[elementName] || 'div'; + var parentElement = document.createElement(parentTag); + try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707 + parentElement.innerHTML = "<" + elementName + ">"; + } catch(e) {} + var element = parentElement.firstChild || null; + + // see if browser added wrapping tags + if(element && (element.tagName.toUpperCase() != elementName)) + element = element.getElementsByTagName(elementName)[0]; + + // fallback to createElement approach + if(!element) element = document.createElement(elementName); + + // abort if nothing could be created + if(!element) return; + + // attributes (or text) + if(arguments[1]) + if(this._isStringOrNumber(arguments[1]) || + (arguments[1] instanceof Array) || + arguments[1].tagName) { + this._children(element, arguments[1]); + } else { + var attrs = this._attributes(arguments[1]); + if(attrs.length) { + try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707 + parentElement.innerHTML = "<" +elementName + " " + + attrs + ">"; + } catch(e) {} + element = parentElement.firstChild || null; + // workaround firefox 1.0.X bug + if(!element) { + element = document.createElement(elementName); + for(attr in arguments[1]) + element[attr == 'class' ? 'className' : attr] = arguments[1][attr]; + } + if(element.tagName.toUpperCase() != elementName) + element = parentElement.getElementsByTagName(elementName)[0]; + } + } + + // text, or array of children + if(arguments[2]) + this._children(element, arguments[2]); + + return $(element); + }, + _text: function(text) { + return document.createTextNode(text); + }, + + ATTR_MAP: { + 'className': 'class', + 'htmlFor': 'for' + }, + + _attributes: function(attributes) { + var attrs = []; + for(attribute in attributes) + attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) + + '="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'"') + '"'); + return attrs.join(" "); + }, + _children: function(element, children) { + if(children.tagName) { + element.appendChild(children); + return; + } + if(typeof children=='object') { // array can hold nodes and text + children.flatten().each( function(e) { + if(typeof e=='object') + element.appendChild(e); + else + if(Builder._isStringOrNumber(e)) + element.appendChild(Builder._text(e)); + }); + } else + if(Builder._isStringOrNumber(children)) + element.appendChild(Builder._text(children)); + }, + _isStringOrNumber: function(param) { + return(typeof param=='string' || typeof param=='number'); + }, + build: function(html) { + var element = this.node('div'); + $(element).update(html.strip()); + return element.down(); + }, + dump: function(scope) { + if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope + + var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " + + "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " + + "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+ + "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+ + "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+ + "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/); + + tags.each( function(tag){ + scope[tag] = function() { + return Builder.node.apply(Builder, [tag].concat($A(arguments))); + }; + }); + } +}; \ No newline at end of file diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/controls.js b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/controls.js new file mode 100644 index 0000000000000000000000000000000000000000..7392fb664c08a6350e59eb6ac6bc2013af03428c --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/controls.js @@ -0,0 +1,965 @@ +// script.aculo.us controls.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 + +// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// (c) 2005-2009 Ivan Krstic (http://blogs.law.harvard.edu/ivan) +// (c) 2005-2009 Jon Tirsen (http://www.tirsen.com) +// Contributors: +// Richard Livsey +// Rahul Bhargava +// Rob Wills +// +// script.aculo.us is freely distributable under the terms of an MIT-style license. +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +// Autocompleter.Base handles all the autocompletion functionality +// that's independent of the data source for autocompletion. This +// includes drawing the autocompletion menu, observing keyboard +// and mouse events, and similar. +// +// Specific autocompleters need to provide, at the very least, +// a getUpdatedChoices function that will be invoked every time +// the text inside the monitored textbox changes. This method +// should get the text for which to provide autocompletion by +// invoking this.getToken(), NOT by directly accessing +// this.element.value. This is to allow incremental tokenized +// autocompletion. Specific auto-completion logic (AJAX, etc) +// belongs in getUpdatedChoices. +// +// Tokenized incremental autocompletion is enabled automatically +// when an autocompleter is instantiated with the 'tokens' option +// in the options parameter, e.g.: +// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' }); +// will incrementally autocomplete with a comma as the token. +// Additionally, ',' in the above example can be replaced with +// a token array, e.g. { tokens: [',', '\n'] } which +// enables autocompletion on multiple tokens. This is most +// useful when one of the tokens is \n (a newline), as it +// allows smart autocompletion after linebreaks. + +if(typeof Effect == 'undefined') + throw("controls.js requires including script.aculo.us' effects.js library"); + +var Autocompleter = { }; +Autocompleter.Base = Class.create({ + baseInitialize: function(element, update, options) { + element = $(element); + this.element = element; + this.update = $(update); + this.hasFocus = false; + this.changed = false; + this.active = false; + this.index = 0; + this.entryCount = 0; + this.oldElementValue = this.element.value; + + if(this.setOptions) + this.setOptions(options); + else + this.options = options || { }; + + this.options.paramName = this.options.paramName || this.element.name; + this.options.tokens = this.options.tokens || []; + this.options.frequency = this.options.frequency || 0.4; + this.options.minChars = this.options.minChars || 1; + this.options.onShow = this.options.onShow || + function(element, update){ + if(!update.style.position || update.style.position=='absolute') { + update.style.position = 'absolute'; + Position.clone(element, update, { + setHeight: false, + offsetTop: element.offsetHeight + }); + } + Effect.Appear(update,{duration:0.15}); + }; + this.options.onHide = this.options.onHide || + function(element, update){ new Effect.Fade(update,{duration:0.15}) }; + + if(typeof(this.options.tokens) == 'string') + this.options.tokens = new Array(this.options.tokens); + // Force carriage returns as token delimiters anyway + if (!this.options.tokens.include('\n')) + this.options.tokens.push('\n'); + + this.observer = null; + + this.element.setAttribute('autocomplete','off'); + + Element.hide(this.update); + + Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this)); + Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this)); + }, + + show: function() { + if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update); + if(!this.iefix && + (Prototype.Browser.IE) && + (Element.getStyle(this.update, 'position')=='absolute')) { + new Insertion.After(this.update, + ''); + this.iefix = $(this.update.id+'_iefix'); + } + if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50); + }, + + fixIEOverlapping: function() { + Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)}); + this.iefix.style.zIndex = 1; + this.update.style.zIndex = 2; + Element.show(this.iefix); + }, + + hide: function() { + this.stopIndicator(); + if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update); + if(this.iefix) Element.hide(this.iefix); + }, + + startIndicator: function() { + if(this.options.indicator) Element.show(this.options.indicator); + }, + + stopIndicator: function() { + if(this.options.indicator) Element.hide(this.options.indicator); + }, + + onKeyPress: function(event) { + if(this.active) + switch(event.keyCode) { + case Event.KEY_TAB: + case Event.KEY_RETURN: + this.selectEntry(); + Event.stop(event); + case Event.KEY_ESC: + this.hide(); + this.active = false; + Event.stop(event); + return; + case Event.KEY_LEFT: + case Event.KEY_RIGHT: + return; + case Event.KEY_UP: + this.markPrevious(); + this.render(); + Event.stop(event); + return; + case Event.KEY_DOWN: + this.markNext(); + this.render(); + Event.stop(event); + return; + } + else + if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || + (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return; + + this.changed = true; + this.hasFocus = true; + + if(this.observer) clearTimeout(this.observer); + this.observer = + setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000); + }, + + activate: function() { + this.changed = false; + this.hasFocus = true; + this.getUpdatedChoices(); + }, + + onHover: function(event) { + var element = Event.findElement(event, 'LI'); + if(this.index != element.autocompleteIndex) + { + this.index = element.autocompleteIndex; + this.render(); + } + Event.stop(event); + }, + + onClick: function(event) { + var element = Event.findElement(event, 'LI'); + this.index = element.autocompleteIndex; + this.selectEntry(); + this.hide(); + }, + + onBlur: function(event) { + // needed to make click events working + setTimeout(this.hide.bind(this), 250); + this.hasFocus = false; + this.active = false; + }, + + render: function() { + if(this.entryCount > 0) { + for (var i = 0; i < this.entryCount; i++) + this.index==i ? + Element.addClassName(this.getEntry(i),"selected") : + Element.removeClassName(this.getEntry(i),"selected"); + if(this.hasFocus) { + this.show(); + this.active = true; + } + } else { + this.active = false; + this.hide(); + } + }, + + markPrevious: function() { + if(this.index > 0) this.index--; + else this.index = this.entryCount-1; + this.getEntry(this.index).scrollIntoView(true); + }, + + markNext: function() { + if(this.index < this.entryCount-1) this.index++; + else this.index = 0; + this.getEntry(this.index).scrollIntoView(false); + }, + + getEntry: function(index) { + return this.update.firstChild.childNodes[index]; + }, + + getCurrentEntry: function() { + return this.getEntry(this.index); + }, + + selectEntry: function() { + this.active = false; + this.updateElement(this.getCurrentEntry()); + }, + + updateElement: function(selectedElement) { + if (this.options.updateElement) { + this.options.updateElement(selectedElement); + return; + } + var value = ''; + if (this.options.select) { + var nodes = $(selectedElement).select('.' + this.options.select) || []; + if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select); + } else + value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal'); + + var bounds = this.getTokenBounds(); + if (bounds[0] != -1) { + var newValue = this.element.value.substr(0, bounds[0]); + var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/); + if (whitespace) + newValue += whitespace[0]; + this.element.value = newValue + value + this.element.value.substr(bounds[1]); + } else { + this.element.value = value; + } + this.oldElementValue = this.element.value; + this.element.focus(); + + if (this.options.afterUpdateElement) + this.options.afterUpdateElement(this.element, selectedElement); + }, + + updateChoices: function(choices) { + if(!this.changed && this.hasFocus) { + this.update.innerHTML = choices; + Element.cleanWhitespace(this.update); + Element.cleanWhitespace(this.update.down()); + + if(this.update.firstChild && this.update.down().childNodes) { + this.entryCount = + this.update.down().childNodes.length; + for (var i = 0; i < this.entryCount; i++) { + var entry = this.getEntry(i); + entry.autocompleteIndex = i; + this.addObservers(entry); + } + } else { + this.entryCount = 0; + } + + this.stopIndicator(); + this.index = 0; + + if(this.entryCount==1 && this.options.autoSelect) { + this.selectEntry(); + this.hide(); + } else { + this.render(); + } + } + }, + + addObservers: function(element) { + Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this)); + Event.observe(element, "click", this.onClick.bindAsEventListener(this)); + }, + + onObserverEvent: function() { + this.changed = false; + this.tokenBounds = null; + if(this.getToken().length>=this.options.minChars) { + this.getUpdatedChoices(); + } else { + this.active = false; + this.hide(); + } + this.oldElementValue = this.element.value; + }, + + getToken: function() { + var bounds = this.getTokenBounds(); + return this.element.value.substring(bounds[0], bounds[1]).strip(); + }, + + getTokenBounds: function() { + if (null != this.tokenBounds) return this.tokenBounds; + var value = this.element.value; + if (value.strip().empty()) return [-1, 0]; + var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue); + var offset = (diff == this.oldElementValue.length ? 1 : 0); + var prevTokenPos = -1, nextTokenPos = value.length; + var tp; + for (var index = 0, l = this.options.tokens.length; index < l; ++index) { + tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1); + if (tp > prevTokenPos) prevTokenPos = tp; + tp = value.indexOf(this.options.tokens[index], diff + offset); + if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp; + } + return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]); + } +}); + +Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) { + var boundary = Math.min(newS.length, oldS.length); + for (var index = 0; index < boundary; ++index) + if (newS[index] != oldS[index]) + return index; + return boundary; +}; + +Ajax.Autocompleter = Class.create(Autocompleter.Base, { + initialize: function(element, update, url, options) { + this.baseInitialize(element, update, options); + this.options.asynchronous = true; + this.options.onComplete = this.onComplete.bind(this); + this.options.defaultParams = this.options.parameters || null; + this.url = url; + }, + + getUpdatedChoices: function() { + this.startIndicator(); + + var entry = encodeURIComponent(this.options.paramName) + '=' + + encodeURIComponent(this.getToken()); + + this.options.parameters = this.options.callback ? + this.options.callback(this.element, entry) : entry; + + if(this.options.defaultParams) + this.options.parameters += '&' + this.options.defaultParams; + + new Ajax.Request(this.url, this.options); + }, + + onComplete: function(request) { + this.updateChoices(request.responseText); + } +}); + +// The local array autocompleter. Used when you'd prefer to +// inject an array of autocompletion options into the page, rather +// than sending out Ajax queries, which can be quite slow sometimes. +// +// The constructor takes four parameters. The first two are, as usual, +// the id of the monitored textbox, and id of the autocompletion menu. +// The third is the array you want to autocomplete from, and the fourth +// is the options block. +// +// Extra local autocompletion options: +// - choices - How many autocompletion choices to offer +// +// - partialSearch - If false, the autocompleter will match entered +// text only at the beginning of strings in the +// autocomplete array. Defaults to true, which will +// match text at the beginning of any *word* in the +// strings in the autocomplete array. If you want to +// search anywhere in the string, additionally set +// the option fullSearch to true (default: off). +// +// - fullSsearch - Search anywhere in autocomplete array strings. +// +// - partialChars - How many characters to enter before triggering +// a partial match (unlike minChars, which defines +// how many characters are required to do any match +// at all). Defaults to 2. +// +// - ignoreCase - Whether to ignore case when autocompleting. +// Defaults to true. +// +// It's possible to pass in a custom function as the 'selector' +// option, if you prefer to write your own autocompletion logic. +// In that case, the other options above will not apply unless +// you support them. + +Autocompleter.Local = Class.create(Autocompleter.Base, { + initialize: function(element, update, array, options) { + this.baseInitialize(element, update, options); + this.options.array = array; + }, + + getUpdatedChoices: function() { + this.updateChoices(this.options.selector(this)); + }, + + setOptions: function(options) { + this.options = Object.extend({ + choices: 10, + partialSearch: true, + partialChars: 2, + ignoreCase: true, + fullSearch: false, + selector: function(instance) { + var ret = []; // Beginning matches + var partial = []; // Inside matches + var entry = instance.getToken(); + var count = 0; + + for (var i = 0; i < instance.options.array.length && + ret.length < instance.options.choices ; i++) { + + var elem = instance.options.array[i]; + var foundPos = instance.options.ignoreCase ? + elem.toLowerCase().indexOf(entry.toLowerCase()) : + elem.indexOf(entry); + + while (foundPos != -1) { + if (foundPos == 0 && elem.length != entry.length) { + ret.push("
  • " + elem.substr(0, entry.length) + "" + + elem.substr(entry.length) + "
  • "); + break; + } else if (entry.length >= instance.options.partialChars && + instance.options.partialSearch && foundPos != -1) { + if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) { + partial.push("
  • " + elem.substr(0, foundPos) + "" + + elem.substr(foundPos, entry.length) + "" + elem.substr( + foundPos + entry.length) + "
  • "); + break; + } + } + + foundPos = instance.options.ignoreCase ? + elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : + elem.indexOf(entry, foundPos + 1); + + } + } + if (partial.length) + ret = ret.concat(partial.slice(0, instance.options.choices - ret.length)); + return "
      " + ret.join('') + "
    "; + } + }, options || { }); + } +}); + +// AJAX in-place editor and collection editor +// Full rewrite by Christophe Porteneuve (April 2007). + +// Use this if you notice weird scrolling problems on some browsers, +// the DOM might be a bit confused when this gets called so do this +// waits 1 ms (with setTimeout) until it does the activation +Field.scrollFreeActivate = function(field) { + setTimeout(function() { + Field.activate(field); + }, 1); +}; + +Ajax.InPlaceEditor = Class.create({ + initialize: function(element, url, options) { + this.url = url; + this.element = element = $(element); + this.prepareOptions(); + this._controls = { }; + arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!! + Object.extend(this.options, options || { }); + if (!this.options.formId && this.element.id) { + this.options.formId = this.element.id + '-inplaceeditor'; + if ($(this.options.formId)) + this.options.formId = ''; + } + if (this.options.externalControl) + this.options.externalControl = $(this.options.externalControl); + if (!this.options.externalControl) + this.options.externalControlOnly = false; + this._originalBackground = this.element.getStyle('background-color') || 'transparent'; + this.element.title = this.options.clickToEditText; + this._boundCancelHandler = this.handleFormCancellation.bind(this); + this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this); + this._boundFailureHandler = this.handleAJAXFailure.bind(this); + this._boundSubmitHandler = this.handleFormSubmission.bind(this); + this._boundWrapperHandler = this.wrapUp.bind(this); + this.registerListeners(); + }, + checkForEscapeOrReturn: function(e) { + if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return; + if (Event.KEY_ESC == e.keyCode) + this.handleFormCancellation(e); + else if (Event.KEY_RETURN == e.keyCode) + this.handleFormSubmission(e); + }, + createControl: function(mode, handler, extraClasses) { + var control = this.options[mode + 'Control']; + var text = this.options[mode + 'Text']; + if ('button' == control) { + var btn = document.createElement('input'); + btn.type = 'submit'; + btn.value = text; + btn.className = 'editor_' + mode + '_button'; + if ('cancel' == mode) + btn.onclick = this._boundCancelHandler; + this._form.appendChild(btn); + this._controls[mode] = btn; + } else if ('link' == control) { + var link = document.createElement('a'); + link.href = '#'; + link.appendChild(document.createTextNode(text)); + link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler; + link.className = 'editor_' + mode + '_link'; + if (extraClasses) + link.className += ' ' + extraClasses; + this._form.appendChild(link); + this._controls[mode] = link; + } + }, + createEditField: function() { + var text = (this.options.loadTextURL ? this.options.loadingText : this.getText()); + var fld; + if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) { + fld = document.createElement('input'); + fld.type = 'text'; + var size = this.options.size || this.options.cols || 0; + if (0 < size) fld.size = size; + } else { + fld = document.createElement('textarea'); + fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows); + fld.cols = this.options.cols || 40; + } + fld.name = this.options.paramName; + fld.value = text; // No HTML breaks conversion anymore + fld.className = 'editor_field'; + if (this.options.submitOnBlur) + fld.onblur = this._boundSubmitHandler; + this._controls.editor = fld; + if (this.options.loadTextURL) + this.loadExternalText(); + this._form.appendChild(this._controls.editor); + }, + createForm: function() { + var ipe = this; + function addText(mode, condition) { + var text = ipe.options['text' + mode + 'Controls']; + if (!text || condition === false) return; + ipe._form.appendChild(document.createTextNode(text)); + }; + this._form = $(document.createElement('form')); + this._form.id = this.options.formId; + this._form.addClassName(this.options.formClassName); + this._form.onsubmit = this._boundSubmitHandler; + this.createEditField(); + if ('textarea' == this._controls.editor.tagName.toLowerCase()) + this._form.appendChild(document.createElement('br')); + if (this.options.onFormCustomization) + this.options.onFormCustomization(this, this._form); + addText('Before', this.options.okControl || this.options.cancelControl); + this.createControl('ok', this._boundSubmitHandler); + addText('Between', this.options.okControl && this.options.cancelControl); + this.createControl('cancel', this._boundCancelHandler, 'editor_cancel'); + addText('After', this.options.okControl || this.options.cancelControl); + }, + destroy: function() { + if (this._oldInnerHTML) + this.element.innerHTML = this._oldInnerHTML; + this.leaveEditMode(); + this.unregisterListeners(); + }, + enterEditMode: function(e) { + if (this._saving || this._editing) return; + this._editing = true; + this.triggerCallback('onEnterEditMode'); + if (this.options.externalControl) + this.options.externalControl.hide(); + this.element.hide(); + this.createForm(); + this.element.parentNode.insertBefore(this._form, this.element); + if (!this.options.loadTextURL) + this.postProcessEditField(); + if (e) Event.stop(e); + }, + enterHover: function(e) { + if (this.options.hoverClassName) + this.element.addClassName(this.options.hoverClassName); + if (this._saving) return; + this.triggerCallback('onEnterHover'); + }, + getText: function() { + return this.element.innerHTML.unescapeHTML(); + }, + handleAJAXFailure: function(transport) { + this.triggerCallback('onFailure', transport); + if (this._oldInnerHTML) { + this.element.innerHTML = this._oldInnerHTML; + this._oldInnerHTML = null; + } + }, + handleFormCancellation: function(e) { + this.wrapUp(); + if (e) Event.stop(e); + }, + handleFormSubmission: function(e) { + var form = this._form; + var value = $F(this._controls.editor); + this.prepareSubmission(); + var params = this.options.callback(form, value) || ''; + if (Object.isString(params)) + params = params.toQueryParams(); + params.editorId = this.element.id; + if (this.options.htmlResponse) { + var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions); + Object.extend(options, { + parameters: params, + onComplete: this._boundWrapperHandler, + onFailure: this._boundFailureHandler + }); + new Ajax.Updater({ success: this.element }, this.url, options); + } else { + var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); + Object.extend(options, { + parameters: params, + onComplete: this._boundWrapperHandler, + onFailure: this._boundFailureHandler + }); + new Ajax.Request(this.url, options); + } + if (e) Event.stop(e); + }, + leaveEditMode: function() { + this.element.removeClassName(this.options.savingClassName); + this.removeForm(); + this.leaveHover(); + this.element.style.backgroundColor = this._originalBackground; + this.element.show(); + if (this.options.externalControl) + this.options.externalControl.show(); + this._saving = false; + this._editing = false; + this._oldInnerHTML = null; + this.triggerCallback('onLeaveEditMode'); + }, + leaveHover: function(e) { + if (this.options.hoverClassName) + this.element.removeClassName(this.options.hoverClassName); + if (this._saving) return; + this.triggerCallback('onLeaveHover'); + }, + loadExternalText: function() { + this._form.addClassName(this.options.loadingClassName); + this._controls.editor.disabled = true; + var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); + Object.extend(options, { + parameters: 'editorId=' + encodeURIComponent(this.element.id), + onComplete: Prototype.emptyFunction, + onSuccess: function(transport) { + this._form.removeClassName(this.options.loadingClassName); + var text = transport.responseText; + if (this.options.stripLoadedTextTags) + text = text.stripTags(); + this._controls.editor.value = text; + this._controls.editor.disabled = false; + this.postProcessEditField(); + }.bind(this), + onFailure: this._boundFailureHandler + }); + new Ajax.Request(this.options.loadTextURL, options); + }, + postProcessEditField: function() { + var fpc = this.options.fieldPostCreation; + if (fpc) + $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate'](); + }, + prepareOptions: function() { + this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions); + Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks); + [this._extraDefaultOptions].flatten().compact().each(function(defs) { + Object.extend(this.options, defs); + }.bind(this)); + }, + prepareSubmission: function() { + this._saving = true; + this.removeForm(); + this.leaveHover(); + this.showSaving(); + }, + registerListeners: function() { + this._listeners = { }; + var listener; + $H(Ajax.InPlaceEditor.Listeners).each(function(pair) { + listener = this[pair.value].bind(this); + this._listeners[pair.key] = listener; + if (!this.options.externalControlOnly) + this.element.observe(pair.key, listener); + if (this.options.externalControl) + this.options.externalControl.observe(pair.key, listener); + }.bind(this)); + }, + removeForm: function() { + if (!this._form) return; + this._form.remove(); + this._form = null; + this._controls = { }; + }, + showSaving: function() { + this._oldInnerHTML = this.element.innerHTML; + this.element.innerHTML = this.options.savingText; + this.element.addClassName(this.options.savingClassName); + this.element.style.backgroundColor = this._originalBackground; + this.element.show(); + }, + triggerCallback: function(cbName, arg) { + if ('function' == typeof this.options[cbName]) { + this.options[cbName](this, arg); + } + }, + unregisterListeners: function() { + $H(this._listeners).each(function(pair) { + if (!this.options.externalControlOnly) + this.element.stopObserving(pair.key, pair.value); + if (this.options.externalControl) + this.options.externalControl.stopObserving(pair.key, pair.value); + }.bind(this)); + }, + wrapUp: function(transport) { + this.leaveEditMode(); + // Can't use triggerCallback due to backward compatibility: requires + // binding + direct element + this._boundComplete(transport, this.element); + } +}); + +Object.extend(Ajax.InPlaceEditor.prototype, { + dispose: Ajax.InPlaceEditor.prototype.destroy +}); + +Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, { + initialize: function($super, element, url, options) { + this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions; + $super(element, url, options); + }, + + createEditField: function() { + var list = document.createElement('select'); + list.name = this.options.paramName; + list.size = 1; + this._controls.editor = list; + this._collection = this.options.collection || []; + if (this.options.loadCollectionURL) + this.loadCollection(); + else + this.checkForExternalText(); + this._form.appendChild(this._controls.editor); + }, + + loadCollection: function() { + this._form.addClassName(this.options.loadingClassName); + this.showLoadingText(this.options.loadingCollectionText); + var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); + Object.extend(options, { + parameters: 'editorId=' + encodeURIComponent(this.element.id), + onComplete: Prototype.emptyFunction, + onSuccess: function(transport) { + var js = transport.responseText.strip(); + if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check + throw('Server returned an invalid collection representation.'); + this._collection = eval(js); + this.checkForExternalText(); + }.bind(this), + onFailure: this.onFailure + }); + new Ajax.Request(this.options.loadCollectionURL, options); + }, + + showLoadingText: function(text) { + this._controls.editor.disabled = true; + var tempOption = this._controls.editor.firstChild; + if (!tempOption) { + tempOption = document.createElement('option'); + tempOption.value = ''; + this._controls.editor.appendChild(tempOption); + tempOption.selected = true; + } + tempOption.update((text || '').stripScripts().stripTags()); + }, + + checkForExternalText: function() { + this._text = this.getText(); + if (this.options.loadTextURL) + this.loadExternalText(); + else + this.buildOptionList(); + }, + + loadExternalText: function() { + this.showLoadingText(this.options.loadingText); + var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); + Object.extend(options, { + parameters: 'editorId=' + encodeURIComponent(this.element.id), + onComplete: Prototype.emptyFunction, + onSuccess: function(transport) { + this._text = transport.responseText.strip(); + this.buildOptionList(); + }.bind(this), + onFailure: this.onFailure + }); + new Ajax.Request(this.options.loadTextURL, options); + }, + + buildOptionList: function() { + this._form.removeClassName(this.options.loadingClassName); + this._collection = this._collection.map(function(entry) { + return 2 === entry.length ? entry : [entry, entry].flatten(); + }); + var marker = ('value' in this.options) ? this.options.value : this._text; + var textFound = this._collection.any(function(entry) { + return entry[0] == marker; + }.bind(this)); + this._controls.editor.update(''); + var option; + this._collection.each(function(entry, index) { + option = document.createElement('option'); + option.value = entry[0]; + option.selected = textFound ? entry[0] == marker : 0 == index; + option.appendChild(document.createTextNode(entry[1])); + this._controls.editor.appendChild(option); + }.bind(this)); + this._controls.editor.disabled = false; + Field.scrollFreeActivate(this._controls.editor); + } +}); + +//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! **** +//**** This only exists for a while, in order to let **** +//**** users adapt to the new API. Read up on the new **** +//**** API and convert your code to it ASAP! **** + +Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) { + if (!options) return; + function fallback(name, expr) { + if (name in options || expr === undefined) return; + options[name] = expr; + }; + fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' : + options.cancelLink == options.cancelButton == false ? false : undefined))); + fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' : + options.okLink == options.okButton == false ? false : undefined))); + fallback('highlightColor', options.highlightcolor); + fallback('highlightEndColor', options.highlightendcolor); +}; + +Object.extend(Ajax.InPlaceEditor, { + DefaultOptions: { + ajaxOptions: { }, + autoRows: 3, // Use when multi-line w/ rows == 1 + cancelControl: 'link', // 'link'|'button'|false + cancelText: 'cancel', + clickToEditText: 'Click to edit', + externalControl: null, // id|elt + externalControlOnly: false, + fieldPostCreation: 'activate', // 'activate'|'focus'|false + formClassName: 'inplaceeditor-form', + formId: null, // id|elt + highlightColor: '#ffff99', + highlightEndColor: '#ffffff', + hoverClassName: '', + htmlResponse: true, + loadingClassName: 'inplaceeditor-loading', + loadingText: 'Loading...', + okControl: 'button', // 'link'|'button'|false + okText: 'ok', + paramName: 'value', + rows: 1, // If 1 and multi-line, uses autoRows + savingClassName: 'inplaceeditor-saving', + savingText: 'Saving...', + size: 0, + stripLoadedTextTags: false, + submitOnBlur: false, + textAfterControls: '', + textBeforeControls: '', + textBetweenControls: '' + }, + DefaultCallbacks: { + callback: function(form) { + return Form.serialize(form); + }, + onComplete: function(transport, element) { + // For backward compatibility, this one is bound to the IPE, and passes + // the element directly. It was too often customized, so we don't break it. + new Effect.Highlight(element, { + startcolor: this.options.highlightColor, keepBackgroundImage: true }); + }, + onEnterEditMode: null, + onEnterHover: function(ipe) { + ipe.element.style.backgroundColor = ipe.options.highlightColor; + if (ipe._effect) + ipe._effect.cancel(); + }, + onFailure: function(transport, ipe) { + alert('Error communication with the server: ' + transport.responseText.stripTags()); + }, + onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls. + onLeaveEditMode: null, + onLeaveHover: function(ipe) { + ipe._effect = new Effect.Highlight(ipe.element, { + startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor, + restorecolor: ipe._originalBackground, keepBackgroundImage: true + }); + } + }, + Listeners: { + click: 'enterEditMode', + keydown: 'checkForEscapeOrReturn', + mouseover: 'enterHover', + mouseout: 'leaveHover' + } +}); + +Ajax.InPlaceCollectionEditor.DefaultOptions = { + loadingCollectionText: 'Loading options...' +}; + +// Delayed observer, like Form.Element.Observer, +// but waits for delay after last key input +// Ideal for live-search fields + +Form.Element.DelayedObserver = Class.create({ + initialize: function(element, delay, callback) { + this.delay = delay || 0.5; + this.element = $(element); + this.callback = callback; + this.timer = null; + this.lastValue = $F(this.element); + Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this)); + }, + delayedListener: function(event) { + if(this.lastValue == $F(this.element)) return; + if(this.timer) clearTimeout(this.timer); + this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000); + this.lastValue = $F(this.element); + }, + onTimerEvent: function() { + this.timer = null; + this.callback(this.element, $F(this.element)); + } +}); \ No newline at end of file diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/dragdrop.js b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/dragdrop.js new file mode 100644 index 0000000000000000000000000000000000000000..15c6dbca68ba56e5862fc38d2fd74e29aa699744 --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/dragdrop.js @@ -0,0 +1,974 @@ +// script.aculo.us dragdrop.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 + +// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// script.aculo.us is freely distributable under the terms of an MIT-style license. +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +if(Object.isUndefined(Effect)) + throw("dragdrop.js requires including script.aculo.us' effects.js library"); + +var Droppables = { + drops: [], + + remove: function(element) { + this.drops = this.drops.reject(function(d) { return d.element==$(element) }); + }, + + add: function(element) { + element = $(element); + var options = Object.extend({ + greedy: true, + hoverclass: null, + tree: false + }, arguments[1] || { }); + + // cache containers + if(options.containment) { + options._containers = []; + var containment = options.containment; + if(Object.isArray(containment)) { + containment.each( function(c) { options._containers.push($(c)) }); + } else { + options._containers.push($(containment)); + } + } + + if(options.accept) options.accept = [options.accept].flatten(); + + Element.makePositioned(element); // fix IE + options.element = element; + + this.drops.push(options); + }, + + findDeepestChild: function(drops) { + deepest = drops[0]; + + for (i = 1; i < drops.length; ++i) + if (Element.isParent(drops[i].element, deepest.element)) + deepest = drops[i]; + + return deepest; + }, + + isContained: function(element, drop) { + var containmentNode; + if(drop.tree) { + containmentNode = element.treeNode; + } else { + containmentNode = element.parentNode; + } + return drop._containers.detect(function(c) { return containmentNode == c }); + }, + + isAffected: function(point, element, drop) { + return ( + (drop.element!=element) && + ((!drop._containers) || + this.isContained(element, drop)) && + ((!drop.accept) || + (Element.classNames(element).detect( + function(v) { return drop.accept.include(v) } ) )) && + Position.within(drop.element, point[0], point[1]) ); + }, + + deactivate: function(drop) { + if(drop.hoverclass) + Element.removeClassName(drop.element, drop.hoverclass); + this.last_active = null; + }, + + activate: function(drop) { + if(drop.hoverclass) + Element.addClassName(drop.element, drop.hoverclass); + this.last_active = drop; + }, + + show: function(point, element) { + if(!this.drops.length) return; + var drop, affected = []; + + this.drops.each( function(drop) { + if(Droppables.isAffected(point, element, drop)) + affected.push(drop); + }); + + if(affected.length>0) + drop = Droppables.findDeepestChild(affected); + + if(this.last_active && this.last_active != drop) this.deactivate(this.last_active); + if (drop) { + Position.within(drop.element, point[0], point[1]); + if(drop.onHover) + drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element)); + + if (drop != this.last_active) Droppables.activate(drop); + } + }, + + fire: function(event, element) { + if(!this.last_active) return; + Position.prepare(); + + if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active)) + if (this.last_active.onDrop) { + this.last_active.onDrop(element, this.last_active.element, event); + return true; + } + }, + + reset: function() { + if(this.last_active) + this.deactivate(this.last_active); + } +}; + +var Draggables = { + drags: [], + observers: [], + + register: function(draggable) { + if(this.drags.length == 0) { + this.eventMouseUp = this.endDrag.bindAsEventListener(this); + this.eventMouseMove = this.updateDrag.bindAsEventListener(this); + this.eventKeypress = this.keyPress.bindAsEventListener(this); + + Event.observe(document, "mouseup", this.eventMouseUp); + Event.observe(document, "mousemove", this.eventMouseMove); + Event.observe(document, "keypress", this.eventKeypress); + } + this.drags.push(draggable); + }, + + unregister: function(draggable) { + this.drags = this.drags.reject(function(d) { return d==draggable }); + if(this.drags.length == 0) { + Event.stopObserving(document, "mouseup", this.eventMouseUp); + Event.stopObserving(document, "mousemove", this.eventMouseMove); + Event.stopObserving(document, "keypress", this.eventKeypress); + } + }, + + activate: function(draggable) { + if(draggable.options.delay) { + this._timeout = setTimeout(function() { + Draggables._timeout = null; + window.focus(); + Draggables.activeDraggable = draggable; + }.bind(this), draggable.options.delay); + } else { + window.focus(); // allows keypress events if window isn't currently focused, fails for Safari + this.activeDraggable = draggable; + } + }, + + deactivate: function() { + this.activeDraggable = null; + }, + + updateDrag: function(event) { + if(!this.activeDraggable) return; + var pointer = [Event.pointerX(event), Event.pointerY(event)]; + // Mozilla-based browsers fire successive mousemove events with + // the same coordinates, prevent needless redrawing (moz bug?) + if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return; + this._lastPointer = pointer; + + this.activeDraggable.updateDrag(event, pointer); + }, + + endDrag: function(event) { + if(this._timeout) { + clearTimeout(this._timeout); + this._timeout = null; + } + if(!this.activeDraggable) return; + this._lastPointer = null; + this.activeDraggable.endDrag(event); + this.activeDraggable = null; + }, + + keyPress: function(event) { + if(this.activeDraggable) + this.activeDraggable.keyPress(event); + }, + + addObserver: function(observer) { + this.observers.push(observer); + this._cacheObserverCallbacks(); + }, + + removeObserver: function(element) { // element instead of observer fixes mem leaks + this.observers = this.observers.reject( function(o) { return o.element==element }); + this._cacheObserverCallbacks(); + }, + + notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag' + if(this[eventName+'Count'] > 0) + this.observers.each( function(o) { + if(o[eventName]) o[eventName](eventName, draggable, event); + }); + if(draggable.options[eventName]) draggable.options[eventName](draggable, event); + }, + + _cacheObserverCallbacks: function() { + ['onStart','onEnd','onDrag'].each( function(eventName) { + Draggables[eventName+'Count'] = Draggables.observers.select( + function(o) { return o[eventName]; } + ).length; + }); + } +}; + +/*--------------------------------------------------------------------------*/ + +var Draggable = Class.create({ + initialize: function(element) { + var defaults = { + handle: false, + reverteffect: function(element, top_offset, left_offset) { + var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02; + new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur, + queue: {scope:'_draggable', position:'end'} + }); + }, + endeffect: function(element) { + var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0; + new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, + queue: {scope:'_draggable', position:'end'}, + afterFinish: function(){ + Draggable._dragging[element] = false + } + }); + }, + zindex: 1000, + revert: false, + quiet: false, + scroll: false, + scrollSensitivity: 20, + scrollSpeed: 15, + snap: false, // false, or xy or [x,y] or function(x,y){ return [x,y] } + delay: 0 + }; + + if(!arguments[1] || Object.isUndefined(arguments[1].endeffect)) + Object.extend(defaults, { + starteffect: function(element) { + element._opacity = Element.getOpacity(element); + Draggable._dragging[element] = true; + new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); + } + }); + + var options = Object.extend(defaults, arguments[1] || { }); + + this.element = $(element); + + if(options.handle && Object.isString(options.handle)) + this.handle = this.element.down('.'+options.handle, 0); + + if(!this.handle) this.handle = $(options.handle); + if(!this.handle) this.handle = this.element; + + if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) { + options.scroll = $(options.scroll); + this._isScrollChild = Element.childOf(this.element, options.scroll); + } + + Element.makePositioned(this.element); // fix IE + + this.options = options; + this.dragging = false; + + this.eventMouseDown = this.initDrag.bindAsEventListener(this); + Event.observe(this.handle, "mousedown", this.eventMouseDown); + + Draggables.register(this); + }, + + destroy: function() { + Event.stopObserving(this.handle, "mousedown", this.eventMouseDown); + Draggables.unregister(this); + }, + + currentDelta: function() { + return([ + parseInt(Element.getStyle(this.element,'left') || '0'), + parseInt(Element.getStyle(this.element,'top') || '0')]); + }, + + initDrag: function(event) { + if(!Object.isUndefined(Draggable._dragging[this.element]) && + Draggable._dragging[this.element]) return; + if(Event.isLeftClick(event)) { + // abort on form elements, fixes a Firefox issue + var src = Event.element(event); + if((tag_name = src.tagName.toUpperCase()) && ( + tag_name=='INPUT' || + tag_name=='SELECT' || + tag_name=='OPTION' || + tag_name=='BUTTON' || + tag_name=='TEXTAREA')) return; + + var pointer = [Event.pointerX(event), Event.pointerY(event)]; + var pos = this.element.cumulativeOffset(); + this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) }); + + Draggables.activate(this); + Event.stop(event); + } + }, + + startDrag: function(event) { + this.dragging = true; + if(!this.delta) + this.delta = this.currentDelta(); + + if(this.options.zindex) { + this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0); + this.element.style.zIndex = this.options.zindex; + } + + if(this.options.ghosting) { + this._clone = this.element.cloneNode(true); + this._originallyAbsolute = (this.element.getStyle('position') == 'absolute'); + if (!this._originallyAbsolute) + Position.absolutize(this.element); + this.element.parentNode.insertBefore(this._clone, this.element); + } + + if(this.options.scroll) { + if (this.options.scroll == window) { + var where = this._getWindowScroll(this.options.scroll); + this.originalScrollLeft = where.left; + this.originalScrollTop = where.top; + } else { + this.originalScrollLeft = this.options.scroll.scrollLeft; + this.originalScrollTop = this.options.scroll.scrollTop; + } + } + + Draggables.notify('onStart', this, event); + + if(this.options.starteffect) this.options.starteffect(this.element); + }, + + updateDrag: function(event, pointer) { + if(!this.dragging) this.startDrag(event); + + if(!this.options.quiet){ + Position.prepare(); + Droppables.show(pointer, this.element); + } + + Draggables.notify('onDrag', this, event); + + this.draw(pointer); + if(this.options.change) this.options.change(this); + + if(this.options.scroll) { + this.stopScrolling(); + + var p; + if (this.options.scroll == window) { + with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; } + } else { + p = Position.page(this.options.scroll); + p[0] += this.options.scroll.scrollLeft + Position.deltaX; + p[1] += this.options.scroll.scrollTop + Position.deltaY; + p.push(p[0]+this.options.scroll.offsetWidth); + p.push(p[1]+this.options.scroll.offsetHeight); + } + var speed = [0,0]; + if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity); + if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity); + if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity); + if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity); + this.startScrolling(speed); + } + + // fix AppleWebKit rendering + if(Prototype.Browser.WebKit) window.scrollBy(0,0); + + Event.stop(event); + }, + + finishDrag: function(event, success) { + this.dragging = false; + + if(this.options.quiet){ + Position.prepare(); + var pointer = [Event.pointerX(event), Event.pointerY(event)]; + Droppables.show(pointer, this.element); + } + + if(this.options.ghosting) { + if (!this._originallyAbsolute) + Position.relativize(this.element); + delete this._originallyAbsolute; + Element.remove(this._clone); + this._clone = null; + } + + var dropped = false; + if(success) { + dropped = Droppables.fire(event, this.element); + if (!dropped) dropped = false; + } + if(dropped && this.options.onDropped) this.options.onDropped(this.element); + Draggables.notify('onEnd', this, event); + + var revert = this.options.revert; + if(revert && Object.isFunction(revert)) revert = revert(this.element); + + var d = this.currentDelta(); + if(revert && this.options.reverteffect) { + if (dropped == 0 || revert != 'failure') + this.options.reverteffect(this.element, + d[1]-this.delta[1], d[0]-this.delta[0]); + } else { + this.delta = d; + } + + if(this.options.zindex) + this.element.style.zIndex = this.originalZ; + + if(this.options.endeffect) + this.options.endeffect(this.element); + + Draggables.deactivate(this); + Droppables.reset(); + }, + + keyPress: function(event) { + if(event.keyCode!=Event.KEY_ESC) return; + this.finishDrag(event, false); + Event.stop(event); + }, + + endDrag: function(event) { + if(!this.dragging) return; + this.stopScrolling(); + this.finishDrag(event, true); + Event.stop(event); + }, + + draw: function(point) { + var pos = this.element.cumulativeOffset(); + if(this.options.ghosting) { + var r = Position.realOffset(this.element); + pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY; + } + + var d = this.currentDelta(); + pos[0] -= d[0]; pos[1] -= d[1]; + + if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) { + pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft; + pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop; + } + + var p = [0,1].map(function(i){ + return (point[i]-pos[i]-this.offset[i]) + }.bind(this)); + + if(this.options.snap) { + if(Object.isFunction(this.options.snap)) { + p = this.options.snap(p[0],p[1],this); + } else { + if(Object.isArray(this.options.snap)) { + p = p.map( function(v, i) { + return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this)); + } else { + p = p.map( function(v) { + return (v/this.options.snap).round()*this.options.snap }.bind(this)); + } + }} + + var style = this.element.style; + if((!this.options.constraint) || (this.options.constraint=='horizontal')) + style.left = p[0] + "px"; + if((!this.options.constraint) || (this.options.constraint=='vertical')) + style.top = p[1] + "px"; + + if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering + }, + + stopScrolling: function() { + if(this.scrollInterval) { + clearInterval(this.scrollInterval); + this.scrollInterval = null; + Draggables._lastScrollPointer = null; + } + }, + + startScrolling: function(speed) { + if(!(speed[0] || speed[1])) return; + this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed]; + this.lastScrolled = new Date(); + this.scrollInterval = setInterval(this.scroll.bind(this), 10); + }, + + scroll: function() { + var current = new Date(); + var delta = current - this.lastScrolled; + this.lastScrolled = current; + if(this.options.scroll == window) { + with (this._getWindowScroll(this.options.scroll)) { + if (this.scrollSpeed[0] || this.scrollSpeed[1]) { + var d = delta / 1000; + this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] ); + } + } + } else { + this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; + this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; + } + + Position.prepare(); + Droppables.show(Draggables._lastPointer, this.element); + Draggables.notify('onDrag', this); + if (this._isScrollChild) { + Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer); + Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000; + Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000; + if (Draggables._lastScrollPointer[0] < 0) + Draggables._lastScrollPointer[0] = 0; + if (Draggables._lastScrollPointer[1] < 0) + Draggables._lastScrollPointer[1] = 0; + this.draw(Draggables._lastScrollPointer); + } + + if(this.options.change) this.options.change(this); + }, + + _getWindowScroll: function(w) { + var T, L, W, H; + with (w.document) { + if (w.document.documentElement && documentElement.scrollTop) { + T = documentElement.scrollTop; + L = documentElement.scrollLeft; + } else if (w.document.body) { + T = body.scrollTop; + L = body.scrollLeft; + } + if (w.innerWidth) { + W = w.innerWidth; + H = w.innerHeight; + } else if (w.document.documentElement && documentElement.clientWidth) { + W = documentElement.clientWidth; + H = documentElement.clientHeight; + } else { + W = body.offsetWidth; + H = body.offsetHeight; + } + } + return { top: T, left: L, width: W, height: H }; + } +}); + +Draggable._dragging = { }; + +/*--------------------------------------------------------------------------*/ + +var SortableObserver = Class.create({ + initialize: function(element, observer) { + this.element = $(element); + this.observer = observer; + this.lastValue = Sortable.serialize(this.element); + }, + + onStart: function() { + this.lastValue = Sortable.serialize(this.element); + }, + + onEnd: function() { + Sortable.unmark(); + if(this.lastValue != Sortable.serialize(this.element)) + this.observer(this.element) + } +}); + +var Sortable = { + SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/, + + sortables: { }, + + _findRootElement: function(element) { + while (element.tagName.toUpperCase() != "BODY") { + if(element.id && Sortable.sortables[element.id]) return element; + element = element.parentNode; + } + }, + + options: function(element) { + element = Sortable._findRootElement($(element)); + if(!element) return; + return Sortable.sortables[element.id]; + }, + + destroy: function(element){ + element = $(element); + var s = Sortable.sortables[element.id]; + + if(s) { + Draggables.removeObserver(s.element); + s.droppables.each(function(d){ Droppables.remove(d) }); + s.draggables.invoke('destroy'); + + delete Sortable.sortables[s.element.id]; + } + }, + + create: function(element) { + element = $(element); + var options = Object.extend({ + element: element, + tag: 'li', // assumes li children, override with tag: 'tagname' + dropOnEmpty: false, + tree: false, + treeTag: 'ul', + overlap: 'vertical', // one of 'vertical', 'horizontal' + constraint: 'vertical', // one of 'vertical', 'horizontal', false + containment: element, // also takes array of elements (or id's); or false + handle: false, // or a CSS class + only: false, + delay: 0, + hoverclass: null, + ghosting: false, + quiet: false, + scroll: false, + scrollSensitivity: 20, + scrollSpeed: 15, + format: this.SERIALIZE_RULE, + + // these take arrays of elements or ids and can be + // used for better initialization performance + elements: false, + handles: false, + + onChange: Prototype.emptyFunction, + onUpdate: Prototype.emptyFunction + }, arguments[1] || { }); + + // clear any old sortable with same element + this.destroy(element); + + // build options for the draggables + var options_for_draggable = { + revert: true, + quiet: options.quiet, + scroll: options.scroll, + scrollSpeed: options.scrollSpeed, + scrollSensitivity: options.scrollSensitivity, + delay: options.delay, + ghosting: options.ghosting, + constraint: options.constraint, + handle: options.handle }; + + if(options.starteffect) + options_for_draggable.starteffect = options.starteffect; + + if(options.reverteffect) + options_for_draggable.reverteffect = options.reverteffect; + else + if(options.ghosting) options_for_draggable.reverteffect = function(element) { + element.style.top = 0; + element.style.left = 0; + }; + + if(options.endeffect) + options_for_draggable.endeffect = options.endeffect; + + if(options.zindex) + options_for_draggable.zindex = options.zindex; + + // build options for the droppables + var options_for_droppable = { + overlap: options.overlap, + containment: options.containment, + tree: options.tree, + hoverclass: options.hoverclass, + onHover: Sortable.onHover + }; + + var options_for_tree = { + onHover: Sortable.onEmptyHover, + overlap: options.overlap, + containment: options.containment, + hoverclass: options.hoverclass + }; + + // fix for gecko engine + Element.cleanWhitespace(element); + + options.draggables = []; + options.droppables = []; + + // drop on empty handling + if(options.dropOnEmpty || options.tree) { + Droppables.add(element, options_for_tree); + options.droppables.push(element); + } + + (options.elements || this.findElements(element, options) || []).each( function(e,i) { + var handle = options.handles ? $(options.handles[i]) : + (options.handle ? $(e).select('.' + options.handle)[0] : e); + options.draggables.push( + new Draggable(e, Object.extend(options_for_draggable, { handle: handle }))); + Droppables.add(e, options_for_droppable); + if(options.tree) e.treeNode = element; + options.droppables.push(e); + }); + + if(options.tree) { + (Sortable.findTreeElements(element, options) || []).each( function(e) { + Droppables.add(e, options_for_tree); + e.treeNode = element; + options.droppables.push(e); + }); + } + + // keep reference + this.sortables[element.identify()] = options; + + // for onupdate + Draggables.addObserver(new SortableObserver(element, options.onUpdate)); + + }, + + // return all suitable-for-sortable elements in a guaranteed order + findElements: function(element, options) { + return Element.findChildren( + element, options.only, options.tree ? true : false, options.tag); + }, + + findTreeElements: function(element, options) { + return Element.findChildren( + element, options.only, options.tree ? true : false, options.treeTag); + }, + + onHover: function(element, dropon, overlap) { + if(Element.isParent(dropon, element)) return; + + if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) { + return; + } else if(overlap>0.5) { + Sortable.mark(dropon, 'before'); + if(dropon.previousSibling != element) { + var oldParentNode = element.parentNode; + element.style.visibility = "hidden"; // fix gecko rendering + dropon.parentNode.insertBefore(element, dropon); + if(dropon.parentNode!=oldParentNode) + Sortable.options(oldParentNode).onChange(element); + Sortable.options(dropon.parentNode).onChange(element); + } + } else { + Sortable.mark(dropon, 'after'); + var nextElement = dropon.nextSibling || null; + if(nextElement != element) { + var oldParentNode = element.parentNode; + element.style.visibility = "hidden"; // fix gecko rendering + dropon.parentNode.insertBefore(element, nextElement); + if(dropon.parentNode!=oldParentNode) + Sortable.options(oldParentNode).onChange(element); + Sortable.options(dropon.parentNode).onChange(element); + } + } + }, + + onEmptyHover: function(element, dropon, overlap) { + var oldParentNode = element.parentNode; + var droponOptions = Sortable.options(dropon); + + if(!Element.isParent(dropon, element)) { + var index; + + var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only}); + var child = null; + + if(children) { + var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap); + + for (index = 0; index < children.length; index += 1) { + if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) { + offset -= Element.offsetSize (children[index], droponOptions.overlap); + } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) { + child = index + 1 < children.length ? children[index + 1] : null; + break; + } else { + child = children[index]; + break; + } + } + } + + dropon.insertBefore(element, child); + + Sortable.options(oldParentNode).onChange(element); + droponOptions.onChange(element); + } + }, + + unmark: function() { + if(Sortable._marker) Sortable._marker.hide(); + }, + + mark: function(dropon, position) { + // mark on ghosting only + var sortable = Sortable.options(dropon.parentNode); + if(sortable && !sortable.ghosting) return; + + if(!Sortable._marker) { + Sortable._marker = + ($('dropmarker') || Element.extend(document.createElement('DIV'))). + hide().addClassName('dropmarker').setStyle({position:'absolute'}); + document.getElementsByTagName("body").item(0).appendChild(Sortable._marker); + } + var offsets = dropon.cumulativeOffset(); + Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'}); + + if(position=='after') + if(sortable.overlap == 'horizontal') + Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'}); + else + Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'}); + + Sortable._marker.show(); + }, + + _tree: function(element, options, parent) { + var children = Sortable.findElements(element, options) || []; + + for (var i = 0; i < children.length; ++i) { + var match = children[i].id.match(options.format); + + if (!match) continue; + + var child = { + id: encodeURIComponent(match ? match[1] : null), + element: element, + parent: parent, + children: [], + position: parent.children.length, + container: $(children[i]).down(options.treeTag) + }; + + /* Get the element containing the children and recurse over it */ + if (child.container) + this._tree(child.container, options, child); + + parent.children.push (child); + } + + return parent; + }, + + tree: function(element) { + element = $(element); + var sortableOptions = this.options(element); + var options = Object.extend({ + tag: sortableOptions.tag, + treeTag: sortableOptions.treeTag, + only: sortableOptions.only, + name: element.id, + format: sortableOptions.format + }, arguments[1] || { }); + + var root = { + id: null, + parent: null, + children: [], + container: element, + position: 0 + }; + + return Sortable._tree(element, options, root); + }, + + /* Construct a [i] index for a particular node */ + _constructIndex: function(node) { + var index = ''; + do { + if (node.id) index = '[' + node.position + ']' + index; + } while ((node = node.parent) != null); + return index; + }, + + sequence: function(element) { + element = $(element); + var options = Object.extend(this.options(element), arguments[1] || { }); + + return $(this.findElements(element, options) || []).map( function(item) { + return item.id.match(options.format) ? item.id.match(options.format)[1] : ''; + }); + }, + + setSequence: function(element, new_sequence) { + element = $(element); + var options = Object.extend(this.options(element), arguments[2] || { }); + + var nodeMap = { }; + this.findElements(element, options).each( function(n) { + if (n.id.match(options.format)) + nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode]; + n.parentNode.removeChild(n); + }); + + new_sequence.each(function(ident) { + var n = nodeMap[ident]; + if (n) { + n[1].appendChild(n[0]); + delete nodeMap[ident]; + } + }); + }, + + serialize: function(element) { + element = $(element); + var options = Object.extend(Sortable.options(element), arguments[1] || { }); + var name = encodeURIComponent( + (arguments[1] && arguments[1].name) ? arguments[1].name : element.id); + + if (options.tree) { + return Sortable.tree(element, arguments[1]).children.map( function (item) { + return [name + Sortable._constructIndex(item) + "[id]=" + + encodeURIComponent(item.id)].concat(item.children.map(arguments.callee)); + }).flatten().join('&'); + } else { + return Sortable.sequence(element, arguments[1]).map( function(item) { + return name + "[]=" + encodeURIComponent(item); + }).join('&'); + } + } +}; + +// Returns true if child is contained within element +Element.isParent = function(child, element) { + if (!child.parentNode || child == element) return false; + if (child.parentNode == element) return true; + return Element.isParent(child.parentNode, element); +}; + +Element.findChildren = function(element, only, recursive, tagName) { + if(!element.hasChildNodes()) return null; + tagName = tagName.toUpperCase(); + if(only) only = [only].flatten(); + var elements = []; + $A(element.childNodes).each( function(e) { + if(e.tagName && e.tagName.toUpperCase()==tagName && + (!only || (Element.classNames(e).detect(function(v) { return only.include(v) })))) + elements.push(e); + if(recursive) { + var grandchildren = Element.findChildren(e, only, recursive, tagName); + if(grandchildren) elements.push(grandchildren); + } + }); + + return (elements.length>0 ? elements.flatten() : []); +}; + +Element.offsetSize = function (element, type) { + return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')]; +}; \ No newline at end of file diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/effects.js b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/effects.js new file mode 100644 index 0000000000000000000000000000000000000000..a8447c259cd1f48b153fe8e935345782c9d0ce6c --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/effects.js @@ -0,0 +1,1217 @@ +// script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 + +// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// Contributors: +// Justin Palmer (http://encytemedia.com/) +// Mark Pilgrim (http://diveintomark.org/) +// Martin Bialasinki +// +// script.aculo.us is freely distributable under the terms of an MIT-style license. +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +// converts rgb() and #xxx to #xxxxxx format, +// returns self (or first argument) if not convertable +String.prototype.parseColor = function() { + var color = '#'; + var i; + if (this.slice(0,4) == 'rgb(') { + var cols = this.slice(4,this.length-1).split(','); + i=0; + do { + color += parseInt(cols[i]).toColorPart(); + } while (++i<3); + } else { + if (this.slice(0,1) == '#') { + if (this.length==4) { + for(i=1;i<4;i++) { + color += (this.charAt(i) + this.charAt(i)).toLowerCase(); + } + } + if (this.length==7) { + color = this.toLowerCase(); + } + } + } + return (color.length==7 ? color : (arguments[0] || this)); +}; + +/*--------------------------------------------------------------------------*/ + +Element.collectTextNodes = function(element) { + return $A($(element).childNodes).collect( function(node) { + return (node.nodeType==3 ? node.nodeValue : + (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); + }).flatten().join(''); +}; + +Element.collectTextNodesIgnoreClass = function(element, className) { + return $A($(element).childNodes).collect( function(node) { + return (node.nodeType==3 ? node.nodeValue : + ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? + Element.collectTextNodesIgnoreClass(node, className) : '')); + }).flatten().join(''); +}; + +Element.setContentZoom = function(element, percent) { + element = $(element); + element.setStyle({fontSize: (percent/100) + 'em'}); + if (Prototype.Browser.WebKit) { + window.scrollBy(0,0); + } + return element; +}; + +Element.getInlineOpacity = function(element){ + return $(element).style.opacity || ''; +}; + +Element.forceRerendering = function(element) { + try { + element = $(element); + var n = document.createTextNode(' '); + element.appendChild(n); + element.removeChild(n); + } catch(e) { } +}; + +/*--------------------------------------------------------------------------*/ + +var Effect = { + _elementDoesNotExistError: { + name: 'ElementDoesNotExistError', + message: 'The specified DOM element does not exist, but is required for this effect to operate' + }, + Transitions: { + linear: Prototype.K, + sinoidal: function(pos) { + return (-Math.cos(pos*Math.PI)/2) + .5; + }, + reverse: function(pos) { + return 1-pos; + }, + flicker: function(pos) { + pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4; + return pos > 1 ? 1 : pos; + }, + wobble: function(pos) { + return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5; + }, + pulse: function(pos, pulses) { + return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5; + }, + spring: function(pos) { + return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); + }, + none: function(pos) { + return 0; + }, + full: function(pos) { + return 1; + } + }, + DefaultOptions: { + duration: 1.0, // seconds + fps: 100, // 100= assume 66fps max. + sync: false, // true for combining + from: 0.0, + to: 1.0, + delay: 0.0, + queue: 'parallel' + }, + tagifyText: function(element) { + var tagifyStyle = 'position:relative'; + if (Prototype.Browser.IE) { + tagifyStyle += ';zoom:1'; + } + + element = $(element); + $A(element.childNodes).each( function(child) { + if (child.nodeType==3) { + child.nodeValue.toArray().each( function(character) { + element.insertBefore( + new Element('span', {style: tagifyStyle}).update( + character == ' ' ? String.fromCharCode(160) : character), + child); + }); + Element.remove(child); + } + }); + }, + multiple: function(element, effect) { + var elements; + if (((typeof element == 'object') || + Object.isFunction(element)) && + (element.length)) { + elements = element; + } else { + elements = $(element).childNodes; + } + + var options = Object.extend({ + speed: 0.1, + delay: 0.0 + }, arguments[2] || { }); + var masterDelay = options.delay; + + $A(elements).each( function(element, index) { + new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); + }); + }, + PAIRS: { + 'slide': ['SlideDown','SlideUp'], + 'blind': ['BlindDown','BlindUp'], + 'appear': ['Appear','Fade'] + }, + toggle: function(element, effect, options) { + element = $(element); + effect = (effect || 'appear').toLowerCase(); + + return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] ](element, Object.extend({ + queue: { position:'end', scope:(element.id || 'global'), limit: 1 } + }, options || {})); + } +}; + +Effect.DefaultOptions.transition = Effect.Transitions.sinoidal; + +/* ------------- core effects ------------- */ + +Effect.ScopedQueue = Class.create(Enumerable, { + initialize: function() { + this.effects = []; + this.interval = null; + }, + _each: function(iterator) { + this.effects._each(iterator); + }, + add: function(effect) { + var timestamp = new Date().getTime(); + + var position = Object.isString(effect.options.queue) ? + effect.options.queue : effect.options.queue.position; + + switch(position) { + case 'front': + // move unstarted effects after this effect + this.effects.findAll(function(e){ return e.state=='idle'; }).each( function(e) { + e.startOn += effect.finishOn; + e.finishOn += effect.finishOn; + }); + break; + case 'with-last': + timestamp = this.effects.pluck('startOn').max() || timestamp; + break; + case 'end': + // start effect after last queued effect has finished + timestamp = this.effects.pluck('finishOn').max() || timestamp; + break; + } + + effect.startOn += timestamp; + effect.finishOn += timestamp; + + if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) { + this.effects.push(effect); + } + + if (!this.interval) { + this.interval = setInterval(this.loop.bind(this), 15); + } + }, + remove: function(effect) { + this.effects = this.effects.reject(function(e) { return e==effect; }); + if (this.effects.length == 0) { + clearInterval(this.interval); + this.interval = null; + } + }, + loop: function() { + var timePos = new Date().getTime(); + var i; + for(i=0, len=this.effects.length;i= this.startOn) { + if (timePos >= this.finishOn) { + this.render(1.0); + this.cancel(); + this.event('beforeFinish'); + if (this.finish) { + this.finish(); + } + this.event('afterFinish'); + return; + } + var pos = (timePos - this.startOn) / this.totalTime, + frame = (pos * this.totalFrames).round(); + if (frame > this.currentFrame) { + this.render(pos); + this.currentFrame = frame; + } + } + }, + cancel: function() { + if (!this.options.sync) { + Effect.Queues.get(Object.isString(this.options.queue) ? + 'global' : this.options.queue.scope).remove(this); + } + this.state = 'finished'; + }, + event: function(eventName) { + if (this.options[eventName + 'Internal']) { + this.options[eventName + 'Internal'](this); + } + if (this.options[eventName]) { + this.options[eventName](this); + } + }, + inspect: function() { + var data = $H(); + for(property in this) { + if (!Object.isFunction(this[property])) { + data.set(property, this[property]); + } + } + return '#'; + } +}); + +Effect.Parallel = Class.create(Effect.Base, { + initialize: function(effects) { + this.effects = effects || []; + this.start(arguments[1]); + }, + update: function(position) { + this.effects.invoke('render', position); + }, + finish: function(position) { + this.effects.each( function(effect) { + effect.render(1.0); + effect.cancel(); + effect.event('beforeFinish'); + if (effect.finish) { + effect.finish(position); + } + effect.event('afterFinish'); + }); + } +}); + +Effect.Tween = Class.create(Effect.Base, { + initialize: function(object, from, to) { + object = Object.isString(object) ? $(object) : object; + var args = $A(arguments), method = args.last(), + options = args.length == 5 ? args[3] : null; + this.method = Object.isFunction(method) ? method.bind(object) : + Object.isFunction(object[method]) ? object[method].bind(object) : + function(value) { object[method] = value; }; + this.start(Object.extend({ from: from, to: to }, options || { })); + }, + update: function(position) { + this.method(position); + } +}); + +Effect.Event = Class.create(Effect.Base, { + initialize: function() { + this.start(Object.extend({ duration: 0 }, arguments[0] || { })); + }, + update: Prototype.emptyFunction +}); + +Effect.Opacity = Class.create(Effect.Base, { + initialize: function(element) { + var options; + this.element = $(element); + if (!this.element) { + throw(Effect._elementDoesNotExistError); + } + // make this work on IE on elements without 'layout' + if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) { + this.element.setStyle({zoom: 1}); + } + options = Object.extend({ + from: this.element.getOpacity() || 0.0, + to: 1.0 + }, arguments[1] || { }); + this.start(options); + }, + update: function(position) { + this.element.setOpacity(position); + } +}); + +Effect.Move = Class.create(Effect.Base, { + initialize: function(element) { + var options; + this.element = $(element); + if (!this.element) { + throw(Effect._elementDoesNotExistError); + } + options = Object.extend({ + x: 0, + y: 0, + mode: 'relative' + }, arguments[1] || { }); + this.start(options); + }, + setup: function() { + this.element.makePositioned(); + this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); + this.originalTop = parseFloat(this.element.getStyle('top') || '0'); + if (this.options.mode == 'absolute') { + this.options.x = this.options.x - this.originalLeft; + this.options.y = this.options.y - this.originalTop; + } + }, + update: function(position) { + this.element.setStyle({ + left: (this.options.x * position + this.originalLeft).round() + 'px', + top: (this.options.y * position + this.originalTop).round() + 'px' + }); + } +}); + +// for backwards compatibility +Effect.MoveBy = function(element, toTop, toLeft) { + return new Effect.Move(element, + Object.extend({ x: toLeft, y: toTop }, arguments[3] || { })); +}; + +Effect.Scale = Class.create(Effect.Base, { + initialize: function(element, percent) { + var options; + this.element = $(element); + if (!this.element) { + throw(Effect._elementDoesNotExistError); + } + options = Object.extend({ + scaleX: true, + scaleY: true, + scaleContent: true, + scaleFromCenter: false, + scaleMode: 'box', // 'box' or 'contents' or { } with provided values + scaleFrom: 100.0, + scaleTo: percent + }, arguments[2] || { }); + this.start(options); + }, + setup: function() { + this.restoreAfterFinish = this.options.restoreAfterFinish || false; + this.elementPositioning = this.element.getStyle('position'); + + this.originalStyle = { }; + ['top','left','width','height','fontSize'].each( function(k) { + this.originalStyle[k] = this.element.style[k]; + }.bind(this)); + + this.originalTop = this.element.offsetTop; + this.originalLeft = this.element.offsetLeft; + + var fontSize = this.element.getStyle('font-size') || '100%'; + ['em','px','%','pt'].each( function(fontSizeType) { + if (fontSize.indexOf(fontSizeType)>0) { + this.fontSize = parseFloat(fontSize); + this.fontSizeType = fontSizeType; + } + }.bind(this)); + + this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; + + this.dims = null; + if (this.options.scaleMode=='box') { + this.dims = [this.element.offsetHeight, this.element.offsetWidth]; + } + if (/^content/.test(this.options.scaleMode)) { + this.dims = [this.element.scrollHeight, this.element.scrollWidth]; + } + if (!this.dims) { + this.dims = [this.options.scaleMode.originalHeight, + this.options.scaleMode.originalWidth]; + } + }, + update: function(position) { + var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); + if (this.options.scaleContent && this.fontSize) { + this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); + } + this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); + }, + finish: function(position) { + if (this.restoreAfterFinish) { + this.element.setStyle(this.originalStyle); + } + }, + setDimensions: function(height, width) { + var d = { }; + if (this.options.scaleX) { + d.width = width.round() + 'px'; + } + if (this.options.scaleY) { + d.height = height.round() + 'px'; + } + if (this.options.scaleFromCenter) { + var topd = (height - this.dims[0])/2; + var leftd = (width - this.dims[1])/2; + if (this.elementPositioning == 'absolute') { + if (this.options.scaleY) { + d.top = this.originalTop-topd + 'px'; + } + if (this.options.scaleX) { + d.left = this.originalLeft-leftd + 'px'; + } + } else { + if (this.options.scaleY) { + d.top = -topd + 'px'; + } + if (this.options.scaleX) { + d.left = -leftd + 'px'; + } + } + } + this.element.setStyle(d); + } +}); + +Effect.Highlight = Class.create(Effect.Base, { + initialize: function(element) { + var options; + this.element = $(element); + if (!this.element) { + throw(Effect._elementDoesNotExistError); + } + options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { }); + this.start(options); + }, + setup: function() { + // Prevent executing on elements not in the layout flow + if (this.element.getStyle('display')=='none') { + this.cancel(); + return; + } + // Disable background image during the effect + this.oldStyle = { }; + if (!this.options.keepBackgroundImage) { + this.oldStyle.backgroundImage = this.element.getStyle('background-image'); + this.element.setStyle({backgroundImage: 'none'}); + } + if (!this.options.endcolor) { + this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); + } + if (!this.options.restorecolor) { + this.options.restorecolor = this.element.getStyle('background-color'); + } + // init color calculations + this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16); }.bind(this)); + this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]; }.bind(this)); + }, + update: function(position) { + this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ + return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) }); + }, + finish: function() { + this.element.setStyle(Object.extend(this.oldStyle, { + backgroundColor: this.options.restorecolor + })); + } +}); + +Effect.ScrollTo = function(element) { + var options = arguments[1] || { }, + scrollOffsets = document.viewport.getScrollOffsets(), + elementOffsets = $(element).cumulativeOffset(); + + if (options.offset) { + elementOffsets[1] += options.offset; + } + + return new Effect.Tween(null, + scrollOffsets.top, + elementOffsets[1], + options, + function(p){ scrollTo(scrollOffsets.left, p.round()); } + ); +}; + +/* ------------- combination effects ------------- */ + +Effect.Fade = function(element) { + element = $(element); + var oldOpacity = element.getInlineOpacity(); + var options = Object.extend({ + from: element.getOpacity() || 1.0, + to: 0.0, + afterFinishInternal: function(effect) { + if (effect.options.to!=0) { + return; + } + effect.element.hide().setStyle({opacity: oldOpacity}); + } + }, arguments[1] || { }); + return new Effect.Opacity(element,options); +}; + +Effect.Appear = function(element) { + element = $(element); + var options = Object.extend({ + from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), + to: 1.0, + // force Safari to render floated elements properly + afterFinishInternal: function(effect) { + effect.element.forceRerendering(); + }, + beforeSetup: function(effect) { + effect.element.setOpacity(effect.options.from).show(); + }}, arguments[1] || { }); + return new Effect.Opacity(element,options); +}; + +Effect.Puff = function(element) { + element = $(element); + var oldStyle = { + opacity: element.getInlineOpacity(), + position: element.getStyle('position'), + top: element.style.top, + left: element.style.left, + width: element.style.width, + height: element.style.height + }; + return new Effect.Parallel( + [ new Effect.Scale(element, 200, + { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), + new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], + Object.extend({ duration: 1.0, + beforeSetupInternal: function(effect) { + Position.absolutize(effect.effects[0].element); + }, + afterFinishInternal: function(effect) { + effect.effects[0].element.hide().setStyle(oldStyle); } + }, arguments[1] || { }) + ); +}; + +Effect.BlindUp = function(element) { + element = $(element); + element.makeClipping(); + return new Effect.Scale(element, 0, + Object.extend({ scaleContent: false, + scaleX: false, + restoreAfterFinish: true, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping(); + } + }, arguments[1] || { }) + ); +}; + +Effect.BlindDown = function(element) { + element = $(element); + var elementDimensions = element.getDimensions(); + return new Effect.Scale(element, 100, Object.extend({ + scaleContent: false, + scaleX: false, + scaleFrom: 0, + scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, + restoreAfterFinish: true, + afterSetup: function(effect) { + effect.element.makeClipping().setStyle({height: '0px'}).show(); + }, + afterFinishInternal: function(effect) { + effect.element.undoClipping(); + } + }, arguments[1] || { })); +}; + +Effect.SwitchOff = function(element) { + element = $(element); + var oldOpacity = element.getInlineOpacity(); + return new Effect.Appear(element, Object.extend({ + duration: 0.4, + from: 0, + transition: Effect.Transitions.flicker, + afterFinishInternal: function(effect) { + new Effect.Scale(effect.element, 1, { + duration: 0.3, scaleFromCenter: true, + scaleX: false, scaleContent: false, restoreAfterFinish: true, + beforeSetup: function(effect) { + effect.element.makePositioned().makeClipping(); + }, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); + } + }); + } + }, arguments[1] || { })); +}; + +Effect.DropOut = function(element) { + element = $(element); + var oldStyle = { + top: element.getStyle('top'), + left: element.getStyle('left'), + opacity: element.getInlineOpacity() }; + return new Effect.Parallel( + [ new Effect.Move(element, {x: 0, y: 100, sync: true }), + new Effect.Opacity(element, { sync: true, to: 0.0 }) ], + Object.extend( + { duration: 0.5, + beforeSetup: function(effect) { + effect.effects[0].element.makePositioned(); + }, + afterFinishInternal: function(effect) { + effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); + } + }, arguments[1] || { })); +}; + +Effect.Shake = function(element) { + element = $(element); + var options = Object.extend({ + distance: 20, + duration: 0.5 + }, arguments[1] || {}); + var distance = parseFloat(options.distance); + var split = parseFloat(options.duration) / 10.0; + var oldStyle = { + top: element.getStyle('top'), + left: element.getStyle('left') }; + return new Effect.Move(element, + { x: distance, y: 0, duration: split, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) { + effect.element.undoPositioned().setStyle(oldStyle); + }}); }}); }}); }}); }}); }}); +}; + +Effect.SlideDown = function(element) { + element = $(element).cleanWhitespace(); + // SlideDown need to have the content of the element wrapped in a container element with fixed height! + var oldInnerBottom = element.down().getStyle('bottom'); + var elementDimensions = element.getDimensions(); + return new Effect.Scale(element, 100, Object.extend({ + scaleContent: false, + scaleX: false, + scaleFrom: window.opera ? 0 : 1, + scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, + restoreAfterFinish: true, + afterSetup: function(effect) { + effect.element.makePositioned(); + effect.element.down().makePositioned(); + if (window.opera) { + effect.element.setStyle({top: ''}); + } + effect.element.makeClipping().setStyle({height: '0px'}).show(); + }, + afterUpdateInternal: function(effect) { + effect.element.down().setStyle({bottom: + (effect.dims[0] - effect.element.clientHeight) + 'px' }); + }, + afterFinishInternal: function(effect) { + effect.element.undoClipping().undoPositioned(); + effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } + }, arguments[1] || { }) + ); +}; + +Effect.SlideUp = function(element) { + element = $(element).cleanWhitespace(); + var oldInnerBottom = element.down().getStyle('bottom'); + var elementDimensions = element.getDimensions(); + return new Effect.Scale(element, window.opera ? 0 : 1, + Object.extend({ scaleContent: false, + scaleX: false, + scaleMode: 'box', + scaleFrom: 100, + scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, + restoreAfterFinish: true, + afterSetup: function(effect) { + effect.element.makePositioned(); + effect.element.down().makePositioned(); + if (window.opera) { + effect.element.setStyle({top: ''}); + } + effect.element.makeClipping().show(); + }, + afterUpdateInternal: function(effect) { + effect.element.down().setStyle({bottom: + (effect.dims[0] - effect.element.clientHeight) + 'px' }); + }, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping().undoPositioned(); + effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); + } + }, arguments[1] || { }) + ); +}; + +// Bug in opera makes the TD containing this element expand for a instance after finish +Effect.Squish = function(element) { + return new Effect.Scale(element, window.opera ? 1 : 0, { + restoreAfterFinish: true, + beforeSetup: function(effect) { + effect.element.makeClipping(); + }, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping(); + } + }); +}; + +Effect.Grow = function(element) { + element = $(element); + var options = Object.extend({ + direction: 'center', + moveTransition: Effect.Transitions.sinoidal, + scaleTransition: Effect.Transitions.sinoidal, + opacityTransition: Effect.Transitions.full + }, arguments[1] || { }); + var oldStyle = { + top: element.style.top, + left: element.style.left, + height: element.style.height, + width: element.style.width, + opacity: element.getInlineOpacity() }; + + var dims = element.getDimensions(); + var initialMoveX, initialMoveY; + var moveX, moveY; + + switch (options.direction) { + case 'top-left': + initialMoveX = initialMoveY = moveX = moveY = 0; + break; + case 'top-right': + initialMoveX = dims.width; + initialMoveY = moveY = 0; + moveX = -dims.width; + break; + case 'bottom-left': + initialMoveX = moveX = 0; + initialMoveY = dims.height; + moveY = -dims.height; + break; + case 'bottom-right': + initialMoveX = dims.width; + initialMoveY = dims.height; + moveX = -dims.width; + moveY = -dims.height; + break; + case 'center': + initialMoveX = dims.width / 2; + initialMoveY = dims.height / 2; + moveX = -dims.width / 2; + moveY = -dims.height / 2; + break; + } + + return new Effect.Move(element, { + x: initialMoveX, + y: initialMoveY, + duration: 0.01, + beforeSetup: function(effect) { + effect.element.hide().makeClipping().makePositioned(); + }, + afterFinishInternal: function(effect) { + new Effect.Parallel( + [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), + new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), + new Effect.Scale(effect.element, 100, { + scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, + sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) + ], Object.extend({ + beforeSetup: function(effect) { + effect.effects[0].element.setStyle({height: '0px'}).show(); + }, + afterFinishInternal: function(effect) { + effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); + } + }, options) + ); + } + }); +}; + +Effect.Shrink = function(element) { + element = $(element); + var options = Object.extend({ + direction: 'center', + moveTransition: Effect.Transitions.sinoidal, + scaleTransition: Effect.Transitions.sinoidal, + opacityTransition: Effect.Transitions.none + }, arguments[1] || { }); + var oldStyle = { + top: element.style.top, + left: element.style.left, + height: element.style.height, + width: element.style.width, + opacity: element.getInlineOpacity() }; + + var dims = element.getDimensions(); + var moveX, moveY; + + switch (options.direction) { + case 'top-left': + moveX = moveY = 0; + break; + case 'top-right': + moveX = dims.width; + moveY = 0; + break; + case 'bottom-left': + moveX = 0; + moveY = dims.height; + break; + case 'bottom-right': + moveX = dims.width; + moveY = dims.height; + break; + case 'center': + moveX = dims.width / 2; + moveY = dims.height / 2; + break; + } + + return new Effect.Parallel( + [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), + new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), + new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) + ], Object.extend({ + beforeStartInternal: function(effect) { + effect.effects[0].element.makePositioned().makeClipping(); + }, + afterFinishInternal: function(effect) { + effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } + }, options) + ); +}; + +Effect.Pulsate = function(element) { + element = $(element); + var options = arguments[1] || { }, + oldOpacity = element.getInlineOpacity(), + transition = options.transition || Effect.Transitions.linear, + reverser = function(pos){ + return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5); + }; + + return new Effect.Opacity(element, + Object.extend(Object.extend({ duration: 2.0, from: 0, + afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } + }, options), {transition: reverser})); +}; + +Effect.Fold = function(element) { + element = $(element); + var oldStyle = { + top: element.style.top, + left: element.style.left, + width: element.style.width, + height: element.style.height }; + element.makeClipping(); + return new Effect.Scale(element, 5, Object.extend({ + scaleContent: false, + scaleX: false, + afterFinishInternal: function(effect) { + new Effect.Scale(element, 1, { + scaleContent: false, + scaleY: false, + afterFinishInternal: function(effect) { + effect.element.hide().undoClipping().setStyle(oldStyle); + } }); + }}, arguments[1] || { })); +}; + +Effect.Morph = Class.create(Effect.Base, { + initialize: function(element) { + var options; + this.element = $(element); + if (!this.element) { + throw(Effect._elementDoesNotExistError); + } + options = Object.extend({ + style: { } + }, arguments[1] || { }); + + if (!Object.isString(options.style)) { + this.style = $H(options.style); + } else { + if (options.style.include(':')) { + this.style = options.style.parseStyle(); + } else { + this.element.addClassName(options.style); + this.style = $H(this.element.getStyles()); + this.element.removeClassName(options.style); + var css = this.element.getStyles(); + this.style = this.style.reject(function(style) { + return style.value == css[style.key]; + }); + options.afterFinishInternal = function(effect) { + effect.element.addClassName(effect.options.style); + effect.transforms.each(function(transform) { + effect.element.style[transform.style] = ''; + }); + }; + } + } + this.start(options); + }, + + setup: function(){ + function parseColor(color){ + if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) { + color = '#ffffff'; + } + color = color.parseColor(); + return $R(0,2).map(function(i){ + return parseInt( color.slice(i*2+1,i*2+3), 16 ); + }); + } + this.transforms = this.style.map(function(pair){ + var property = pair[0], value = pair[1], unit = null; + + if (value.parseColor('#zzzzzz') != '#zzzzzz') { + value = value.parseColor(); + unit = 'color'; + } else if (property == 'opacity') { + value = parseFloat(value); + if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) { + this.element.setStyle({zoom: 1}); + } + } else if (Element.CSS_LENGTH.test(value)) { + var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/); + value = parseFloat(components[1]); + unit = (components.length == 3) ? components[2] : null; + } + + var originalValue = this.element.getStyle(property); + return { + style: property.camelize(), + originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), + targetValue: unit=='color' ? parseColor(value) : value, + unit: unit + }; + }.bind(this)).reject(function(transform){ + return ( + (transform.originalValue == transform.targetValue) || + ( + transform.unit != 'color' && + (isNaN(transform.originalValue) || isNaN(transform.targetValue)) + ) + ); + }); + }, + update: function(position) { + var style = { }, transform, i = this.transforms.length; + while(i--) { + style[(transform = this.transforms[i]).style] = + transform.unit=='color' ? '#'+ + (Math.round(transform.originalValue[0]+ + (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + + (Math.round(transform.originalValue[1]+ + (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() + + (Math.round(transform.originalValue[2]+ + (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : + (transform.originalValue + + (transform.targetValue - transform.originalValue) * position).toFixed(3) + + (transform.unit === null ? '' : transform.unit); + } + this.element.setStyle(style, true); + } +}); + +Effect.Transform = Class.create({ + initialize: function(tracks){ + this.tracks = []; + this.options = arguments[1] || { }; + this.addTracks(tracks); + }, + addTracks: function(tracks){ + tracks.each(function(track){ + track = $H(track); + var data = track.values().first(); + this.tracks.push($H({ + ids: track.keys().first(), + effect: Effect.Morph, + options: { style: data } + })); + }.bind(this)); + return this; + }, + play: function(){ + return new Effect.Parallel( + this.tracks.map(function(track){ + var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options'); + var elements = [$(ids) || $$(ids)].flatten(); + return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) }); + }).flatten(), + this.options + ); + } +}); + +Element.CSS_PROPERTIES = $w( + 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + + 'fontSize fontWeight height left letterSpacing lineHeight ' + + 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ + 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + + 'right textIndent top width wordSpacing zIndex'); + +Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; + +String.__parseStyleElement = document.createElement('div'); +String.prototype.parseStyle = function(){ + var style, styleRules = $H(); + if (Prototype.Browser.WebKit) + style = new Element('div',{style:this}).style; + else { + String.__parseStyleElement.innerHTML = '
    '; + style = String.__parseStyleElement.childNodes[0].style; + } + + Element.CSS_PROPERTIES.each(function(property){ + if (style[property]) styleRules.set(property, style[property]); + }); + + if (Prototype.Browser.IE && this.include('opacity')) + styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]); + + return styleRules; +}; + +if (document.defaultView && document.defaultView.getComputedStyle) { + Element.getStyles = function(element) { + var css = document.defaultView.getComputedStyle($(element), null); + return Element.CSS_PROPERTIES.inject({ }, function(styles, property) { + styles[property] = css[property]; + return styles; + }); + }; +} else { + Element.getStyles = function(element) { + element = $(element); + var css = element.currentStyle, styles; + styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) { + results[property] = css[property]; + return results; + }); + if (!styles.opacity) styles.opacity = element.getOpacity(); + return styles; + }; +} + +Effect.Methods = { + morph: function(element, style) { + element = $(element); + new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { })); + return element; + }, + visualEffect: function(element, effect, options) { + element = $(element); + var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1); + new Effect[klass](element, options); + return element; + }, + highlight: function(element, options) { + element = $(element); + new Effect.Highlight(element, options); + return element; + } +}; + +$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+ + 'pulsate shake puff squish switchOff dropOut').each( + function(effect) { + Effect.Methods[effect] = function(element, options){ + element = $(element); + Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options); + return element; + }; + } +); + +$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( + function(f) { Effect.Methods[f] = Element[f]; } +); + +Element.addMethods(Effect.Methods); diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/scriptaculous.js b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/scriptaculous.js new file mode 100644 index 0000000000000000000000000000000000000000..39f89b8451ce7f09afc6ced828676b4d1c26d9da --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/src/scriptaculous.js @@ -0,0 +1,69 @@ +// script.aculo.us scriptaculous.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 + +// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// For details, see the script.aculo.us web site: http://script.aculo.us/ + +var Scriptaculous = { + Version: '1.8.3', + require: function(libraryName) { + try{ + // inserting via DOM fails in Safari 2.0, so brute force approach + document.write(' + + + + + +

    script.aculo.us Unit test file

    +

    + Tests for Ajax.InPlaceEditor and Ajax.InPlaceCollectionEditor in controls.js +

    + + +
    + +

    To be edited

    +edit + +

    New to be edited

    +

    External control for it

    + +

    Me & Myself

    + +
    First line
    +Second line
    +Third line
    + + + + + diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/bdd_test.html b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/bdd_test.html new file mode 100644 index 0000000000000000000000000000000000000000..3f6373027fdad14920f168311ec3becccd8f7c3f --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/bdd_test.html @@ -0,0 +1,150 @@ + + + + script.aculo.us Unit test file + + + + + + + +

    script.aculo.us Unit test file

    + + +
    + +
    initial
    + + + + + \ No newline at end of file diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/builder_test.html b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/builder_test.html new file mode 100644 index 0000000000000000000000000000000000000000..09f70f7beb54cf74149fae59fbb20d19cb81316c --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/builder_test.html @@ -0,0 +1,262 @@ + + + + script.aculo.us Unit test file + + + + + + + +

    script.aculo.us Unit test file

    +

    + Tests for builder.js +

    + + +
    + +
    + + + + + diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/effects_test.html b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/effects_test.html new file mode 100644 index 0000000000000000000000000000000000000000..5ef1658f55eee4ca6e13bb0b8b86bc4d0bc1dd22 --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/effects_test.html @@ -0,0 +1,547 @@ + + + + script.aculo.us Unit test file + + + + + + + + +

    script.aculo.us Unit test file

    +

    + Tests for effects.js +

    + + +
    + + +
    + +
    Well
    +
    You know
    +
    Whoo-hoo!
    + +
    ERROR MESSAGE
    +
    SECOND ERROR MESSAGE
    +
    THIRD ERROR MESSAGE
    + +
      +
    • Lorem ipsum dolor sit amet, consectetur adipisicing elit,
    • +
    • sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    • +
    • Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
    • +
    • nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
    • +
    • reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
    • +
    + +
    ROTFL
    + +
    foo!
    + + + + + diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/element_test.html b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/element_test.html new file mode 100644 index 0000000000000000000000000000000000000000..8ac5416af8fd68522311a48c52da5f9cad27f482 --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/element_test.html @@ -0,0 +1,116 @@ + + + + script.aculo.us Unit test file + + + + + + + + +

    script.aculo.us Unit test file

    +

    + Tests for Element extensions in effects.js +

    + + +
    + + +
    + +
    + + +
    + +
    blah
    + +
    + + + +
    +
    + + +op2 +op2 +op3 +op3 + + +
    + First class + Second class + First and Second class + Third class Nested First class + +
    123
    • 4
    + +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/position_clone_test.html b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/position_clone_test.html new file mode 100644 index 0000000000000000000000000000000000000000..0644c631b5481212fc7b64aa375fcb462ac751cf --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/position_clone_test.html @@ -0,0 +1,312 @@ + + + + script.aculo.us Unit test file + + + + + + + +

    script.aculo.us Unit test file

    +

    + Tests for Postion.clone (to be moved to Prototype) +

    + + +
    + + + + + + + + \ No newline at end of file diff --git a/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/sortable_test.html b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/sortable_test.html new file mode 100644 index 0000000000000000000000000000000000000000..c2bafd0b9db6158158384fd817a5ac75d78bb5de --- /dev/null +++ b/mosesdecoder/scripts/ems/web/javascripts/scriptaculous-js-1.8.3/test/unit/sortable_test.html @@ -0,0 +1,205 @@ + + + + script.aculo.us Unit test file + + + + + + + +

    script.aculo.us Unit test file

    +

    + Test of sortable functions in dragdrop.js +

    + + +
    + + +
      +
    • item 1
    • +
    • item 1
      • !!!
    • +
    • item 1
    • +
    • item 1
    • + +
    + +
    +
    item 4
    item 5
    + img + +
    + +
    + +
    + + +
      +
    • item 1
    • +
    • item 1 +
        +
      • !!!
      • +
      +
    • +
    • item 1
    • +
    • item 1
    • + +
    + + +
      +
    • item 1
    • +
    • item 1
      • !!!
    • +
    + +
      +
    • item 1
    • +
    • item 1
      • !!!
    • +
    + + + + + diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run1.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run1.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..af177cfa3ad85ddfc234cc0504a9bbebd1555de3 --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run1.TRANS.out @@ -0,0 +1,5 @@ +till Tuesday Almeno stable and mostly sunny with rising temperatures , especially the maxima values . +A possible worsening is expected in the second half of the week . +A moist and unstable air will affect the Alpine area in the next days will determine changeable cloudiness , will probably southern sectors , and with light precipitation is expected for the half of the week . +the evening Con today , Thursday , a disturbance is expected , bringing widespread rains in the afternoon on Friday and snowfalls in the next days 600 m 2000 m . +For the week end clear sky and little cloudiness and temperature lowering minimum temperatures . diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run10.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run10.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..c66cf69b1d8d3bde12a1f9016d24a0efd7d1ca84 --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run10.TRANS.out @@ -0,0 +1,5 @@ +till Tuesday Almeno stable and mostly sunny weather with rising temperatures . In the maxima , expecially maxima . +A possible worsening is expected in the second half of the week . +A moist and temporary flow will affect the Alpine area for the next days will determine changeable cloudiness , more thick southern sectors , and with some chances of light precipitation is expected for the half of the week . +for the next Con today evening , Thursday , a disturbance is expected , bringing widespread rains into clearing on Friday and in the next days around 600 m 2000 m . +For the weekend clear or clear sky cloudy with dropping of minimum temperatures . diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run12.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run12.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..f1b6190b1f6c9ea360be2b7caca24c12ae294139 --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run12.TRANS.out @@ -0,0 +1,5 @@ +Almeno till Tuesday stable and mostly sunny with rising temperatures , especially in maxima values . +A possible worsening is expected in the second half of the week . +A moist and temporary flow will affect the Alpine area in the next days determining changeable cloudiness , will probably southern sectors , and with light precipitation towards the half of next week . +Con today evening , Thursday , a disturbance is expected , bringing widespread rains into clearing on Friday and snowfalls to 600 of m 2000 m . +For the week end clear sky or little cloudiness with dropping of minimum temperatures . diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run13.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run13.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..1c2081efcde608a3a35dbe4fe85342afa78a0fa2 --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run13.TRANS.out @@ -0,0 +1,5 @@ +till Tuesday Almeno stable and mostly sunny weather with rising temperatures , especially in the maxima values . +A possible worsening is expected in the second half of the week . +A moist and more flow will affect the Alps in the next days fostering changeable cloudiness , will probably on southern area , and with some chances of snowfalls from Wednesday . +the Con today evening , Thursday , a disturbance is expected , bringing widespread rains in the afternoon on Friday and snowfalls to 600 of m 2000 m . +For the weekend clear sky and little cloudiness with dropping temperatures nighttime . diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run2.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run2.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..c2f020112aba0f802511e1afc225d0187b32e041 --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run2.TRANS.out @@ -0,0 +1,5 @@ +till Tuesday Almeno stable and mostly sunny weather with rising temperatures , especially in the maxima values . +A possible worsening is expected in the second half of the week . +A moist and temporary flow will affect the Alps in the next days will determine changeable cloudiness , will probably southern sectors , with light precipitation is expected for the half of the week . +Con evening today , Thursday , a disturbance is expected , bringing widespread rains into clearing on Friday and snowfalls in the next days 600 m 2000 m . +For the weekend higher clear or little cloudiness and temperature lowering minimum temperatures . diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run3.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run3.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..14dec6eadea0749528fa48543fa4801607f6ff41 --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run3.TRANS.out @@ -0,0 +1,5 @@ +From Tuesday been Almeno fostering riny weather Sunny Spain thermal according riny above all Than season setting ground daily disturbance +A Mediteranean Hiberian behind behind Scandinavia second half modification autumn disturbance +Moist flux Sunny cumulus medium flew influence occurr on Baleari driven by days strongly long period remain broader Than with probably forecasted elsewhere sea Than Sunny phenomena above Light Rainy favourable midweek autumn disturbance +Con situation been evening Than Thursday Than behind behind frontal lines of still diturbance Than of almost ecpected rainfall tll riny Scandinavia For evening Sunny heavy cumulus influences of m 2000 heavy disturbance +On frontal autumn end turn higher turn precipitations rainfall above Iincreasing further built according nighttime disturbance diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run5.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run5.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..c6c2fafe8becbcecef9abc14b70f56c47c85c88c --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run5.TRANS.out @@ -0,0 +1,5 @@ +till Tuesday Almeno Stable and sunny weather with rising temperatures expecially in the . maxima values +A possible worsening is expected in the second half of the week . +A moist and more flow will affect the Alps in the next days will determine changeable cloudiness , and scattered on southern area , and with light precipitation from Wednesday . +evening Con today Thursday , is expected the crossing of a disturbance , bringing widespread precipitation , clearing on Friday will and snowfalls at of m 2000 m . +For the weekend sunny clear or mostly cloudy with dropping in minimum temperatures . diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run6.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run6.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..d898f5ecdc5938d169b02809c53a63b3a1cceb3c --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run6.TRANS.out @@ -0,0 +1,5 @@ +till Tuesday Almeno stable and mostly sunny with rising temperatures , especially the maxima values . +A worsening is expected envisaged in the second half of the week . +A moist and cold will affect the Alpine area for the next days will determine more changeable cloudiness , southern sectors thick and with light precipitation for the half of the week . +the Con evening , Thursday , today a disturbance is expected , bringing widespread rains clearing mainly on Friday and snowfalls of m to 600 2000 m . +For the weekend clear or little mostly cloudy with dropping of minimum temperatures . diff --git a/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run8.TRANS.out b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run8.TRANS.out new file mode 100644 index 0000000000000000000000000000000000000000..d081991a3481e833237a9d4c0adcd1fa8c3420f2 --- /dev/null +++ b/mosesdecoder/scripts/regression-testing/tests/mert-moses-new-aggregate/data/run8.TRANS.out @@ -0,0 +1,5 @@ +Almeno till Tuesday stable and mostly sunny weather with rising temperatures , especially in the maxima daily . +A possible worsening is expected in the second half of the week . +A moist and temporary Cold will affect the Alpine area for the next days determine cloudy conditions , more thicker southern sectors , and with light precipitation for the half of the week . +Con evening today , Thursday , a disturbance is expected , bringing widespread rains into clearing on Friday with snowfalls at altitudes of m 2000 m . +For the week end clear sky or loering cloudy with dropping of minimum temperatures . diff --git a/mosesdecoder/scripts/server/moses.py b/mosesdecoder/scripts/server/moses.py new file mode 100644 index 0000000000000000000000000000000000000000..e825ab39ea4055cbd42c817070f57774f8d7a793 --- /dev/null +++ b/mosesdecoder/scripts/server/moses.py @@ -0,0 +1,228 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +""" +Python utilities for moses + +This package mostly wraps standard Moses utilities into pipes. + +Written by Ulrich Germann + +This package borrows from scripts written by Christian Buck + +The package assumes that there is a complete moses installation +(including scripts) under one root directory, +e.g., via :: + bjam --with-xmlrpc-c=... [...] --install-scripts --prefix=${HOME}/moses +By default, this root directory is "${HOME}/moses". +""" + +import os +import sys +import time +import xmlrpclib +from subprocess import ( + PIPE, + Popen, + ) + + +moses_root = os.environ.get('MOSES_ROOT', os.environ.get('HOME') + "/moses") + + +class ProcessWrapper: + + def __init__(self, cmd=[]): + self.process = None + self.cmd = cmd + + def start(self, stdin=PIPE, stdout=PIPE): + if self.process: + raise Exception("Process is already running") + self.process = Popen(self.cmd, stdin=stdin, stdout=stdout) + + def __del__(self): + if self.process: + self.process.terminate() + + +class LineProcessor(ProcessWrapper): + + def __call__(self, input): + if not self.process: + self.start() + self.process.stdin.write("%s\n" % input.strip()) + self.process.stdin.flush() + return self.process.stdout.readline().strip() + + +class SentenceSplitter(ProcessWrapper): + """Wrapper for standard Moses sentence splitter.""" + + def __init__(self, lang): + ssplit_cmd = moses_root + "/scripts/ems/support/split-sentences.perl" + self.cmd = [ssplit_cmd, "-b", "-q", "-l", lang] + self.process = None + + def __call__(self, input): + if not self.process: + self.start() + self.process.stdin.write(input.strip() + "\n

    \n") + self.process.stdin.flush() + x = self.process.stdout.readline().strip() + ret = [] + while x != '

    ' and x != '': + ret.append(x) + x = self.process.stdout.readline().strip() + return ret + + +class Pretokenizer(LineProcessor): + """Pretokenizer wrapper. + + The pretokenizer fixes known issues with the input. + """ + def __init__(self, lang): + pretok_cmd = moses_root + "/scripts/tokenizer/pre-tokenizer.perl" + self.cmd = [pretok_cmd, "-b", "-q", "-l", lang] + self.process = None + + +class Tokenizer(LineProcessor): + """Tokenizer wrapper. + + The pretokenizer fixes known issues with the input. + """ + def __init__(self, lang, args=["-a", "-no-escape"]): + tok_cmd = moses_root + "/scripts/tokenizer/tokenizer.perl" + self.cmd = [tok_cmd, "-b", "-q", "-l", lang] + args + self.process = None + + +class Truecaser(LineProcessor): + """Truecaser wrapper.""" + def __init__(self, model): + truecase_cmd = moses_root + "/scripts/recaser/truecase.perl" + self.cmd = [truecase_cmd, "-b", "--model", model] + self.process = None + + +class LineProcessorPipeline: + """Line processor: one line in, one line out.""" + def __init__(self, parts=[]): + self.chain = [LineProcessor(p.cmd) for p in parts] + + def start(self): + if len(self.chain) == 0: + return + if self.chain[0].process: + return + self.chain[0].start() + for i in xrange(1, len(self.chain)): + self.chain[i].start(stdin=self.chain[i - 1].process.stdout) + + def __call__(self, input): + if len(self.chain) == 0: + return input + self.start() + self.chain[0].process.stdin.write("%s\n" % input.strip()) + self.chain[0].process.stdin.flush() + return self.chain[0].process.stdout.readline().strip() + + +def find_free_port(p): + """Find a free port, starting at /p/. + + :return: The free port, or False if none found. + """ + ret = p + while ret - p < 20: + devnull = open(os.devnull, "w") + n = Popen(["netstat", "-tnp"], stdout=PIPE, stderr=devnull) + if n.communicate()[0].find(":%d " % ret) < 0: + return p + ret += 1 + return False + + +class MosesServer(ProcessWrapper): + + def __init__(self, args=[]): + self.process = None + mserver_cmd = moses_root + "/bin/mosesserver" + self.cmd = [mserver_cmd] + args + self.url = None + self.proxy = None + + def start(self, config=None, args=[], port=7447, debug=False): + self.cmd.extend(args) + if config: + if "-f" in args: + raise Exception("Config file specified twice") + else: + self.cmd.extend(["-f", config]) + self.port = port # find_free_port(port) + if not self.port: + raise Exception("Cannot find free port for moses server!") + self.cmd.extend(["--server-port", "%d" % self.port]) + if debug: + print >>sys.stderr, self.cmd + # self.stderr = open("mserver.%d.stderr"%self.port,'w') + # self.stdout = open("mserver.%d.stdout"%self.port,'w') + # self.process = Popen( + # self.cmd, stderr=self.stderr, stdout=self.stdout) + self.process = Popen(self.cmd) + else: + devnull = open(os.devnull, "w") + self.process = Popen(self.cmd, stderr=devnull, stdout=devnull) + + if self.process.poll(): + raise Exception("FATAL ERROR: Could not launch moses server!") + if debug: + print >>sys.stderr, "MOSES port is %d." % self.port + print >>sys.stderr, "Moses poll status is", self.process.poll() + + self.url = "http://localhost:%d/RPC2" % self.port + self.connect(self.url) + + return True + + def connect(self, url): + if url[:4] != "http": + url = "http://%s" % url + if url[-5:] != "/RPC2": + url += "/RPC2" + self.url = url + self.proxy = xmlrpclib.ServerProxy(self.url) + + def translate(self, input): + attempts = 0 + while attempts < 100: + try: + if type(input) is unicode: + # If the server does not expect unicode, provide a + # properly encoded string! + param = {'text': input.strip().encode('utf8')} + return self.proxy.translate(param)['text'].decode('utf8') + + elif type(input) is str: + param = {'text': input.strip()} + return self.proxy.translate(param)['text'] + + elif type(input) is list: + return [self.translate(x) for x in input] + + elif type(input) is dict: + return self.proxy.translate(input) + + else: + raise Exception("Can't handle input of this type!") + + except: + attempts += 1 + print >>sys.stderr, "WAITING", attempts + time.sleep(1) + raise Exception("Translation request failed") diff --git a/mosesdecoder/scripts/server/sim-pe.py b/mosesdecoder/scripts/server/sim-pe.py new file mode 100644 index 0000000000000000000000000000000000000000..6f76bf46d9b871e2160d1be8fff7978109de2042 --- /dev/null +++ b/mosesdecoder/scripts/server/sim-pe.py @@ -0,0 +1,319 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Written by Ulrich Germann on the basis of contrib/server/client.py. +# +# This file is part of moses. Its use is licensed under the GNU Lesser General +# Public License version 2.1 or, at your option, any later version. + +"""Simulate post-editing of MT output. + +Incrementally updates the dynamic phrase tables in the moses server. +""" + +import argparse +import os +import sys +import time +import xmlrpclib +import moses +from subprocess import ( + PIPE, + Popen, + ) + + +mserver = moses.MosesServer() + +# We must perform some custom argument processing, as moses parameter +# specifications do not comply with the standards used in standard +# argument parsing packages; an isolated double dash separates script +# arguments from moses arguments + + +def split_args(all_args): + """ + Split argument list all_args into arguments specific to this script and + arguments relating to the moses server. An isolated double dash acts as + the separator between the two types of arguments. + """ + my_args = [] + mo_args = [] + arglist = mo_args + i = 0 + # IMPORTANT: the code below must be coordinated with + # - the evolution of moses command line arguments + # - mert-moses.pl + while i < len(all_args): + # print i,"MY_ARGS", my_args + # print i,"MO_ARGS", mo_args + if all_args[i] == "--[": + arglist = my_args + elif all_args[i] == "--]": + arglist = mo_args + elif all_args[i] == "-i" or all_args[i] == "-input-file": + my_args.extend(["-i", all_args[i + 1]]) + i += 1 + elif all_args[i] == "-inputtype": + if all_args[i + 1] != "0": + # Not yet supported! Therefore: + errmsg = ( + "FATAL ERROR: " + "%s only supports plain text input at this point." + % sys.argv[0]) + raise Exception(errmsg) + # my_args.extend(["--input-type",all_args[i+1]]) + i += 1 + elif all_args[i] == "-lattice-samples": + # my_args.extend(["--lattice-sample",all_args[i+2]]) + # my_args.extend(["--lattice-sample-file",all_args[i+1]]) + # mo_args[i:i+3] = [] + # i += 2 + # This is not yet supported! Therefore: + errmsg = ( + "FATAL ERROR: %s does not yet support lattice sampling." + % sys.argv[0]) + raise Exception(errmsg) + + elif all_args[i] == "-n-best-list": + my_args.extend(["--nbest", all_args[i + 2]]) + my_args.extend(["--nbest-file", all_args[i + 1]]) + i += 2 + + elif all_args[i] == "-n-best-distinct": + my_args.extend(["-u"]) + + else: + arglist.append(all_args[i]) + pass + + i += 1 + pass + return my_args, mo_args + + +def interpret_args(my_args): + """ + Parse script-specific argument list. + """ + aparser = argparse.ArgumentParser() + + aparser.add_argument( + "-s", "--server-cmd", default="mosesserver", dest="servercmd", + help="Path to moses server command.") + aparser.add_argument( + "--url", help="URL of external moses server.") + aparser.add_argument( + "-p", "--port", type=int, default=7447, + help="Port number to be used for server.") + + # Input / output. + aparser.add_argument( + "-i", "--input", default='-', help="source file") + aparser.add_argument( + "-r", "--ref", default=None, help="Reference translation.") + aparser.add_argument( + "-a", "--aln", default=None, help="Alignment.") + aparser.add_argument( + "-o", "--output", default="-", help="Output file.") + aparser.add_argument( + "-d", "--debug", action='store_true', help="Debug mode.") + + # Moses reporting options. + aparser.add_argument( + "-A", "--with-alignment", dest="A", action='store_true', + help="Include alignment in output.") + aparser.add_argument( + "-G", "--with-graph", type=bool, default=False, dest="G", + help="Include search graph info in output.") + aparser.add_argument( + "-T", "--with-transopt", type=bool, default=False, dest="T", + help="Include translation options info in output.") + aparser.add_argument( + "-F", "--report-all-factors", action="store_true", dest="F", + help="Report all factors.") + aparser.add_argument( + "-n", "--nbest", type=int, dest="nbest", default=0, + help="Size of nbest list.") + aparser.add_argument( + "-N", "--nbest-file", dest="nbestFile", default=0, + help="Output file for nbest list.") + aparser.add_argument( + "-u", "--nbest-distinct", type=bool, dest="U", default=False, + help="Report all factors.") + + return aparser.parse_args(my_args) + + +def translate(proxy, args, line): + if type(line) is unicode: + param = {'text': line.strip().encode('utf8')} + elif type(line) is str: + param = {'text': line.strip()} + else: + raise Exception("Can't handle input") + if args.A: + param['align'] = True + if args.T: + param['topt'] = True + if args.F: + param['report-all-factors'] = True + if args.nbest: + param['nbest'] = int(args.nbest) + param['add-score-breakdown'] = True + pass + if args.U: + param['nbest-distinct'] = True + pass + attempts = 0 + while attempts < 20: + t1 = time.time() + try: + return proxy.translate(param) + + # except xmlrpclib.Fault as e: + # except xmlrpclib.ProtocolError as e: + # except xmlrpclib.ResponseError as e: + except xmlrpclib.Error as e: + sys.stderr.flush() + print >>sys.stderr, " XMLRPC error:", e + print >>sys.stderr, "Input was" + print >>sys.stderr, param + sys.exit(1) + + except IOError as e: + print >>sys.stderr, ( + "I/O error({0}): {1}".format(e.errno, e.strerror)) + time.sleep(5) + + except: + serverstatus = mserver.process.poll() + if serverstatus is None: + print >>sys.stderr, ( + "Connection failed after %f seconds" % (time.time() - t1)) + attempts += 1 + if attempts > 10: + time.sleep(10) + else: + time.sleep(5) + else: + print >>sys.stderr, ( + "Oopsidaisy, server exited with code %d (signal %d)" + % (serverstatus / 256, serverstatus % 256)) + pass + pass + pass + raise Exception("Exception: could not reach translation server.") + + +def read_data(fname): + """ + Read and return data (source, target or alignment) from file fname. + """ + if fname[-3:] == ".gz": + process = Popen(["zcat", fname], stdout=PIPE) + stdout, _ = process.communicate() + foo = stdout.strip().split('\n') + else: + foo = [x.strip() for x in open(fname).readlines()] + return foo + + +def repack_result(idx, result): + global args + if args.nbest: + for h in result['nbest']: + fields = [idx, h['hyp'], h['fvals'], h['totalScore']] + for i in xrange(len(fields)): + if type(fields[i]) is unicode: + fields[i] = fields[i].encode('utf-8') + pass + pass + # Print fields. + print >>NBestFile, "%d ||| %s ||| %s ||| %f" % tuple(fields) + pass + if 'align' in result: + t = result['text'].split() + span = '' + i = 0 + k = 0 + for a in result['align']: + k = a['tgt-start'] + if k: + print " ".join(t[i:k]).encode('utf8'), span, + i = k + span = "|%d %d|" % (a['src-start'], a['src-end']) + print " ".join(t[k:]).encode('utf8'), span + else: + print result['text'].encode('utf8') + + +if __name__ == "__main__": + my_args, mo_args = split_args(sys.argv[1:]) + + # print "MY ARGS", my_args + # print "MO_ARGS", mo_args + + global args + args = interpret_args(my_args) + + if "-show-weights" in mo_args: + # This is for use during tuning, where moses is called to get a list + # of feature names. + devnull = open(os.devnull, "w") + mo = Popen(mserver.cmd + mo_args, stdout=PIPE, stderr=devnull) + print mo.communicate()[0].strip() + sys.exit(0) + pass + + if args.nbest: + if args.nbestFile: + NBestFile = open(args.nbestFile, "w") + else: + NBestFile = sys.stdout + pass + pass + + ref = None + aln = None + if args.ref: + ref = read_data(args.ref) + if args.aln: + aln = read_data(args.aln) + + if ref and aln: + try: + mo_args.index("--serial") + except: + mo_args.append("--serial") + pass + pass + + if args.url: + mserver.connect(args.url) + else: + mserver.start(args=mo_args, port=args.port, debug=args.debug) + pass + + if (args.input == "-"): + line = sys.stdin.readline() + idx = 0 + while line: + result = translate(mserver.proxy, args, line) + repack_result(idx, result) + line = sys.stdin.readline() + idx += 1 + else: + src = read_data(args.input) + for i in xrange(len(src)): + result = translate(mserver.proxy, args, src[i]) + repack_result(i, result) + if args.debug: + print >>sys.stderr, result['text'].encode('utf-8') + pass + if ref and aln: + result = mserver.proxy.updater({ + 'source': src[i], + 'target': ref[i], + 'alignment': aln[i], + })