",{"_key":323,"_type":66,"marks":324,"text":325},"3fa42e307a818",[],"s to be wrapped in paragraph tags since.. well, forever.",[327,329,331],{"_key":293,"_type":98,"href":328},"http://code.google.com/p/markdownsharp/source/list",{"_key":302,"_type":98,"href":330},"http://meta.stackoverflow.com/questions/12694/escaping-backticks-fails",{"_key":311,"_type":98,"href":332},"http://code.google.com/p/markdownsharp/source/detail?r=20",{"_key":334,"_type":62,"children":335,"markDefs":365,"style":100},"8df0382fe30b",[336,340,345,349,354,358,362],{"_key":337,"_type":66,"marks":338,"text":339},"8df0382fe30b0",[],"Anyway, ",{"_key":341,"_type":66,"marks":342,"text":344},"8df0382fe30b1",[343],"bd4648ff5cd0","take a look at the project",{"_key":346,"_type":66,"marks":347,"text":348},"8df0382fe30b2",[],", feel free to ",{"_key":350,"_type":66,"marks":351,"text":353},"8df0382fe30b3",[352],"ef16ff6e78db","browse the source",{"_key":355,"_type":66,"marks":356,"text":357},"8df0382fe30b4",[],", and ",{"_key":359,"_type":66,"marks":360,"text":361},"8df0382fe30b5",[90],"please contribute whatever you can to make it better for everyone",{"_key":363,"_type":66,"marks":364,"text":95},"8df0382fe30b6",[],[366,367],{"_key":343,"_type":98,"href":193},{"_key":352,"_type":98,"href":368},"http://code.google.com/p/markdownsharp/source/browse/",true,"2009/12/28",false,{"code":373,"language":374},"\u003Cp>One of the things that came out of \u003Ca href=\"http://blog.stackoverflow.com/2009/10/markdown-one-year-later/\">Markdown, One Year Later\u003C/a> was that we \u003Cem>really\u003C/em> needed to \u003Cstrong>open source our C# server-side implementation of Markdown\u003C/strong>. \u003C/p>\n\u003Cp>While the client side implementation of Markdown is \u003Ca href=\"http://blog.stackoverflow.com/2009/01/wmd-editor-reverse-engineered/\">already open sourced\u003C/a>, there are two sides to the Markdown story on Stack Overflow -- what appears in the Javascript preview on the client, and what is rendered in C# on the server and ultimately stored in the database. While we are trying to normalize the client and server implementation over time -- I've made significant progress in the last two weeks in doing so -- there are inevitably small differences that creep in over time. It would be nice to have more eyeballs on this process to assist.\u003C/p>\n\u003Cp>Since \u003Ca href=\"http://aspnetresources.com/blog/markdown_announced.aspx\">the original C# library we used for Markdown\u003C/a> was not open source, this was a problem. I mailed the author, \u003Ca href=\"http://aspnetresources.com/\">Milan Negovan\u003C/a>, and he granted copyright to me.\u003C/p>\n\u003Cblockquote>\n\u003Cp>Hi there, guys!\u003C/p>\n\u003Cp>Sure, I don’t mind at all. I’ve always wanted the community to improve and contribute to its development, but never found the proverbial bandwidth to run the project that way.\u003C/p>\n\u003Cp>Cheers! \u003C/p>\n\u003C/blockquote>\n\u003Cp>Milan\u003C/p>\n\u003Cp>So, \u003Cstrong>I've released our C# implementation of Markdown under a proper open source license\u003C/strong> -- as \u003Ca href=\"http://code.google.com/p/markdownsharp/\">MarkdownSharp\u003C/a>!\u003C/p>\n\u003Cp>\u003Ca href=\"http://code.google.com/p/markdownsharp/\">\u003Cimg src=\"http://stackoverflow.blog/wp-content/uploads/2017/02/p54d6.png\" alt=\"markdown-sharp-logo\">\u003C/a>\u003C/p>\n\u003Cp>\u003Ca href=\"http://code.google.com/p/markdownsharp/\">\u003C/a>\u003Ca href=\"http://code.google.com/p/markdownsharp/\">http://code.google.com/p/markdownsharp/\u003C/a>\u003C/p>\n\u003Cp>I've already made a few changes to properly package it as a decent open source project:\u003C/p>\n\u003Cul>\u003Cli>\n\u003Cp>included relevant links, documentation, and related files\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>added MDTest 1.1 test suite\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>added Simple test suite\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>both NUnit and console runnable tests\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>standard Benchmark with short, medium, and long Markdown samples\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>refactored and profiled for 2x - 5x more performance\u003C/p>\n\u003C/li>\n\u003Cli>the Stack Overflow specific changes (such as stricter italics/bold) are configurable, so you can toggle them on and off.\u003C/li>\n\u003C/ul>\u003Cp>One nice side effect of this process is that I've been able to incorporate \u003Ca href=\"http://code.google.com/p/markdownsharp/source/list\">quite a few bug fixes\u003C/a>, some of them fairly serious. The \u003Ca href=\"http://meta.stackoverflow.com/questions/12694/escaping-backticks-fails\">failure to escape backticks\u003C/a> was a big one, and there was a subtle \u003Ca href=\"http://code.google.com/p/markdownsharp/source/detail?r=20\">bug involving a single character of whitespace\u003C/a> that caused all \u003Ccode><hr/>\u003C/code>s to be wrapped in paragraph tags since.. well, forever.\u003C/p>\n\u003Cp>Anyway, \u003Ca href=\"http://code.google.com/p/markdownsharp/\">take a look at the project\u003C/a>, feel free to \u003Ca href=\"http://code.google.com/p/markdownsharp/source/browse/\">browse the source\u003C/a>, and \u003Cstrong>please contribute whatever you can to make it better for everyone\u003C/strong>.\u003C/p>","html","2009-12-28T12:00:00.000Z",{"current":377},"introducing-markdownsharp",[379,387],{"_createdAt":380,"_id":381,"_rev":382,"_type":383,"_updatedAt":380,"slug":384,"title":386},"2023-05-23T16:43:21Z","wp-tagcat-community","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":385},"community","Community",{"_createdAt":380,"_id":388,"_rev":382,"_type":383,"_updatedAt":380,"slug":389,"title":391},"wp-tagcat-company",{"current":390},"company","Company","Introducing MarkdownSharp",[394,400,406,412],{"_id":395,"publishedAt":396,"slug":397,"sponsored":12,"title":399},"f0807820-02d7-4fc5-845f-3d76514b81c0","2025-08-11T16:00:00.000Z",{"_type":10,"current":398},"renewing-chat-on-stack-overflow","Renewing Chat on Stack Overflow ",{"_id":401,"publishedAt":402,"slug":403,"sponsored":12,"title":405},"e33464c4-b21b-4019-8b86-64a46335a95e","2025-08-07T16:00:00.000Z",{"_type":10,"current":404},"a-new-worst-coder-has-entered-the-chat-vibe-coding-without-code-knowledge","A new worst coder has entered the chat: vibe coding without code knowledge",{"_id":407,"publishedAt":408,"slug":409,"sponsored":12,"title":411},"8b04b236-51d5-4747-9de8-2fe6e6a2512e","2025-08-04T16:00:00.000Z",{"_type":10,"current":410},"cross-pollination-as-a-strategic-advantage-for-forward-thinking-organizations","Cross-pollination as a strategic advantage for forward-thinking organizations",{"_id":413,"publishedAt":414,"slug":415,"sponsored":12,"title":417},"5bddfa7a-32ce-4f9b-9919-10f03a9ef39b","2025-07-31T16:00:00.000Z",{"_type":10,"current":416},"do-ai-coding-tools-help-with-imposter-syndrome-or-make-it-worse","Do AI coding tools help with imposter syndrome or make it worse?",{"count":419,"lastTimestamp":12},0,["Reactive",421],{"$sarticleModal":371},["Set"],["ShallowReactive",424],{"sanity-D03tWxiAcyiAaJE53XUi5uR7ydAAeP6X2HnnHFLANgE":-1,"sanity-comment-wp-post-3649-1755545597942":-1},"/2009/12/28/introducing-markdownsharp"]