You can think WritableComparable as a combination of Writable and Comparable. The requirement of VertexId to be WritableComparable is specified in https://giraph.apache.org/apidocs/org/apache/giraph/graph/Computation.html or https://giraph.apache.org/apidocs/org/apache/giraph/graph/Vertex.html. Regarding why they need to implement WritableComparable, maybe we should ask Avery :)