{"id":212,"date":"2014-05-22T08:12:52","date_gmt":"2014-05-22T08:12:52","guid":{"rendered":"http:\/\/finaldie.com\/blog\/?p=212"},"modified":"2014-05-28T11:36:49","modified_gmt":"2014-05-28T11:36:49","slug":"the-steps-of-creating-a-new-open-source-library","status":"publish","type":"post","link":"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/","title":{"rendered":"The Steps of Creating a New Open Source Library"},"content":{"rendered":"<p>Recently, I&#8217;m doing the refactoring job of <a href=\"https:\/\/github.com\/finaldie\/final_libs\/tree\/0.4\/fhash\" target=\"_blank\">fhash lib<\/a>, which is a part of <a href=\"https:\/\/github.com\/finaldie\/final_libs\" target=\"_blank\">flibs<\/a>, during the refactoring, I realised that to create a new open source project, we should have some basic steps, and follow the steps we will keep moving to right forward without lost.<\/p>\n<h3>Steps<\/h3>\n<p>Ok, let&#8217;s check the core steps:<\/p>\n<ol>\n<li>API Design Lock Down<\/li>\n<li>Write the code<\/li>\n<li>Write the UT<\/li>\n<li>Write the benchmarking tools<\/li>\n<li>Create a document of these APIs<\/li>\n<li>Announce your library<\/li>\n<\/ol>\n<h3>The benefit of Writing Documents<\/h3>\n<p>Most of developers don&#8217;t like to write the document, it&#8217;s so boring. But actually the document is not written only for yourself, it will be a great help for all the people who will maintain this project. Try to think a about it, if there is a open source library without any API document or comments in the code, will you use it in your project? The answer is <strong>NO<\/strong> obviously, so let me brief the benefits of writing document:<\/p>\n<ul>\n<li>Document will guide people to understand what is this quickly<\/li>\n<li>Document will help people to go to the right forward<\/li>\n<li>Document will help people who want to use the project<\/li>\n<\/ul>\n<h3>In The End<\/h3>\n<p>There are many many open source project without any document, and all of them almost failed, no one knows what is this, no one knows how to use it. So let&#8217;s create the open source project with more documents :D<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, I&#8217;m doing the refactoring job of fhash lib, which is a part of flibs, during the refactoring, I realised that to create a new open source project, we should have some basic steps, and follow the steps we will keep moving to right forward without lost. Steps Ok, let&#8217;s check the core steps: API &#8230; <a title=\"The Steps of Creating a New Open Source Library\" class=\"read-more\" href=\"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/\" aria-label=\"More on The Steps of Creating a New Open Source Library\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[4,22],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The Steps of Creating a New Open Source Library - Final Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Steps of Creating a New Open Source Library - Final Blog\" \/>\n<meta property=\"og:description\" content=\"Recently, I&#8217;m doing the refactoring job of fhash lib, which is a part of flibs, during the refactoring, I realised that to create a new open source project, we should have some basic steps, and follow the steps we will keep moving to right forward without lost. Steps Ok, let&#8217;s check the core steps: API ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/\" \/>\n<meta property=\"og:site_name\" content=\"Final Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hu.yuzhang\" \/>\n<meta property=\"article:published_time\" content=\"2014-05-22T08:12:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-05-28T11:36:49+00:00\" \/>\n<meta name=\"author\" content=\"final\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hyzwowtools\" \/>\n<meta name=\"twitter:site\" content=\"@hyzwowtools\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"final\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/\",\"url\":\"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/\",\"name\":\"The Steps of Creating a New Open Source Library - Final Blog\",\"isPartOf\":{\"@id\":\"https:\/\/finaldie.com\/blog\/#website\"},\"datePublished\":\"2014-05-22T08:12:52+00:00\",\"dateModified\":\"2014-05-28T11:36:49+00:00\",\"author\":{\"@id\":\"https:\/\/finaldie.com\/blog\/#\/schema\/person\/2d4c840d6e8e197f8ade98af2bd2fab3\"},\"breadcrumb\":{\"@id\":\"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/finaldie.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Steps of Creating a New Open Source Library\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/finaldie.com\/blog\/#website\",\"url\":\"https:\/\/finaldie.com\/blog\/\",\"name\":\"Final Blog\",\"description\":\"As simple as possible...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/finaldie.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/finaldie.com\/blog\/#\/schema\/person\/2d4c840d6e8e197f8ade98af2bd2fab3\",\"name\":\"final\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/finaldie.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4c720545b79ddb0f23b527e0bbcfd9bc?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4c720545b79ddb0f23b527e0bbcfd9bc?s=96&r=g\",\"caption\":\"final\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Steps of Creating a New Open Source Library - Final Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/","og_locale":"en_US","og_type":"article","og_title":"The Steps of Creating a New Open Source Library - Final Blog","og_description":"Recently, I&#8217;m doing the refactoring job of fhash lib, which is a part of flibs, during the refactoring, I realised that to create a new open source project, we should have some basic steps, and follow the steps we will keep moving to right forward without lost. Steps Ok, let&#8217;s check the core steps: API ... Read more","og_url":"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/","og_site_name":"Final Blog","article_publisher":"https:\/\/www.facebook.com\/hu.yuzhang","article_published_time":"2014-05-22T08:12:52+00:00","article_modified_time":"2014-05-28T11:36:49+00:00","author":"final","twitter_card":"summary_large_image","twitter_creator":"@hyzwowtools","twitter_site":"@hyzwowtools","twitter_misc":{"Written by":"final","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/","url":"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/","name":"The Steps of Creating a New Open Source Library - Final Blog","isPartOf":{"@id":"https:\/\/finaldie.com\/blog\/#website"},"datePublished":"2014-05-22T08:12:52+00:00","dateModified":"2014-05-28T11:36:49+00:00","author":{"@id":"https:\/\/finaldie.com\/blog\/#\/schema\/person\/2d4c840d6e8e197f8ade98af2bd2fab3"},"breadcrumb":{"@id":"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/finaldie.com\/blog\/the-steps-of-creating-a-new-open-source-library\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/finaldie.com\/blog\/"},{"@type":"ListItem","position":2,"name":"The Steps of Creating a New Open Source Library"}]},{"@type":"WebSite","@id":"https:\/\/finaldie.com\/blog\/#website","url":"https:\/\/finaldie.com\/blog\/","name":"Final Blog","description":"As simple as possible...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/finaldie.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/finaldie.com\/blog\/#\/schema\/person\/2d4c840d6e8e197f8ade98af2bd2fab3","name":"final","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/finaldie.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4c720545b79ddb0f23b527e0bbcfd9bc?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4c720545b79ddb0f23b527e0bbcfd9bc?s=96&r=g","caption":"final"}}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/posts\/212"}],"collection":[{"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/comments?post=212"}],"version-history":[{"count":3,"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/posts\/212\/revisions"}],"predecessor-version":[{"id":215,"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/posts\/212\/revisions\/215"}],"wp:attachment":[{"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/media?parent=212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/categories?post=212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/finaldie.com\/blog\/wp-json\/wp\/v2\/tags?post=212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}