Difference between revisions of "Vision/2018H1"

From D Wiki
Jump to: navigation, search
(Created page with "== Meta == This document discusses the high-level vision for D with semestrial granularity. It is released in January and July of each year. Note that the goals presented are...")
 
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
== Superseded by ==
 +
The half year Vision is replaced by a continues Vision that can be found at the following link [https://github.com/dlang/projects/issues Vision]
 +
Have a look at the Milestone to get an idea what is considered to be most important right now.
 +
 
== Meta ==
 
== Meta ==
  
Line 9: Line 13:
 
:Expenses for H1 2017 have averaged at $1605 per month. These include mostly recurring expenses (scholarships, contract payments).  
 
:Expenses for H1 2017 have averaged at $1605 per month. These include mostly recurring expenses (scholarships, contract payments).  
  
:The Foundation has funds for over two years assuming no changes in expenses and no money inflow. We, however, expect both donations and expenses to increase.
+
:The Foundation has funds for over three years assuming no changes in expenses and no money inflow. We, however, expect both donations and expenses to increase.
  
 
:The scholarship recipients have created [https://github.com/search?utf8=%E2%9C%93&q=user%3Adlang+author%3ARazvanN7+author%3Aedi33416+author%3ADarredevil+author%3Asomzzz+created%3A2017-07-01..2017-12-31&type=Issues 154 pull requests].
 
:The scholarship recipients have created [https://github.com/search?utf8=%E2%9C%93&q=user%3Adlang+author%3ARazvanN7+author%3Aedi33416+author%3ADarredevil+author%3Asomzzz+created%3A2017-07-01..2017-12-31&type=Issues 154 pull requests].
Line 15: Line 19:
 
;Organization
 
;Organization
  
:The core team (Walter Bright, Andrei Alexandrescu, Ali Cehreli, Martin Nowak, Vladimir Panteleev, and Sebastian Wilzbach, Mike Parker) kept operations working. There are new potential core collaborators.
+
:The core team (Walter Bright, Andrei Alexandrescu, Ali Cehreli, Martin Nowak, Vladimir Panteleev, Sebastian Wilzbach, Mike Parker) kept operations working. There are new potential core collaborators.
  
 
;Participation
 
;Participation
  
:H2 2017 has been flat in total pull requests compared to to H2 2016: [https://github.com/pulls?utf8=%E2%9C%93&q=is%3Apr+user%3Adlang+created%3A2017-07-01..2017-12-31 1712] vs. [https://github.com/pulls?utf8=%E2%9C%93&q=is%3Apr+user%3Adlang+created%3A2016-07-01..2016-12-31 1702]. Of these, 178 are open indicating that reviews are a bottleneck of increasing the PR traffic.
+
:H2 2017 has marked a 28.5% increase in total pull requests compared to to H2 2016: [https://github.com/pulls?utf8=%E2%9C%93&q=is%3Apr+user%3Adlang+created%3A2017-07-01..2017-12-31 1812] vs. [https://github.com/pulls?utf8=%E2%9C%93&q=is%3Apr+user%3Adlang+created%3A2016-07-01..2016-12-31 1410]. Of these, 124 are open.
  
:We have added merge rights to three contributors and are looking for more.
+
:We have continued to grant merge rights to strong contributors and fostered an increase in contribution quality and ''esprit de corps''.
  
:The new DIP process is enjoying good success so far with two accepted, one postponed, and two rejected.
+
:[http://erdani.com/d/downloads.daily.png Downloads of dmd] have increased substantially, but we assume the data collection is imperfect because it does not account for repeated downloads from the same URL. So bots, repeated unsuccessful attempts, or manipulation can influence the statistics. We are working on a better tool.
  
:Peak [http://erdani.com/d/downloads.daily.png 28-day moving average] of dmd downloads from the main site has been 1793.14 downloads/day on 2017-04-19. This is lower than our absolute record (2197.39 on 2016-11-18 attributed to Andrei's visit in China) but it is the second all-time best and a 17% increase over the best in H1 2016 (1527.07 2016-05-01).
+
:Visits to the [https://dlang.org dlang.org] website have been on the rise; an all-time high of 19,370 average daily visits has been attained in January 2018.
  
 
;Safety and Memory Management
 
;Safety and Memory Management
  
:Work on safe containers has made significant progress and has prompted improvements to allocators that are still ongoing.
+
:Work on safe containers has slowed down but is still ongoing.  
  
:There has been progress but not sufficient to deem the matter addressed.
+
:Of new note is Alexandru Jercaianu's work on a new allocator that offers a safe <tt>free</tt> primitive. That opens new avenues for approaching memory management.
  
 +
== H1 2018 Priorities ==
  
 
=== Technical ===
 
=== Technical ===
  
1. '''<tt>@safe</tt>ty:''' and '''<tt>@nogc</tt>:''' We have an attack on combining the two with the help of special allocators. A component that is in the mix is also supporting the type qualifiers <tt>immutable</tt> and <tt>const</tt>. The effort is underway but has not been completed.
+
We are doubling down on work on the following essential directions:
 +
 
 +
1. '''Lock down the language definition:''' D is a powerful language but its definition is not precise enough. A number of subtleties can only be assessed only by running the compiler, not by perusing the specification. This semester we are pushing for a better, more precise, and more complete specification of the D language.
 +
 
 +
2. '''<tt>@safe</tt>ty:''' we aim to enable large-scale uses of D with safety guarantees.
 +
 
 +
3. '''<tt>@nogc</tt>:''' Use of D without a garbage collector, most likely by using reference counting and related methods Unique/Weak references) for reclamation of resources. This task is made challenging by the safety requirement. We believe we have an attack in the upcoming allocators/collections combos.
 +
 
 +
4. '''Improve interoperability with other languages:''' Finishing <tt>-betterC</tt> should improve incremental migration of C and C++.
  
3. '''Improve interoperability with other languages:''' Progress on compiler-side <tt>-betterC</tt> but no work on improved C++ interoperability.
+
5. '''Improve introspection abilities:''' Make D the most powerful and easiest to use language for advanced introspection, code generation, and flexible designs. The approach must be two pronged - language improvements and libraries that use them gainfully.  
  
The major D contributors plan to work on a variety of projects related to various degrees to the three high-level goals above:
+
6. '''Tooling:''' Define and allow others to define tools that help the use of the D language by everyone.
  
* Static introspection remains an important strategic advantage of D and we should continue to improve both compiler support and library support. The <tt>static foreach</tt> DIP by Timon Gehr is a major development in the area.
+
Virtually all efforts we drive should be assessed and benchmarked relative to these goals.
* Dub fixes+improvements
 
* Add core.aa (https://github.com/dlang/druntime/pull/1282)
 
* Safe RC/Unique/WeakRef implementations (core.rc)
 
* <tt>@safe</tt> <tt>@nogc</tt> exceptions, general class objects
 
* Better error messages
 
* Partial and parallel recompilation (fix issues with scalable build methods, e.g. template instance emission)
 
* More lazy semantics
 
* Improve Phobos documentation (there are now the <code>properly_documented_public_functions</code> and <code>has_public_example</code> DScanner module blacklists - trimming them down module by module can be done by everyone)
 
* Infrastructure
 
** Transition website docs to dpl-docs/ddox
 
** Transition DPaste to https://run.dlang.io
 
** Improve DTour (DUB support, templates, more translations)
 
** Improve CI infrastructure (prevent random build failures, increase availability of the dub registry)
 
** Setup benchmarking CI
 
  
 
=== Non-Technical ===
 
=== Non-Technical ===
  
* Make it easier for people to contribute (aka remove entry barriers)
+
We have enjoyed an unprecedented growth spurt starting December 2017, and need to improve our organizational structures in response. That includes:
** add more tooling to help with initial problems (e.g. [https://github.com/dlang-bot DLang-Bot])
+
 
** improve contributor documentation and getting started (should be done by people who haven't seen the DMD/Phobos setup & codebase)
+
* Distribution
** encourage the "a fix is only a PR away" mentality (e.g. by means of blog post(s))
+
** Improve the process of porting the front-end to alternate backends (gdc, ldc).
** reduce barrier of entry for potential contributors (e.g. bugzilla/forums registration)
+
** Pursue distribution of gdc as part of the gcc compiler suite.
 +
** Improve installers, updaters, and related tooling.
 +
** Foster development of IDEs, IDE plugins, editor helpers.
 +
 
 +
* Contributor base
 +
** Improve our ''esprit de corps'' motivating talented community members to become high-impact contributors
 +
** Forge new relationships with universities, Expand our scholarship offering to new universities
 +
** Offer employment to the most active members of the community
 +
** Foster academic contributions (papers, courses, workshops)
 +
** Foster industrial contributions (joint projects, joint scholarships)
 +
** Convert interesting discussions on our own forums into interesting discussions on high-traffic forums such as reddit, hackernews, twitter, and facebook
 +
** Convert interesting debates and discussions into code and DIPs
 +
** Convert scattered, uncoordinated contributions into focused, large, high-impact projects. The evaluation from an impact perspective must be pervasive to all project/contributions/proposal assessments.  
 +
 
 +
* Better community management
 +
** Make the joining process more inviting and enjoyable
 +
** Have a clear path for a community member to get a question/concerned addressed, whether it's a technical question, a bug, a request for an improvement, or a meta topic.
 +
 
 +
* Make it easier for people to use the D language and contribute to it
 +
** Tooling
 +
** Documentation
 +
** Contributing detailed issues
 +
** Contributing fixes and improvements
 +
** Communication at all levels
 +
 
 +
* Public Relations
 +
** Drive DConf 2018 to a great success
 +
** Improve the standing of the D language on the landscape of programming languages
 +
** Establish the DIP as a clear, solid means to get a language enhancement going
 +
** Improve participation in the academic and industrial community
 +
** Make our message heard and lead the discussion with strong technical content (blogs, articles, interviews, online discussions)
  
* Increase motivation of existing contributors
+
[[Category:Vision Statements]]
** avoid PRs being stalled in the review queue
 
** increase interaction/communication between contributors. NG, mailing list, IRC, Slack
 
** make it easy for contributors to adopt a small-scale project (e.g. approved functions to Phobos, ...)
 
** clean up outdated Bugzilla entries, to make actionable issues easier to find
 
** promote the beginner/bootcamp Bugzilla tags (they are currently hard to find)
 
** publish blog post(s) about a "success story" such as [http://dlang.org/blog/2016/06/16/find-was-too-damn-slow-so-we-fixed-it this one]
 
** foster a positive, constructive, and professional environment
 

Latest revision as of 13:14, 11 May 2019

Superseded by

The half year Vision is replaced by a continues Vision that can be found at the following link Vision Have a look at the Milestone to get an idea what is considered to be most important right now.

Meta

This document discusses the high-level vision for D with semestrial granularity. It is released in January and July of each year. Note that the goals presented are those the D leadership works on, explicitly fosters, or strongly believes are important for the success of the D language. Other contributions are always welcome and do not need to be necessarily aligned with this document.

H2 2017 Review

The D Language Foundation
Expenses for H1 2017 have averaged at $1605 per month. These include mostly recurring expenses (scholarships, contract payments).
The Foundation has funds for over three years assuming no changes in expenses and no money inflow. We, however, expect both donations and expenses to increase.
The scholarship recipients have created 154 pull requests.
Organization
The core team (Walter Bright, Andrei Alexandrescu, Ali Cehreli, Martin Nowak, Vladimir Panteleev, Sebastian Wilzbach, Mike Parker) kept operations working. There are new potential core collaborators.
Participation
H2 2017 has marked a 28.5% increase in total pull requests compared to to H2 2016: 1812 vs. 1410. Of these, 124 are open.
We have continued to grant merge rights to strong contributors and fostered an increase in contribution quality and esprit de corps.
Downloads of dmd have increased substantially, but we assume the data collection is imperfect because it does not account for repeated downloads from the same URL. So bots, repeated unsuccessful attempts, or manipulation can influence the statistics. We are working on a better tool.
Visits to the dlang.org website have been on the rise; an all-time high of 19,370 average daily visits has been attained in January 2018.
Safety and Memory Management
Work on safe containers has slowed down but is still ongoing.
Of new note is Alexandru Jercaianu's work on a new allocator that offers a safe free primitive. That opens new avenues for approaching memory management.

H1 2018 Priorities

Technical

We are doubling down on work on the following essential directions:

1. Lock down the language definition: D is a powerful language but its definition is not precise enough. A number of subtleties can only be assessed only by running the compiler, not by perusing the specification. This semester we are pushing for a better, more precise, and more complete specification of the D language.

2. @safety: we aim to enable large-scale uses of D with safety guarantees.

3. @nogc: Use of D without a garbage collector, most likely by using reference counting and related methods Unique/Weak references) for reclamation of resources. This task is made challenging by the safety requirement. We believe we have an attack in the upcoming allocators/collections combos.

4. Improve interoperability with other languages: Finishing -betterC should improve incremental migration of C and C++.

5. Improve introspection abilities: Make D the most powerful and easiest to use language for advanced introspection, code generation, and flexible designs. The approach must be two pronged - language improvements and libraries that use them gainfully.

6. Tooling: Define and allow others to define tools that help the use of the D language by everyone.

Virtually all efforts we drive should be assessed and benchmarked relative to these goals.

Non-Technical

We have enjoyed an unprecedented growth spurt starting December 2017, and need to improve our organizational structures in response. That includes:

  • Distribution
    • Improve the process of porting the front-end to alternate backends (gdc, ldc).
    • Pursue distribution of gdc as part of the gcc compiler suite.
    • Improve installers, updaters, and related tooling.
    • Foster development of IDEs, IDE plugins, editor helpers.
  • Contributor base
    • Improve our esprit de corps motivating talented community members to become high-impact contributors
    • Forge new relationships with universities, Expand our scholarship offering to new universities
    • Offer employment to the most active members of the community
    • Foster academic contributions (papers, courses, workshops)
    • Foster industrial contributions (joint projects, joint scholarships)
    • Convert interesting discussions on our own forums into interesting discussions on high-traffic forums such as reddit, hackernews, twitter, and facebook
    • Convert interesting debates and discussions into code and DIPs
    • Convert scattered, uncoordinated contributions into focused, large, high-impact projects. The evaluation from an impact perspective must be pervasive to all project/contributions/proposal assessments.
  • Better community management
    • Make the joining process more inviting and enjoyable
    • Have a clear path for a community member to get a question/concerned addressed, whether it's a technical question, a bug, a request for an improvement, or a meta topic.
  • Make it easier for people to use the D language and contribute to it
    • Tooling
    • Documentation
    • Contributing detailed issues
    • Contributing fixes and improvements
    • Communication at all levels
  • Public Relations
    • Drive DConf 2018 to a great success
    • Improve the standing of the D language on the landscape of programming languages
    • Establish the DIP as a clear, solid means to get a language enhancement going
    • Improve participation in the academic and industrial community
    • Make our message heard and lead the discussion with strong technical content (blogs, articles, interviews, online discussions)