SDL2 supports only the new evdev interface. While SDL1 defaults to evdev interface you can force it to use the old Joystick API by setting the environment variable SDL_JOYSTICK_DEVICE=/dev/input/js0. Most new games will default to the evdev interface as it gives more detailed information about the buttons and axes available and also adds support for force feedback. Symbolic links to those devices are also available in /dev/input/by-id/ and /dev/input/by-path/ where the legacy Joystick API has names ending with -joystick while the evdev have names ending with -event-joystick. dev/input/jsX maps to the Joystick API interface and /dev/input/event* maps to the evdev ones (this also includes other input devices such as mice and keyboards).
Linux has two different input systems for gamepads – the original Joystick interface and the newer evdev-based interface. (Discuss in Talk:Gamepad#Joystick API vibration support) Reason: Need info about differences between API, how to switch between them.