Vision/2018H1
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 two 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, and Sebastian Wilzbach, Mike Parker) kept operations working. There are new potential core collaborators.
- Participation
- H2 2017 has marked a 28% increase in total pull requests compared to to H2 2016: 1812 vs. 1410. Of these, 178 are open indicating that reviews are a bottleneck of increasing the PR traffic.
- We have added merge rights to three contributors and are looking for more.
- The new DIP process is enjoying good success so far with two accepted, one postponed, and two rejected.
- Peak 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).
- Safety and Memory Management
- Work on safe containers has made significant progress and has prompted improvements to allocators that are still ongoing.
- There has been progress but not sufficient to deem the matter addressed.
Technical
1. @safety: and @nogc: 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 immutable and const. The effort is underway but has not been completed.
3. Improve interoperability with other languages: Progress on compiler-side -betterC but no work on improved C++ interoperability.
The major D contributors plan to work on a variety of projects related to various degrees to the three high-level goals above:
- Static introspection remains an important strategic advantage of D and we should continue to improve both compiler support and library support. The static foreach DIP by Timon Gehr is a major development in the area.
- Dub fixes+improvements
- Add core.aa (https://github.com/dlang/druntime/pull/1282)
- Safe RC/Unique/WeakRef implementations (core.rc)
- @safe @nogc 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
properly_documented_public_functions
andhas_public_example
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
- Make it easier for people to contribute (aka remove entry barriers)
- add more tooling to help with initial problems (e.g. DLang-Bot)
- improve contributor documentation and getting started (should be done by people who haven't seen the DMD/Phobos setup & codebase)
- encourage the "a fix is only a PR away" mentality (e.g. by means of blog post(s))
- reduce barrier of entry for potential contributors (e.g. bugzilla/forums registration)
- Increase motivation of existing contributors
- 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 this one
- foster a positive, constructive, and professional environment