-
Notifications
You must be signed in to change notification settings - Fork 910
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
Introducing Utility Modules to Kedro #2388
Comments
@amandakys you're killing it on this issue! 🎉 Let me provide supporting evidence and comments. Things that we have evidence for
Broadly, I agree with a journey that makes it easy and discoverable for our users to opt-in to additional functionality because it's in line with our principles of "growing beginners into experts". Comments and questions on the prototype
Comments on Step 1
|
This is fantastic! Thanks for scoping out this work @amandakys ⭐ I have one minor comment around testing: |
From the backward compatibility perspective, do these |
I've done some additional work based on feedback. I agree with @yetudada that Utilities is a less ambiguous name than Modules. Step 1: Revised Initialisation JourneyThe proposed new commands would include: If these options
Step 2: Introduce UtilitiesProposed new commands include: If no
This would then be distinct from the command Telemetry at Project CreationYetu mentions that telemetry consent may only asked for and granted after the project creation step, so we might struggle to collect data about what parameters are supplied to the |
Copying a couple comments from Slack to have them in the same place...
Originally posted in https://kedro-org.slack.com/archives/C03QP0NH2J2/p1678806542848929
Originally posted in https://kedro-org.slack.com/archives/C03QP0NH2J2/p1678817179219289?thread_ts=1678806542.848929&cid=C03QP0NH2J2 |
Following our discussion in tech design the next steps for this work are (in order):
|
I'm going to close this ticket in favour of #2506 |
Introduction
The desire to simplify Kedro to make it less intimidating for new users contradicts with the goal of Kedro to provide an opinionated, structured application of SWE best practices to data science code. This conflict represents the guiding arguments on whether users should have to opt-in (simplify) or opt-out (opinionated) of ‘non-essential’ functionality.
Kedro’s user base can be broadly split into 2 groups:
Both of these groups need to be targeted to drive adoption
We do not want to deteriorate the experience of our expert users who know and love Kedro at the expense of driving beginner/new user adoption. However, their needs are often contradictory. In maintaining the status quo, we do not move towards addressing our beginner user problem. Therefore, our goal should be to find solutions that improve the beginner user experience without significantly degrading the expert user experience.
Background
Discussion of whether user should opt-in or opt-out of features grey from discussion about removing support project-side logging.yml [#2281] and continued in discussions of how to simplify the default project template [#2149] by removing ‘non-essential’ directories.
The status quo is opt-out. The key unknown for opt-in is how to streamline the opt-in journey. Our default approach is to put the information in the docs. This raises the question of feature discoverability. How will new users known these features exist, if they aren’t indicated by the project template?
I generalised the opt-in and opt-out flows as best I can, they will be a little different for each functionality
Related tickets
Concept 1: Simplifying project template by removing ‘unused’ or ‘unnecessary’ features
Drastically simplify the default project template #2149
Consider removing support for project-side logging.yml #2281
Concept 2: Improve starter journey to increase accessibility of Kedro
Kedro incremental starter #2054
Revise the starter selection journey #1970
Create new advanced Kedro starter #1948
Design
Step 1: Revised Kedro initialisation journey
kedro new
kedro new --starter=blank --add-lint --add-test --local-data -add-logs [project-name]
kedro new --modules=all
kedro new --modules=lint,test,data,logs
kedro new
could default to all modules or no modules, the module selection journey can be compulsory, we can add convenience options for expert users. (although since project creation is not a frequent action, I don’t think it taking an extra few steps is terrible)Step 2: Kedro Utility Modules
Testing, Linting, Logging, Data Structure, can be a growing list and a way to add in new features
Step 3: Simplify Module insertion journey åfter initialisation
an initial implementation should focus on allowing users to select and ‘plug in’ modules on initialisation.
the later touchpoint of users realising that they want a module, and plugging that into a ‘unclean’ project repo will be more complex as we will have to deal with more unknowns and code clashes.
at this point a try-catch approach could be a utility command that ‘tries’ to insert logging, given certain prerequisites that the command or the user is responsible for checking.
You already have a logging.yml file are you sure you want to overwrite it
?Step 4: Simplify Module deletion journey after initialisation
Evaluative Questions & Thoughts
Alternative Options
Rollout strategy
Planned Research Activities
The text was updated successfully, but these errors were encountered: