W 1973 ukończył studia na Uniwersytecie Jagiellońskim, był doktorantem Instytutu Historii PAN u profesora Włodzimierza Kowalskiego (1974–1977). Stopień naukowy doktora uzyskał w Instytucie Historii Uniwersytetu Łódzkiego (1978). W 1988 na podstawie dorobku naukowego oraz rozprawy pt. Komunistyczna Partia Hiszpanii. Ewolucja programu i polityki w latach 1939–1985 uzyskał w Akademii Nauk Społecznych w Warszawie stopień naukowy doktora habilitowanego. Rozprawa ta uzyskała nagrodę ministerialną. W latach 1988–1989 był docentem i wicedyrektorem Instytutu Historii Ruchu Robotniczego ANS. W tym okresie był publicystą „Polityki”, prowadził też program telewizyjny Lewica na Zachodzie w TVP1, a także został lektorem KC na Śląsk. W 1981 był lektorem KC PZPR. Namawiał wówczas do zapisywania się do NSZZ „Solidarność”, w efekcie w stanie wojennym został zawieszony. W lipcu 1989 zaangażował się w działalność Ruchu 8 Lipca, w którym był członkiem zespołu koordynacyjno-redakcyjnego, mającego za zadanie opracowanie programu i statutu nowej partii reprezentującej nurt demokratycznego socjalizmu.

29 stycznia 2018 prezydent RP nadał mu tytuł naukowy profesora nauk społecznychPostanowienie Prezydenta Rzeczypospolitej Polskiej z dnia 29 stycznia 2018 r.