{"id":93,"date":"2016-07-13T09:00:39","date_gmt":"2016-07-13T09:00:39","guid":{"rendered":"http:\/\/dlang.org\/blog\/?p=93"},"modified":"2021-10-08T11:00:15","modified_gmt":"2021-10-08T11:00:15","slug":"the-dlang-vision-and-improvement-process","status":"publish","type":"post","link":"https:\/\/dlang.org\/blog\/2016\/07\/13\/the-dlang-vision-and-improvement-process\/","title":{"rendered":"The DLang Vision and Improvement Process"},"content":{"rendered":"<p>The evolution of D has been a process of steady, if not always speedy, improvement. In the early days, Walter was the only person working on the language, the reference compiler, and the standard library, though he did accept contributions. Today, numerous people contribute to or maintain a piece of every aspect of D&#8217;s development. Semi-formal processes exist where none did before. Things have come a long way.<\/p>\n<p>As with anything in life, those who come later are unaware of the improvements that came before.\u00a0If you&#8217;ve just stepped off the boat into D Land, you don&#8217;t remember the days before<a href=\"http:\/\/www.digitalmars.com\/d\/archives\/digitalmars\/D\/announce\/D_Programming_Language_source_dmd_phobos_etc._has_moved_to_github_19886.html\"> core D development moved to github<\/a>, or the time before <a href=\"http:\/\/www.digitalmars.com\/d\/archives\/digitalmars\/D\/announce\/Visual_D_released_18010.html\">the first release of Visual D<\/a>, the D plugin for Visual Studio <a href=\"http:\/\/rainers.github.io\/visuald\/visuald\/StartPage.html\">developed and maintained by Rainer Schuetz<\/a>e. All you&#8217;re going to see is that your pet Pull Request hasn&#8217;t yet been merged, or that Visual D doesn&#8217;t allow you to do all of the things that the core of Visual Studio allows.\u00a0You&#8217;ll rightly head over <a href=\"https:\/\/forum.dlang.org\/\">to the forums<\/a> to complain about the PR merge process, or request a new feature for Visual D (or gripe about its absence).<\/p>\n<p>And so the story goes, <em>ad infinitum<\/em>. Along the way, the community loses some members\u00a0who once found promise in the language, but become\u00a0frustrated because their pet peeves have not been addressed. And herein lies the point of this post.<\/p>\n<p>The D Programming Language is a <em>community driven<\/em> language. As such, there is no formal process for creating\u00a0opportunities to fix and improve the areas that need fixing and improving. Walter has his head down in compiler code and often barely has time to come up for air. Andrei is stretched thin in the additions\u00a0he has planned for Phobos, the work\u00a0he does on behalf of\u00a0the D Foundation, and his numerous other commitments.\u00a0It&#8217;s up to the community to get things moving on other fronts.<\/p>\n<p>Most often, improvements come at the instigation of one highly motivated individual, who either gets busy with the rolling up of sleeves or keeps pushing until someone better positioned takes up the challenge. Still others want to contribute, but aren&#8217;t sure where to begin. One place is the documentation, as described <a href=\"http:\/\/dlang.org\/blog\/2016\/06\/07\/the-d-website-and-you\/\">the last time<\/a> this blog touched on this theme. For other areas, the place to look is the D Vision Document.<\/p>\n<p><a href=\"http:\/\/forum.dlang.org\/thread\/majurl$2457$1@digitalmars.com?page=1\">Andrei started<\/a> the Vision Document as a means to let the community know the direction in which he and Walter\u00a0expect the language to go, with plans to release\u00a0an updated document biannually. Each document lists progress that has been made in the preceding six months and the goals for the coming six. <a href=\"https:\/\/wiki.dlang.org\/Vision\/2015H1\">The first document<\/a>\u00a0focused on <em>goals the D leadership will personally enable or make happen<\/em>.\u00a0<a href=\"https:\/\/wiki.dlang.org\/Vision\/2016H2\">The latest document<\/a>, which was <a href=\"http:\/\/forum.dlang.org\/thread\/nlmc47$gtm$1@digitalmars.com\">put up for feedback<\/a>\u00a0recently in the forums,\u00a0includes additional goals the leadership <em>strongly believe are important for the success of the D language<\/em>. This new addition is the result of an initiative by community member Robert Schadek.<\/p>\n<p>Robert took the simple step of creating <a href=\"https:\/\/wiki.dlang.org\/Walter_Andrei_Action_List#Walter_and_Andrei.27s_Action_List\">a Wiki page<\/a> to\u00a0collate the wishlist items that Walter and Andrei mention in the forum now and again. These are things they would like to see completed, but have no time to make happen themselves. Andrei merged these items into the Vision Document so that there is only one document to maintain and one source for the information. This is a perfect example of a low-barrier community contribution that has led to\u00a0an overall improvement (though Robert is <a href=\"http:\/\/forum.dlang.org\/thread\/deltfarxxzxtswuayksy@forum.dlang.org?page=1\">no stranger<\/a> to higher-barrier contributions) and shows how there are ways other than submitting Pull Requests to improve the D Programming Language experience.<\/p>\n<p>A higher-level means of helping to improve the language is through D Improvement Proposals. A DIP is a formal proposal to make changes or additions to the language. The author of the DIP need not be the implementer. For some time, these\u00a0have primarily been loosely maintained in an informal process <a href=\"https:\/\/wiki.dlang.org\/DIPs\">at the D Wiki<\/a>. Recently,\u00a0Mihails Strasuns decided the process needed better management, so he created <a href=\"https:\/\/github.com\/dlang\/DIPs\">a github repository for DIPs<\/a> as part of a new process to address some\u00a0shortcomings of the old system. Then he made <a href=\"http:\/\/forum.dlang.org\/post\/nlqsah$15j7$1@digitalmars.com\">a forum announcement<\/a>\u00a0about it, including the news that\u00a0he is, for now, volunteering his services as the new DIP manager.<\/p>\n<p>So, to recap, if you are itching to contribute to D in some way that you know will have an impact, the latest Vision Document is the place to go for inspiration. As I write, that&#8217;s <a href=\"https:\/\/wiki.dlang.org\/Vision\/2016H2\">the 2016H2 document<\/a>. If you have an idea for a new feature or improvement to the language, <a href=\"https:\/\/github.com\/dlang\/DIPs\">creating a DIP<\/a> is the way to go (a future post here will say more about the DIP process). There are numerous other areas where contributions are welcome, like <a href=\"https:\/\/dlang.org\/bugstats.php\">fixing or\u00a0reporting bugs<\/a>, <a href=\"https:\/\/github.com\/dlang\">reviewing PRs,<\/a> and taking the initiative to contribute to the D process like Robert and Mihails have done.<\/p>\n<p>If you don&#8217;t have the time, motivation, or inclination to contribute, that&#8217;s fine, too. Just keep in mind when you come to the forums to vent about one frustration or another (and please, feel free to do so)\u00a0that much of what exists in the D ecosystem today, along with nearly every improvement that will come for the foreseeable future, is the result of someone in the community expending\u00a0their own time and effort to make it so, usually with no financial incentive (the exception being <a href=\"https:\/\/www.bountysource.com\/teams\/d\">bug bounties<\/a>). Please let that knowledge color your perspective and your expectations. If you can&#8217;t, or won&#8217;t, work to resolve shortcomings in the language, the processes, or the ecosystem yourself, your goal in bringing them to the community should be to motivate someone else to do so. Not only will that increase the odds of fixing your issues, it\u00a0will help all D users inch closer <a href=\"http:\/\/dlangcomicstrips.tumblr.com\/image\/137301575132\">to the ultimate D Nirvana<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The evolution of D has been a process of steady, if not always speedy, improvement. In the early days, Walter was the only person working on the language, the reference compiler, and the standard library, though he did accept contributions. Today, numerous people contribute to or maintain a piece of every aspect of D&#8217;s development. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[15],"tags":[],"_links":{"self":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/93"}],"collection":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":12,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/93\/revisions"}],"predecessor-version":[{"id":105,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/posts\/93\/revisions\/105"}],"wp:attachment":[{"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/media?parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/categories?post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dlang.org\/blog\/wp-json\/wp\/v2\/tags?post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}