timeline

A Timeline of human history

pages-build-deployment GitHub release MIT license

This project creates a graph of Human history with python and reportlab fpdf2. Version v3.5 replicates and expands the information of v1.1 from 2009 on one single page. With v4.2 in early 2024 some images make it into the timeline after 15 years of slow development.

timeline 4.6

Compare this 4000 year timespan of v4.2 from 2024 with the same time period in v1.1 from 2009 (below):

timeline 4.2 first 4000 years

timeline 1.1

You see that many more details were added. And something is off with the scale - explained later - since the scale (millimeter/year) in 2009 was not constant.

Translations

The language specific files have been separated from the program code (together with other information, data and list of colors) since version 3.4. While I put the translated string into an utf-8 encoded .csv file, the very process is not that straightforward. It starts with a proper translation (cloud APIs for Azure cloud and Googletranslate are only a start), continues with fontfiles that support this language and glyphs (January 2024 with CJK) and continues with font shaping engines like harfbuzz (May 2024) for complexer writing systems like Persian, Devanagari for Hindi, Khmer and Sinhala, among a few. Currently there are 446 text fields in total in a few languages. The print edition has 5cm extra left and right for the rollers at the end of the scroll. The reference size is 1308x210 mm but it can be scaled to any size at the print shop:

Language print names reviewed complete latest
Arabic (العربية) link        
German (Deutsch) link x x x 2024-06-07
English link x x x 2024-06-07
Spanish (Español) link x     2024-06-15
Finnish (Suomi)          
French (Français)          
Igbo (Ásụ̀sụ́ Ìgbò)          
Iloko (Ilocano) link x x x 2024-06-07
Japanese (日本語) link x x   2024-06-11
Khmer (ខ្មែរ) link x     2024-06-19
Khmer (ខ្មែរ) with Arabic numerals link x     2024-06-24
Kankana-ey link x x x 2024-06-07
Korean (한국인)          
Norwegian (Norsk)          
Russian (Русский) link x     2024-06-17
Sinhala (සිංහල)          
Thai (ภาษาไทย)          
Filipino (Tagalog) link x x x 2024-06-07
Vietnamese (Tiếng Việt) link x   x 2024-06-11
Chinese Cantonese (Simplified) (普通话)          
Chinese Mandarin (Simplified) (普通话)          

Support for languages using the CJK glyphs took some extra work, and I learned a lot about tofu and NO TOfu (noto) and related projects in January 2024. For Khmer, Sinhala and Arabic I finally needed a shape engine like harfbuzz. Since it is not supported in reportlab, I switched to fpdf2 with version 4.7 in July 2024.

Reactivation 2023

After 14 years it was finally time to translate the project to English and share with my friends. In the years since 2009 I learned a lot about programming languages, vector graphics and possible solutions using pandas, csv files and reportlab (instead of matplotlib). In a first stage I translated the old OpenOffice documents to English. Then I collected data into csv/tsv files for later automated processing and graph generation. This way the translation to another language is “just” the change of one import file. So far I translated the first page:

timeline one 4050 - 1450 BCE

This project started on here on Github on June 10th, 2023. My last day of work.

Version history

Scale challenges

To compensate for limited printing area I created a border of 1cm around each page. The effective drawing area on A4 landscape in each tile is 277 millimeter. This resulted in different time scales for each page with v1.0, since the covered timespan is not equal for each page. But this was one of the fundamental ideas of this project, to represent a larger amount of time with a bigger amount of space or length. Here are the values for comparison:

page begin end timespan width/mm years/mm resolution columns created
table 1 -4050 -1450 2600 277 9.39 10 260 2009-02-10
table 2 -1550 150 1700 277 6.14 5 340 2009-02-10
table 3 -130 2050 2180 277 7.87 10 218 2009-02-10
drawing odg -4000 2000 6000 1250 4.8 2015-12-13
reportlab python -4075 2075 6150 1188 5.18 2023-10-17
Adams Chart -4004 1900 5904 6900 0.86 1871-01-01

See scale.csv

Decision on the dimensions for this project

