Vision/2016H2
Revision as of 18:00, 8 July 2016 by AndreiAlexandrescu (talk | contribs)
Meta
This document discusses the high-level vision for D. It is revised every six months (January and July).
Note: This document focuses on goals the D leadership will personally enable or make happen, 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.
H1 2016 Review
- The D Language Foundation
- We failed to apply for nonprofit status before the end of H1. Currently the application has been drafted and is under review by a CPA and an attorney.
- Raising participation
- Participation during 2016H1 has been steady but has been below expectations. Of the 2000 PRs planned for H1 we achieved 1711.
- Foster brand awareness
- We have had good results in this area. DConf 2016 has been a success with over 140 participants, a solid program, and an enthusiastic atmosphere. D has been featured in talks at ACCU and NDC Oslo. A number of local meetups (Bay Area, Boston, Berlin etc) took place.
- The official D Blog has been created under the care of Michael Parker and already has good content.
- A formalization of the DIP process has been initiated by Dicebot.
- Tooling
DUB will be deployed with dmd starting with the next release.
- Other
Other topics from H1 underwent only little development and will be copied as ongoing topics for H2: safety, memory management, tooling, improve language stability and specification, C++ and Objective C integration, library additions, smartphone support.
H2 2016 Priorities
- The D Language Foundation
- The plan is to file for non-profit status before September 1, 2016.
- The Foundation has initiated collaboration with Tech Lounge, an organization that helps finishing students and fresh graduates accumulate industrial experience working on high-impact projects.
- The Foundation has in working a number of speaking engagements that will add funds to its coffers.
- Initiate and advertise sponsorship and membership programs.
- Pursue academic collaborations.
- Create online swag store.
- Improve organization
- More stable release model, better integration of fixes, maintaining LTS releases for professional users. Regressions should be paid utmost attention.
- Better management of language and phobos development, consensus on strategies, basic project management for bigger features, better administration of DIPs and module review queue.
- Raising participation
- More automation: bot for pinging reviewers (mention-both, highfive), automatic linting of pull requests, dfmt, automatically build dub packages to assess regression impact.
- We continue to actively look for "promoting" contributors into top, heavy-hitting ranks: owners of important projects and responsibilities, code reviewers, designers, technical leaders.
- Foster newcomer experience: installation (first five minutes), documentation, articles, error messages (e.g. DIP83), debugging.
- Safety and Memory Management
- Safety and making the GC optional remain important concerns through the end of this year. We are putting them together because the GC alternatives we endorse must address safety.
- Fix all errors in language design and implementation that allow unsafe behavior in @safe code.
- Usable/useful escape reference analysis (finished DIP25, scope methods to avoid escaping of this, in = const scope, D variadic arguments) to enable more efficient resource management (see example)
- Improve the GC.
- Flesh out and solidify std.experimental.allocator
- Improve compiler support so ref counting can be done @safely.
- Interoperability
- Improve C++ inter-operability: struct mangling, Windows exceptions. Improve Objective-C interoperability.
- Quality
- Improve CTFE
- Fix problems with excessively long mangled names
- Improve internal memory management of compiler
- Continue improving DMD front end internals
- Standard Library
- Eliminate Phobos dependency on GC (in other words, make GC opt out a viable and simple option).
- Replace modules that are lacking in quality: json, xml
- Strengthen definition of ranges, possibly improve API
- New modules such as: containers, SI units, rational numbers, fixed-point numbers, unit testing framework, benchmarking, linear algebra.