Consider an n-vertex graph G = (V, E) of maximum degree Δ, and suppose that each vertex v ε V hosts a processor. The processors are allowed to communicate only with their neighbors in G. The communication is synchronous, i.e., it proceeds in discrete rounds. In the distributed vertex coloring problem the objective is to color G with Δ + 1, or slightly more than Δ + 1, colors using as few rounds of communication as possible. (The number of rounds of communication will be henceforth referred to as running time.) Efficient randomized algorithms for this problem are known for more than twenty years [1, 19]. Specifically, these algorithms produce a (Δ + 1)-coloring within O(log n) time, with high probability. On the other hand, the best known deterministic algorithm that requires polylogarithmic time employs O(Δ2) colors. This algorithm was devised in a seminal FOCS'87 paper by Linial . Its running time is O(log* n). In the same paper Linial asked whether one can color with significantly less than Δ2 colors in deterministic polylogarithmic time. By now this question of Linial became one of the most central long-standing open questions in this area. In this paper we answer this question in the affirmative, and devise a deterministic algorithm that employs Δ1+o(1) colors, and runs in polylogarithmic time. Specifically, the running time of our algorithm is O(f (Δ) log Δ log n), for an arbitrarily slow-growing function f (Δ) = ω (1). We can also produce O(Δ 1+η )-coloring in O(logΔlog n)-time, for an arbitrarily small constant η > 0, and O(Δ)-coloring in O(Δ εlogn) time, for an arbitrarily small constant ε > 0. Our results are, in fact, far more general than this. In particular, for a graph of arboricity a, our algorithm produces an O(a1+η)-coloring, for an arbitrarily small constant η > 0, in time O (log a log n).