Been working on markwhen for a few years now, originally inspired by cheeaun's life timeline that another commenter posted about.
At this point markwhen is available as a VS Code extension, Obsidian plugin, CLI tool, and web editor in Meridiem.
Some recent markwhen developments:
- Dial, a fork of bolt.new (Stackblitz's very cool tool that leverages AI to help quickly scaffold web projects): an in-browser editor that lets you edit existing markwhen visualizations like the timeline or calendar or make your own. I just released that yesterday so it's still rough but I have big plans for it (it's one of the visualizations in meridiem)
- Event properties: each entry can have it's own "frontmatter" in the form of `key: value` pairs. I wanted this as I'm aiming for more iCal interoperability in the future, so each event could theoretically have things like "attendees" or google calendar ids or other metadata. This was released in the last month or two.
- remark.ing: this one isn't ready yet by any means but it's like a twitter/bluesky/mastodon-esque aggregated blog site. So you write markwhen and each entry is a post. In this way "scheduling" a post is just writing a future date next to it, and you have all your blog in one file. This one is a major WIP
I skimmed the documentation and didn't see any reference as to whether Markwhen supports dependencies? I.e. MSProject-style make one event dependent on another task ending or starting.
Congratulations on your release! I've working on building exactly the same tool but you beat me to it... I cannot compete with this functionality, and completeness. Amazing work!
Remark.ing sounds incredible. I've been considering building something like Memos but based on Markdown files rather than a relational database for personal use, but this comes really close to what I was looking for.
Are you planning to open source it? I couldn't find it on your GitHub.
This is neat! It reminded me of this project by cheeaun that enables one to create a visual timeline based on a simple texted based format. The purpose was to plot one's life events in a visual way.
@USERNAME's life
===============
- 24/02/1955 Born
- ~1968 Summer job
- 03/1976 Built a computer
- 01/04/1976 Started a company
- 04/1976-2011 Whole bunch of interesting events
That is a great project! I wonder if anyone has created a visualization that uses a "life in weeks" format (like https://waitbutwhy.com/2014/05/life-weeks.html) rather than a linear horizontal timeline.
Right now I'm using YAML for the file format, as I wanted something that would be reasonably readable for both humans and machines.
Markwhen would also fit the bill nicely, so that's something to consider, at least as an export format.
My entries have a lot of properties, though (stuff like wind speed, vessel coordinates, barometer, etc). Traditional ship's logbooks were done in a tabular manner to record all this. So I'm not sure if that would end up looking quite messy.
Here is an example of a day of log entries in the current format:
https://github.com/meri-imperiumi/log/blob/main/_data/logboo...
I'm using these also for some data analysis, like watermaker membrane health, or sailed miles per crew member.
The charts you linked don't look like the same kind of chart to me. There's information about what happened after what, but the information about how much each task took seems missing.
This looks terrific, but honestly Markdown is a document markup language. Org mode, while superficially similar in scope, is actually a data storage and exchange format. The data manipulation and querying built around Org mode are unlikely to be replicated in Markdown.
Agree. This could be easily done in org. I feel that if org was more popular, a lot of these solutions would disappear, or would be a small project that just reads some org properties.
I guess it would be key to have better support for easier editors, like vscode and maybe even a dedicated editor
It’s plausible that it could be a trademark issue, were “markdown” strongly enforced. “When” isn’t the furthest from “down”. However, the reason behind Gruber’s issue with it has been misinterpreted and the Markdown name is very widely used without any arrangement with its creator, and a trademark for Markdown is not registered with the USPTO by its creator AFAICT.
> However, the reason behind Gruber’s issue with it has been misinterpreted and the Markdown name is very widely used without any arrangement with its creator
Correct. Not to get too in the weeds on a 10 year old controversy, but Gruber has gone on the record to say he is cool with things like GitHub-flavored Markdown but from what I gathered back then and since then whenever he spoke on the subject (which has not been a lot), his issue with the CommonMark project (as it would eventually be called) using any name that included “Markdown” in the name wasn’t cool with him since they went ahead with an ask forgiveness instead of receiving permission approach on attempting to basically expropriate Markdown. GitHub-flavored Markdown and things like it don’t do that, they just claim to be a different kind of Markdown.
Also never understood why he didn’t just go ahead and trademark it, but at this point would it even be enforceable? It’s kind of generic now, but I don’t know if it’s generic enough to not be enforceable either, and maybe he doesn’t want the obligation of having to enforce it.
EDIT: anyway, point is, this is so far from being Markdown or claiming to be that I don’t think there is a single issue with Markwhen as presented that would ruffle any feathers in Philly. The creator shouldn’t have to worry and nobody should be telling him to worry. Like, seriously, none of this is relevant. Markwhen is just a cool looking thing that exists now and I like timelines.
Here's the license (http://daringfireball.net/projects/downloads/Markdown_1.0.1....) and I don't think Gruber mentioned anything about a "trademark"? It seems like it was mostly about the name of his project just being taken unethically. Just like if someone would take a open source project name and makes it look like an official for when it's not. Maybe not a trademark infringement, but certainly not nice or ethical.
Joel tried to write an IETF Standard by the backdoor for a thing he didn't invent.
Having been kicked off the word standard, they immediately thought "how can we still do this while technically obeying it". So they picked the closest possible word to Standard, implying it really was the definitive version.
Yeah, I'd be grumpy too.
If he'd called it 'Atwood Flavoured Markdown' there wouldn't be an issue. But Joel wanted to own the definition of Markdown.
As a group of tech CEOs they decided to co-opt someone's idea without even asking if it was okay.
In fact kicking John off the project was the point.
You can do that, you just can't keep the name they created.
Seems not right for the comments here to be empty but I don't have much to say other than this looks incredibly nice. Hope I have an excuse to use it at some point.
That's weird. It works perfectly for men much older computers and also on my M2 Mac Pro. What version of OSX are you using? I created that product, btw.
Besides the tool itself that website typography is excellent. Guess I'll have to use Playfair in my next project.
Edit: One thing I'd like to see with the basic syntax example is fiddle with your default dates to make it more obvious that the span is a span. At the time scale it is now, it just looks like another dot.
I would love to be able to manage my actual calendar with this. By which I mean, I want a seamless bridge with google calendar, iCal, etc. that also lets me view, edit, source-control, etc. my calendar with an mw file. I think this is very cool!
This is really cool, I wish there was some sort of life planner software where I can write down appointments, notes, ideas, and more in a simple format like Markdown, and automatically get notifications/reminders based on what I wrote.
Big fan of timelines. I am going to use this for sure
Have had an idea for a timeline search/visualization. Search a thing and that pulls pages and related pages with date/times from Wikipedia. With a zoom in/out to adjust resolution like google maps - weight nodes on timeline based on page views/edits/links. Have not gotten around to try to make something like it.
I bring it up here just in case something already exists and I missed it.
> for plainly writing logs , gantt charts , blogs , feeds , notes , journals etc.
So, how would this combine with markdown, for the content within dated blog/journal entries? And how would I use dates as plain dates rather than special markwhen entities?
Is there syntax for dependent tasks in the timeline? In other words tasks that only start once prerequisites are done.
If the date of the original tasks changes, the dependent tasks move accordingly automatically, without needing to edit a full list of dates for each dependent item.
Because this is ISO 8601 date format, the standard date format that intentionally uses dashes to not confuse 25/01/22, 01/22/25 and 22/01/26 which are the same date in different formats
(that's why it uses dashes for dates, as for why it uses / for interval I have no idea)
Thanks for linking that. I’m a big proponent of using ISO 8601 but had either missed or completely forgotten about it specifying a format for intervals.
Note that ISO also permits a double hyphen as the interval separator which is hugely preferable to me personally and also works with file names (as mentioned in that Wikipedia article)
I know ISO 8601, but that doesn't answer my question. Let me rephrase this, why was a format intuitive to a machine chosen instead of a format which feels more intuitive to a human?
I think YYYY/MM/DD - YYYY/MM/DD will mean the correct thing to many more people than YYYY-MM-DD / YYYY-MM-DD, which I suspect many will interpret as an OR and not a RANGE.
Personally I think it goes a little over-flexible on support for non-strict formatted dates to the point it becomes difficult to figure out what a given date string is going to result in rather than feeling easier to use. That's probably part of the reason the primary example uses the clearer format.
I'm with you on / not being a good range separator but using it for the individual dates is much much worse. Please stick to - for YYYY-MM-DD to avoid confusion and keep / restricted to inbred date formats.
How would one go about creating Obsidian support for a timeline that was scattered across multiple files?
I'm thinking like the network visualizer that Obsidian has, it would be great if it could find tagged dates in any file and display them on a common timeline.
Just wanted to say congrats on the project. This is truly a masterpiece from the utility of it, the novelty, to execution with the vscode / meridian app, and sass. Brilliant execution!
I'd love something that can support uncertain timelines - I maintain a list of space events that I'm interested in, but I haven't yet figured out how to do the dates.
Nice, these “Markdown for X” tools are super neat. Wish this worked nicely with mobile view, seems like a lot of the text are overflowing and margins are squished in the demo
Creator here - glad to see people like markwhen!
Been working on markwhen for a few years now, originally inspired by cheeaun's life timeline that another commenter posted about.
At this point markwhen is available as a VS Code extension, Obsidian plugin, CLI tool, and web editor in Meridiem.
Some recent markwhen developments:
- Dial, a fork of bolt.new (Stackblitz's very cool tool that leverages AI to help quickly scaffold web projects): an in-browser editor that lets you edit existing markwhen visualizations like the timeline or calendar or make your own. I just released that yesterday so it's still rough but I have big plans for it (it's one of the visualizations in meridiem)
- Event properties: each entry can have it's own "frontmatter" in the form of `key: value` pairs. I wanted this as I'm aiming for more iCal interoperability in the future, so each event could theoretically have things like "attendees" or google calendar ids or other metadata. This was released in the last month or two.
- remark.ing: this one isn't ready yet by any means but it's like a twitter/bluesky/mastodon-esque aggregated blog site. So you write markwhen and each entry is a post. In this way "scheduling" a post is just writing a future date next to it, and you have all your blog in one file. This one is a major WIP
I used Markwhen recently to make an interactive Gantt chart for a proposal to a collaborator and it went swimmingly. (We got the gig!) So, thank you!
For the record, I used the Obsidian plugin to develop, then deployed as static HTML.
I skimmed the documentation and didn't see any reference as to whether Markwhen supports dependencies? I.e. MSProject-style make one event dependent on another task ending or starting.
Did you need/use that functionality?
https://docs.markwhen.com/syntax/dates-and-ranges.html#relat...
It doesn't look at task completion but you can base events on other events
Sorry if this is a dumb Q but what took that from Markwhen/down to HTML?
Not a dumb question! Markwhen has a CLI: https://docs.markwhen.com/cli that I used.
Oh I missed the rendering capability. Thanks for the link!
Congratulations on your release! I've working on building exactly the same tool but you beat me to it... I cannot compete with this functionality, and completeness. Amazing work!
Remark.ing sounds incredible. I've been considering building something like Memos but based on Markdown files rather than a relational database for personal use, but this comes really close to what I was looking for.
Are you planning to open source it? I couldn't find it on your GitHub.
Looks very good.
Just a note. It was really hard to find how to sign up.
EDIT: and I still haven't found how to sign in in the desktop app.
What is the difference between the free and the monthly subscription tier?
Great to see this again. Amazing how this tool expanded so much over the years!
nice! I've been thinking I will need something like this in Obsidian at some point, good to know it already exists.
pretty nifty tool. What license are you using for distribution?
This is neat! It reminded me of this project by cheeaun that enables one to create a visual timeline based on a simple texted based format. The purpose was to plot one's life events in a visual way.
https://github.com/cheeaun/life
Sample file (from the repository):
That is a great project! I wonder if anyone has created a visualization that uses a "life in weeks" format (like https://waitbutwhy.com/2014/05/life-weeks.html) rather than a linear horizontal timeline.
Rory Codes made a "life in days"[1] (which I shamelessly copied for my own amusement[2])
[1] https://days.rory.codes
[2] https://git.rjp.is/rjp/daysgo
I do :)
https://jvidal.dev/memento-mori
What a depressing site!
This is pretty cool! I'm the developer of a semi-automatic electronic logbook system for sailboats: https://bergie.iki.fi/blog/electronic-logbook/
Right now I'm using YAML for the file format, as I wanted something that would be reasonably readable for both humans and machines. Markwhen would also fit the bill nicely, so that's something to consider, at least as an export format. My entries have a lot of properties, though (stuff like wind speed, vessel coordinates, barometer, etc). Traditional ship's logbooks were done in a tabular manner to record all this. So I'm not sure if that would end up looking quite messy. Here is an example of a day of log entries in the current format: https://github.com/meri-imperiumi/log/blob/main/_data/logboo...
I'm using these also for some data analysis, like watermaker membrane health, or sailed miles per crew member.
Note that Mermaid also supports timelines (if it is new enough): https://mermaid.js.org/syntax/timeline.html
Mermaid is supported by gitlab/github and other markdown editors (within code blocks).
The charts you linked don't look like the same kind of chart to me. There's information about what happened after what, but the information about how much each task took seems missing.
Mermaid Gannt[0] diagram type might be similar to what you have in mind.
[0] https://mermaid.js.org/syntax/gantt.html
Again reimplementing Emacs Org mode. Nice work!
This looks terrific, but honestly Markdown is a document markup language. Org mode, while superficially similar in scope, is actually a data storage and exchange format. The data manipulation and querying built around Org mode are unlikely to be replicated in Markdown.
Just to name a few, https://github.com/legalnonsense/elgantt/, https://github.com/elsatch/org-timeline-viewer, https://orgmode.org/worg/org-tutorials/org-taskjuggler.html . Org-mode users and things like this seem to be like moths and a fire. I'm always surprised by the sheer amount of packages written for org-mode, a package itself of a rather niche piece of software.
Agree. This could be easily done in org. I feel that if org was more popular, a lot of these solutions would disappear, or would be a small project that just reads some org properties. I guess it would be key to have better support for easier editors, like vscode and maybe even a dedicated editor
Be careful.
Gruber (who has trademark in “Markdown”), appears to not like people using his trademark name.
https://blog.codinghorror.com/standard-markdown-is-now-commo...
Not only is this a different name, but that was an attempt to essentially expropriate Markdown. This is nothing even close to that.
It’s plausible that it could be a trademark issue, were “markdown” strongly enforced. “When” isn’t the furthest from “down”. However, the reason behind Gruber’s issue with it has been misinterpreted and the Markdown name is very widely used without any arrangement with its creator, and a trademark for Markdown is not registered with the USPTO by its creator AFAICT.
> However, the reason behind Gruber’s issue with it has been misinterpreted and the Markdown name is very widely used without any arrangement with its creator
Correct. Not to get too in the weeds on a 10 year old controversy, but Gruber has gone on the record to say he is cool with things like GitHub-flavored Markdown but from what I gathered back then and since then whenever he spoke on the subject (which has not been a lot), his issue with the CommonMark project (as it would eventually be called) using any name that included “Markdown” in the name wasn’t cool with him since they went ahead with an ask forgiveness instead of receiving permission approach on attempting to basically expropriate Markdown. GitHub-flavored Markdown and things like it don’t do that, they just claim to be a different kind of Markdown.
Also never understood why he didn’t just go ahead and trademark it, but at this point would it even be enforceable? It’s kind of generic now, but I don’t know if it’s generic enough to not be enforceable either, and maybe he doesn’t want the obligation of having to enforce it.
EDIT: anyway, point is, this is so far from being Markdown or claiming to be that I don’t think there is a single issue with Markwhen as presented that would ruffle any feathers in Philly. The creator shouldn’t have to worry and nobody should be telling him to worry. Like, seriously, none of this is relevant. Markwhen is just a cool looking thing that exists now and I like timelines.
Here's the license (http://daringfireball.net/projects/downloads/Markdown_1.0.1....) and I don't think Gruber mentioned anything about a "trademark"? It seems like it was mostly about the name of his project just being taken unethically. Just like if someone would take a open source project name and makes it look like an official for when it's not. Maybe not a trademark infringement, but certainly not nice or ethical.
I searched for a trademark for „Markdown“, but I didn’t find any. Can you show me the trademark?
Joel tried to write an IETF Standard by the backdoor for a thing he didn't invent.
Having been kicked off the word standard, they immediately thought "how can we still do this while technically obeying it". So they picked the closest possible word to Standard, implying it really was the definitive version.
Yeah, I'd be grumpy too.
If he'd called it 'Atwood Flavoured Markdown' there wouldn't be an issue. But Joel wanted to own the definition of Markdown.
As a group of tech CEOs they decided to co-opt someone's idea without even asking if it was okay.
In fact kicking John off the project was the point.
You can do that, you just can't keep the name they created.
Wow … John Gruber was also very upset, … , that the word Markdown was not capitalized throughout the spec.
This has a different name.
Does this work at all for fantasy timelines?
Trying to build a timeline like this:
title: History of the World
0: Foo Calendar's civilization founding.
124: Invention of the Foo Calendar
220: Founding of Bar
1310: Invention of GlooblyGock
5621: Demon invasion.
Edit: After trying it don't think it works for this usecase.
Seems not right for the comments here to be empty but I don't have much to say other than this looks incredibly nice. Hope I have an excuse to use it at some point.
Thanks for sharing!
two years ago, this post got almost 400 points! https://news.ycombinator.com/item?id=31810876
seconded.
Just in case anyone else is out of the loop like me. This can be used as a plugin in obsidian! https://obsidian.md/plugins?search=markw
Any chance you can copy some of this for aesthetics? https://www.chronoflotimeline.com/timeline/shared/3118/Home-...
Ha! That's my product. Thanks for mentioning!
Hopefully without the latency, it's slow to respond on a 2022 M2 Macbook Air (tried Firefox and Safari)
That's weird. It works perfectly for men much older computers and also on my M2 Mac Pro. What version of OSX are you using? I created that product, btw.
Not OP, but on Firefox 132, Sonoma 14.4, M1 Pro, it's quite janky. It's less so on Chrome and Safari, but it's still noticeable.
On a 3,2 GHz 6-Core i7 Mac Mini with Safari it also feels very laggy and unpleasant to use.
That is such an elegant solution. True sweet spot which was missing for me in traditional markdown!
Besides the tool itself that website typography is excellent. Guess I'll have to use Playfair in my next project.
Edit: One thing I'd like to see with the basic syntax example is fiddle with your default dates to make it more obvious that the span is a span. At the time scale it is now, it just looks like another dot.
Just edited the example so it looks like a span, thanks for the feedback!
I would love to be able to manage my actual calendar with this. By which I mean, I want a seamless bridge with google calendar, iCal, etc. that also lets me view, edit, source-control, etc. my calendar with an mw file. I think this is very cool!
This is really cool, I wish there was some sort of life planner software where I can write down appointments, notes, ideas, and more in a simple format like Markdown, and automatically get notifications/reminders based on what I wrote.
Have you looked at org mode for eMacs? That does precisely this
Big fan of timelines. I am going to use this for sure
Have had an idea for a timeline search/visualization. Search a thing and that pulls pages and related pages with date/times from Wikipedia. With a zoom in/out to adjust resolution like google maps - weight nodes on timeline based on page views/edits/links. Have not gotten around to try to make something like it. I bring it up here just in case something already exists and I missed it.
> for plainly writing logs , gantt charts , blogs , feeds , notes , journals etc.
So, how would this combine with markdown, for the content within dated blog/journal entries? And how would I use dates as plain dates rather than special markwhen entities?
This looks very good.
Is there syntax for dependent tasks in the timeline? In other words tasks that only start once prerequisites are done.
If the date of the original tasks changes, the dependent tasks move accordingly automatically, without needing to edit a full list of dates for each dependent item.
It's a timeline that tracks events and periods. It doesn't seem to have the concept of a task in any way.
It has checklists
Things like Markdown work because they are intuitive, but the date range syntax in Markwhen is anything but intuitive.
Why 2025-01-22 / 2026-10-24?
Why not 2025/01/22 - 2026/10/24?
Because this is ISO 8601 date format, the standard date format that intentionally uses dashes to not confuse 25/01/22, 01/22/25 and 22/01/26 which are the same date in different formats
(that's why it uses dashes for dates, as for why it uses / for interval I have no idea)
It's using a slash because that's how ISO 8601 defines time intervals. https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
Doesn't look like IOS 8601 allows spaces though so this is still an ad-hoc syntax.
RFC3339 at least lets you replace the ugly T with a space but also doesn't specify any spaces around "/" for ranges.
Thanks for linking that. I’m a big proponent of using ISO 8601 but had either missed or completely forgotten about it specifying a format for intervals.
Note that ISO also permits a double hyphen as the interval separator which is hugely preferable to me personally and also works with file names (as mentioned in that Wikipedia article)
I know ISO 8601, but that doesn't answer my question. Let me rephrase this, why was a format intuitive to a machine chosen instead of a format which feels more intuitive to a human?
I think YYYY/MM/DD - YYYY/MM/DD will mean the correct thing to many more people than YYYY-MM-DD / YYYY-MM-DD, which I suspect many will interpret as an OR and not a RANGE.
EDTF has advantages in less ambiguity. At the same time, Markwhen does also support non-EDTF dates too. The docs do a good job of explaining both https://docs.markwhen.com/syntax/dates-and-ranges.html
Personally I think it goes a little over-flexible on support for non-strict formatted dates to the point it becomes difficult to figure out what a given date string is going to result in rather than feeling easier to use. That's probably part of the reason the primary example uses the clearer format.
> intuitive to machines
Because the “humans” messed up so bad that there weren’t many options left for a simple enough standard.
I would prefer ISO 8601 too over some slight variation which is allegedly more intuitive for homo sapiens sapiens. To keep it simple.
Any time I see slashes in dates I do actually have to double-check whether it's DD/MM or MM/DD.
Hyphens.
Better: 2025-01-01..2025-01-31: (eg: git-log-ish format)
I'm with you on / not being a good range separator but using it for the individual dates is much much worse. Please stick to - for YYYY-MM-DD to avoid confusion and keep / restricted to inbred date formats.
Love this! If you're into representing time with simple markdown, check out the Chronos Timeline plugin for Obsidian too
https://obsidian.md/plugins?search=chronos+timeline
Nice that it installs on mobile too.
How would one go about creating Obsidian support for a timeline that was scattered across multiple files?
I'm thinking like the network visualizer that Obsidian has, it would be great if it could find tagged dates in any file and display them on a common timeline.
This reminds me of blocks.md (https://blocks.md/), a Markdown based form builder.
Great project, I always felt that this was missing in Markdown.
I wonder how we can "end" a timeline and start a new one in the same doc? So that I can write stuff like:
# My important project.
Description of the project goes here
## Timeline of the project.
2024-12-02: This is what I did today.
2024-12-01: This is what I did yesterday.
# My other important project.
Description of the project goes here.
## Timeline of the project.
2024-12-03: This is what I plan tomorrow.
---
Some thoughts about what I have written above.
What shortcut used to preview Markwhen documents in Obsidian?
I create a "Markwhen" folder and create a "test.mw" not there, but it doesn't render, and I can't an option for preview in the command palette.
This looks excellent - i've been looking for a timeline-based, simple-entry tool like this. Well done.
Just wanted to say congrats on the project. This is truly a masterpiece from the utility of it, the novelty, to execution with the vscode / meridian app, and sass. Brilliant execution!
I'd love something that can support uncertain timelines - I maintain a list of space events that I'm interested in, but I haven't yet figured out how to do the dates.
Belated, but especially when I see the group syntax, I wonder if this should be like a Markdoc extension or something?
Nice, these “Markdown for X” tools are super neat. Wish this worked nicely with mobile view, seems like a lot of the text are overflowing and margins are squished in the demo
I wonder how easy it is to render the timeline in a custom manner
are those the actual pronunciations of your products?
here'd be my recommendation: /ˈmɑːɻk.wɛn/ and /məˈɻɪd.i.ən/
This is neat. What I am waiting for is markdown for tables with cells supporting multiline content in an easy to use manner.
Really cool project, looking forward to using it in Obsidian.
OK, this is fantastic, like others mentioned. Now... to figure out how to use it in existing markdown... love the Obsidian integration.
Meridiem seems to only have ARM builds, no Intel builds. Could you perhaps update it to include Intel?
Looks neat! Is there a way to make it work with pandoc?
Neat, something like this was missing in my text-based workflow. Thanks for building !
Awesome! I really would like to see a Discourse Plugin for that.
This looks amazing, will definitely try to incorporate it into my workflow!
Does it work with non-English dates?
Is there support for date ranges? e.g. 2024-12-25 - 2025-01-06 ?
It's the second example in "Basic Syntax" on the right.