After the experience of 8 months with reportlab I decided in June 2024 to fix some scale parameters with the new rendering engine fpdf2. The original project from 2009 was to fit on three landscape A4 papers, but for v3.0 I decided to have four A4 papers width to be able to see more details in the first century and during the time of the northern and southern kingdom in Israel. That gives a height of 210 mm and 4 x 297 = 1188 mm. With 7mm border top and bottom for the scale and numbering the drawing area is 1188 x 196 mm for 6150 years: 4075 BCE to 2075 CE. Inside we leave 1 mm on top and bottom, so 194 mm are used for 46 rows of 10pt text (1 pt = 1/72 inch = 0.3528 mm). 10 pt is therefore 3.5mm and line height 194/46 = 4.217 mm = 12 pt.

Why 46 rows? For Adam to Joseph the lifespans overlap and create a descending shifted graph for 23 rows. A little space (maybe for Job) and adding Moses requires a minimum 25 rows. More are needed for the kings of Judah and Israel. There are 3 kings for the united kingdom, followed by 21 kings in the northern 10-tribe kingdom (some as short as 7 days like Zimri) and 20 kings in the southern kingdom of Judah. With the project in 2009 this resulted in 3+21+20 = 44 rows. In time I flipped the names for the kings to opposite sites, so I could overlap them with just 4 rows between them, reducing the requirement to just 29 lines, leaving 17 lines below for prophets, other dynasties, philosophers and kingdoms of Daniel’s prophecy in chapter 2, 7 and 10. The scale in 2023 had 44.7 rows, but with some adjustment I increased it to 46 and can now directly reference the rows in the data file csv.

Reflecting on larger solutions with more space, some are found below (for example the 7 meter long and 68 cm wide chart by Adams), while they contain a lot more information, in the end they ran out of space anyways. You can’t include every important detail. And the large size is hard to use, or even to transport. The limitation to four A4 papers makes the scroll small enough to put in a backpack and bring with you. And it’s still long enough that usually you use it as a scroll and open the part you’re interested in. Many now use the digital version on their tablet or smartphone, which still serves the purpose of visualizing time and events. There is the temptation to include more details in smaller sizes, but many pdf viewers limit the maximum zoom level. And it is inconsistent with the experience of the print version. It’s better to be inspired to search for more information in addition to the presented events.

Create your own pdf file and fix mistakes on the fly - with just a browser in less than 60 seconds

With a Jupyter Notebook you can download all required files and install all software in 2 steps in a virtual machine and then create a fresh pdf in the third step. Edit the downloaded files in your browser and repeat step 3 for an updated version:

Inspiration and other solutions

The idea of a timeline (link to Wikipedia) is neither unique nor new. One example would be Joseph Priestley’s “A New Chart of History” published in 1769 (more than 250 years ago):

A New Chart of History

Even more similar to my project is Adams Synchronological Chart or Map of History from 1871 (more than 150 years ago). In wikimedia is a scan of 40445x4309 pixel of this masterpiece. And there you would find a link to the 700 Megapixel JPEG 2000 scan file.

Adams Chart

In 2008 I got “Knaur’s Zeittafel der Weltgeschichte - Den letzten 6000 Jahren auf der Spur” with a total length of 7 meters. I’m far from having all these information included in my edition. Here are links to two editions at amazon.de.

Here is another example from amazon.de, covering the last 5000 years in 1.2 meter like this project here. The map by Schofield & Sims:

map by Schofield & Sims

It looks like Knaur’s book is a translated and updated version of Adams Synchronological Chart or Map of History - which is 23’ long (7 meter) and 27” tall (68 cm). The original is from 1871.

Adams Map of History

The reformation made a timeline for the 220 years 1480 - 1700 AD in a similar style.

Another design attempt to pack a lot of information in a written horizontal way into a timeline that progresses from left to right is this Texan Spiral semicircle project:

Bible Timeline History Chart

Time of 12 Prophets from 850 BCE to 400 BCE

time of 12 prophets

Short history of this project - with just pictures

2009

2009

2015

2015

2023

2023-1 2023-2

2024

2024-1 2024-2 2024-3 timeline 4.6 2024-7 timeline 4.7