Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add blogpost planning towards 1.0 and slowing releases #957

Merged
merged 9 commits into from
Jun 27, 2023
Prev Previous commit
Next Next commit
Polishing based on grammarly
  • Loading branch information
sholderbach committed Jun 27, 2023
commit 5b736728a0694b89c22d620583f6a9bf0c8e5781
26 changes: 13 additions & 13 deletions blog/2023-06-27-road-to-1_0.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ excerpt: Ahead of the 0.82 release, we share our plans on how we intend to stabi

# Reaching a nu phase in Nushell's development - The road from 0.82 to 1.0

Today we release the 0.82 version of Nushell. Not only will it be our 65th public release but it also marks an important milestone for us on the development trajectory of Nushell.
Today we release the 0.82 version of Nushell. Not only will it be our 65th public release it also marks an important milestone for us on the development trajectory of Nushell.

Nushell reached a much wider user base in the last few months. On GitHub, Nushell is now officially recognized for [syntax highlighting](https://github.com/github-linguist/linguist/releases/tag/v7.26.0) and recently passed 25,000 stars. We are also actively thinking about how we want to move towards stabilization for our 1.0 release.

Expand All @@ -24,32 +24,32 @@ For our contributors, this change also has the benefit that the impact of our in

### Nightly builds for the eager

If you think after this change, that Nushell is moving at a glacial pace, we luckily now have [nightly builds for you to download](https://github.com/nushell/nightly/tags) that reflect the most recent state of development.
If you think that Nushell is moving at a glacial pace after this change, we luckily now have [nightly builds for you to download](https://github.com/nushell/nightly/tags) that reflect the current state of development.
If [building Nushell yourself](https://www.nushell.sh/book/installation.html#build-from-source) was too burdensome so far, you now have to chance to try out upcoming features and provide your feedback.


## How things went from 0.60 to 0.8x

Our last very public milestone was the [release of the `0.60` version](https://www.nushell.sh/blog/2022-03-22-nushell_0_60.html), which included a massive refactor of Nushell's internals that we skipped to it from the `0.44` release.
Apart from rewriting the engine, it included our own line editor [reedline](https://github.com/nushell/reedline) for added [customization in the interactive experience](https://www.nushell.sh/book/line_editor.html).
This unlocked many improvements and opportunities for valuable experimentation.
The rewrite unlocked many improvements and opportunities for valuable experimentation.

Since `0.60` we achieved a much more mature system of [modules](https://www.nushell.sh/book/modules.html) and [overlays](https://www.nushell.sh/book/overlays.html) that allow you to build more composable applications in Nu.
As part of this effort to strengthen the programming language chops of Nu, we also spent a lot of time finding the balance between our [functional programming philosophy of pipelined data](https://www.nushell.sh/book/thinking_in_nu.html) and [mutation of variables](https://www.nushell.sh/book/variables_and_subexpressions.html#mutable-variables) to allow simple imperative patterns.
Since `0.60`, we achieved a much more mature system of [modules](https://www.nushell.sh/book/modules.html) and [overlays](https://www.nushell.sh/book/overlays.html) that allow you to build more composable applications in Nu.
As part of this effort to strengthen the programming language chops of Nu, we also spent a lot of time finding the balance between our [functional programming philosophy of pipelined data](https://www.nushell.sh/book/thinking_in_nu.html) and the [mutation of variables](https://www.nushell.sh/book/variables_and_subexpressions.html#mutable-variables) to allow simple imperative patterns.

We also saw a few efforts that didn't pan out yet. For example, we tried to integrate the [Polars](https://github.com/pola-rs/polars/) dataframe engine directly into the grammar of Nushell commands, but this left many rough edges. Thus [with version 0.76 we returned to a simpler dataframe integration](https://www.nushell.sh/blog/2023-02-21-nushell_0_76.html#dataframe-commands-are-again-explicitly-separated-from-core-nushell-commands-7998) to focus on getting the core Nushell experience right.
We also saw a few efforts that didn't pan out yet. For example, we tried to integrate the [Polars](https://github.com/pola-rs/polars/) dataframe engine directly into the grammar of Nushell commands, but this left many rough edges. Thus [with version 0.76, we returned to a simpler dataframe integration](https://www.nushell.sh/blog/2023-02-21-nushell_0_76.html#dataframe-commands-are-again-explicitly-separated-from-core-nushell-commands-7998) to focus on getting the core Nushell experience right.

This all provided valuable lessons in how we can decide which features are beginning to settle and where we need to focus our effort to get a consistent experience.
This all provided valuable lessons in how we decide which features are beginning to settle and where we need to focus our effort to get a consistent experience.

## What we are working on right now

To commit to the stability promises, that come with the 1.0 release, we need to make sure we can uphold those guarantees. This means separating foundational things for everyone to rely on from all those cool features we still want to iterate on or are not yet happy with. With a smaller set of high-quality features with clear semantics it becomes much easier to make the leap towards stability.
To commit to the stability promises, that come with the 1.0 release, we need to make sure we can uphold those guarantees. This means separating foundational things for everyone to rely on from all those cool features we still want to iterate on or are not yet happy with. With a smaller set of high-quality features with clear semantics, it becomes much easier to leap toward stability.

We thus for example have recently begun to remove some less used or vaguely defined commands from the core set, that ships with Nushell. For the moment, they are still accessible through the `--features extra` when you build Nushell yourself until we have decided on their final fate. This follows how we kept the dataframe commands behind the `--features dataframe` flag. Expect that more commands may move there or that their native implementation gets replaced by a version written in Nu itself.
We thus for example have recently begun to remove some less used or vaguely defined commands from the core set that ships with Nushell. For the moment, they are still accessible through the `--features extra` when you build Nushell yourself until we have decided on their final fate. This follows how we kept the dataframe commands behind the `--features dataframe` flag. Expect that more commands may move there or that their native implementation gets replaced by a version written in Nu itself.

In parallel very promising work has been ongoing with the community to develop a packaging strategy to share Nu code with an accompanying [package management tool](https://github.com/nushell/nupm). Together with efforts to create an [auto-formatter](https://github.com/nushell/nufmt) and improve the Nushell [IDE integration](https://github.com/nushell/vscode-nushell-lang) leveraging the [language server protocol (LSP)](https://microsoft.github.io/language-server-protocol/), we hope the community can develop even more high-quality tools and libraries.
In parallel, very promising work has been ongoing with the community to develop a packaging strategy to share Nu code with an accompanying [package management tool](https://github.com/nushell/nupm). Together with efforts to create an [auto-formatter](https://github.com/nushell/nufmt) and improve the Nushell [IDE integration](https://github.com/nushell/vscode-nushell-lang) leveraging the [language server protocol (LSP)](https://microsoft.github.io/language-server-protocol/), we hope the community can develop even more high-quality tools and libraries.

Apart from the ongoing development work and code improvements, we invested in discussions to develop a roadmap of features and goals that decide when the 1.0 release is ready. While those discussions inside the core team are not finalized yet, we want to open them to the wider community and share our directions on a regular basis.
Apart from the ongoing development work and code improvements, we invested in discussions to develop a roadmap of features and goals that decide when the 1.0 release is ready. While those discussions inside the core team are not finalized yet, we want to open them to the wider community and share our directions regularly.

## What to expect: as a user

Expand All @@ -75,9 +75,9 @@ This means, to reduce the total number of crates we will seek to replace redunda

As always helping out fellow users or picking up issues that are labeled with ["good-first-issue"](https://github.com/nushell/nushell/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) or ["help-wanted"](https://github.com/nushell/nushell/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) is greatly appreciated.

As our [issue tracker](https://github.com/nushell/nushell/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) has grown to over 800 entries (878 at the time of writing) help to clear this backlog will accelerate our path to 1.0.
As our [issue tracker](https://github.com/nushell/nushell/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) has grown to over 800 entries (878 at the time of writing) your help to clear this backlog will accelerate our path to 1.0.

You don't even have to fix a bug yourself to make a great contribution. Feel free to check your own old bug reports if they have been resolved already.
You don't even have to fix a bug yourself to make a great contribution. Feel free to check your old bug reports if they have been resolved already.
Adding context under which conditions a bug can be reproduced or if different feature requests are complementary can also make life much easier for those that want to contribute a fix.

Last but not least feel free to spread the word about Nushell as we often received extremely insightful feedback from that.