-
-
Notifications
You must be signed in to change notification settings - Fork 67
Develop an Introductory CWL tutorial #160
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
Comments
On 1. I think it is but using what technology? Do you expect people to hand-write CWL? Or use something like Rabix Composer? |
|
Thanks for raising this issue. I would categorise myself as somewhat in the middle on the experience axis (competent but look-up stuff ).
|
|
Please go for it. I am not ultimately convinced, though, that novices should need to see the CWL itself. They should rather feel comfortable to use it. So, beyond some "hello, this is me, CWL, but you don't really need to care" I see introductions on sets of readily usable CWL-implemented workflows that are available for the community to run. The tutorial could then explain these workflows. There shall be quick ones that run on a laptop. And others that need queueing systems or that run in the cloud somewhere. The message to get across would be that for every execution environment there is something to execute the CWL workflow and the user does not need to change the CWL bits at all, and the tutorial shows how it is done. So, by accepting the CWL in your life you would have all you need to run current routine workflows in what Bioinformatics Service Groups are addressing all over the world. And there are no limits to compute time either thanks to a fairly smooth transition into the cloud. The advanced user will then adjust existing workflows. The expert sends patches to this github project? |
Thanks everyone for the feedback so far - very useful indeed! I'll keep this discussion open for a while longer to allow others to contribute and will also lead one of the weekly CWL meetings, on 10 Sep 2019, when we will discuss the subject further. [edit: link to receive invitation to the meeting mentioned above: https://groups.google.com/forum/#!forum/common-workflow-language-videochat-invites ] |
|
@golharam thank's for your enthusiastic response. Are you able to elaborate on your answer to 3? What specifically did you find too technical in this User Guide? While converting your workflow, what stage(s) did you find particularly difficult? It's these kinds of "pain points" that I would hope to specifically address in the tutorial. |
Maybe I can download the docs and mark them up with my notes somehow and send them back. Would that help? |
Sounds great - thank you @golharam. There's also no reason why we can't address some of these points with fixes to this UG itself - pull requests to this repository are welcome :) |
I really do, I'm shocked it doesn't exist already its been several years since release. Are we not supposed to be writing CWL by hand?
User guide, technical documentation, github repositories, gitter, discourse, biostars. None are a comprehensive introduction though for beginners. It's really tough to learn CWL currently.
Dependent inputs in workflows.
I could contribute questions and maybe some writing of explanations (would likely need review though) |
Sign me up! We want to work with this also in BioExcel context, in particular for developing virtual training on CWL together with EBI. |
Developing CWL workflows was a significant part of what i did for the last few months. With a biology/biotechnology background, getting started was pretty rough. The user guide is really lacking, it took about a day of experimenting until i faced problems which required reading the specifications. And i feel those are really not ideal for somebody trying to grasp the basics of developing workflows. I'm defenitely not an expert, but i've written quite a few tool wrappers / workflows by now. So there is probably some knowledge i could impart to new users. To answer your questions individually:
|
Since the Sep 10th meeting was canceled, can you provide us with a new date for the discussion? |
Thanks for your thoughful response, @ttubb. I'll be back from parental leave in early-mid October and hope to be able to host the rescheduled call soon after. |
The call has been rescheduled to Tuesday, October 29th at 14:30 UTC via https://meet.jit.si/cwl Dial in information: I am excited to hear from y'all! |
Reminder: We are starting in less than 5 minutes Dial in information: |
Thanks @tobyhodges, great to hear about this effort. I think it's a great idea and would be interested in helping develop the material. I've taught data carpentry and software carpentry workshops and expect to be going through the instructor training at some point in the near future. I'm excited to see workflow lessons in the carpentries mold. One of the hardest things for me learning CWL was writing workflows to connect tools that didn't fit together cleanly. I wrote a lot of "glue" CommandLineTools and built containers to do those things initially, but this was cumbersome. Eventually I found ExpressionTools and InitialWorkDirRequirement to place a script into the tool description as a cleaner way to do this. That's been working well but I feel these are advanced techniques and that there's no easy/obvious solution for novices. Also, when faced with such a challenge, it's very tempting to fall back to just writing one big script as your "workflow" and mix in all the glue code right there. |
I'd like to contribute. I came across a model for documentation that divides it up into "tutorials", "how-to guides", "explanation" and "technical reference": https://www.divio.com/blog/documentation/ We're specifically focused on the novice user for this project. A separate project could look at organizing/creating how-to guides and explanations that help the competent practitioner get work done. |
A thought after todays call: Some learners might only be interested in how to modify existing workflows, not write entire CommandLineTools or the like. It would be nice if those users quickly got to a point which enables them to do that, without having to to go through uneccassary lessons. I am not sure how exactly this can be adressed, but it might be an aspect to keep in mind. To expand on why i it seems important to me: For what i did with CWL so far, a workflow of pretty similar steps has to be carried out, but a variety of tools is available for each step. I have built wrappers (+workflows) for the most popular/useful of these tools. All manner of different combinations of these wrappers are sensible, depending on the use case. I can share my wrappers along with some workflows as examples, but all potential users would have to modify these slightly to fit their data / analysis hardware / computational resources and the problem they work on. |
That's a great point. Even among learners, some people might only need to know enough to edit an existing workflow, or connect existing tools. On the other hand, other learners may not have access to existing CWL for their research area and would necessarily need to learn how to write tools and workflows from scratch. |
I've sent out invitations to collaborate on https://github.com/common-workflow-lab/cwl-novice-tutorial, the repository where work on this tutorial will begin. If anyone else reading this would like to be involved in developing this material, please post here or get in touch with me by some other channel and I'll add you too. Once we have something to review, I'll post back here so that others can take a look. |
This issue has been mentioned on Common Workflow Language Discourse. There might be relevant details there: https://cwl.discourse.group/t/developing-personas-and-pathways-for-a-diverse-and-inclusive-cwl/214/1 |
tl;dr: We need a tutorial/lesson aimed at teaching CWL to complete beginners. Are you interested in helping to make this happen?
Based on discussions with various people in the CWL user/developer community, and my own experience learning and implementing the language, I believe that what we need is two distinct presentations of information for non-experts:
(image from Carpentries Instructor Training)
To use the analogy that I gave to @mr-c earlier today: the following resources are available to Python users, catering to people at different stages of learning the language:
In it's current form, the CWL User Guide falls somewhere between the first two above: not quite thorough enough on the basics, lacking advice on how to think about workflows, and with too steep a learning curve to be friendly for total beginners; not detailed/exhaustive enough for those who want to move beyond the basics.
I propose that we work together to develop a Carpentries-style lesson, aimed at teaching enough CWL and "workflow thinking" to move learners from "novice" to "competent practitioner" stage. This would take the same approach used by Software or Data Carpentry to develop material with a manageable learning curve, containing plenty of exercises, with clear and achievable learning objectives, and focusing on the concepts that novices find difficult about learning CWL. We might even consider basing (parts of) it on the existing Software Carpentry Make lesson - or we might decide to start from scratch.
Note: I am absolutely not a CWL expert. What I can offer:
What I can't offer:
Questions that I'm asking here:
The text was updated successfully, but these errors were encountered: