As a developer, I'd like to be able to zero in on things that matter to me, as opposed to things that matter to the whole team. The new Pipelines list is great at condensing all the build jobs into single lines per commit trigger, but I'd like to go further and have a view of just "my pipelines". This should be available for an individual project, as well as at a GitLab-wide level so I can see all CI pipelines across all projects I contribute to.
Need statement: The user needs a way to see their own pipeline progress (plural) across a context so that they can be informed of the collective pipeline activity.
What concepts and procedures should the docs guide and enable the user to understand or accomplish?
This is only available for the project pipeline list currently. You can search or filter down on a certain scope of pipelines across a project's context. For example your own, based on a certain branch, or from a certain source. Additionally, it will be easier to find pipelines with uncommon statusses that have warnings or are not found.
Additive filters will be considered in the future (this might help to see all pipelines from a team working on the same project for example).
To this end, what new page(s) are needed, if any? What pages/subsections need updates? Consider user, admin, and API doc changes and additions.
For any guide or instruction set, should it help address a single use case, or be flexible to address a certain range of use cases?
It will address a range of use cases by allowing the user to search filter down the pipeline scope across a project's context.
Do we need to update a previously recommended workflow? Should we link the new feature from various relevant locations? Consider all ways documentation should be affected.
Are there any key terms or task descriptions that should be included so that the docs are found in relevant searches?
Filtering pipelines by
Trigger author
Trigger source
Pipeline status
Search pipelines by branch/tag name
Include suggested titles of any pages or subsections, if applicable.
Filtering pipelines by status
Filtering pipelines by trigger author
Filtering pipelines by trigger source
Search pipelines by branch/tag name
Testing
What does success look like, and how can we measure that?
Potential follow up problem/need statements
The user needs a way to be able to see all pipelines activity in their organization so that they can see be informed across multiple contexts from within a single place.
The user needs a way to be able to see all the running pipelines in their organization so that they can see when/where things are queueing up in order to know how/when to scale.
The user needs a way to sort latest pipelines within a specific filtered context depending on their status so that they can prioritize the need for potential investigations more efficiently.
The user needs a way to filter by branch name so that they can be informed only by production pipelines, including making it easier to rollback to a previous successful deployment.
The user needs a way to filter on pipelines with certain jobs included so that they can be informed only by pipelines which involve for example deployments.
So we could just add the filter and sort row. Start with just filtering on the person who triggered the pipeline. If it's easy, then filtering on any committer/commenter would be a bonus (I think). Changing the sort doesn't feel as important, but I could see someone wanting to sort by duration to look for really long builds (to try to improve them), etc.
You cannot comment on a pipeline for now.. the same as you cannot subscribe to one...
should we introduce a "starring feature" where you can star/subscribe to one? if so I think we should seriously reconsider the whole "subscribed" system for issues/mr/pipelines/commits etc.. make it more stable, make it searchable throughout the whole system etc.
Filtering for current pipeline tab within a project:
as for personal pipelines view/link, this should get its own link in the sidebar:
and its own cross-project view like the issues view:
As pipeline can become many, many, I would keep the pagination and set a ultimate amount of per page viewable per project ;) :
all these mockups are btw done inside the browser with interface elements already there ;)
You cannot comment on a pipeline for now.. the same as you cannot subscribe to one...
@dimitrieh Yes, I meant the underlying merge request. Today, pipelines aren't tied to merge requests, but semantically, they are for me, as a user. So when I comment on a merge request (or otherwise subscribe to it), I'm saying I care about this MR. I might, therefore, want to see how it's pipeline is doing, including if it's green and whether it's been deployed to staging/production yet.
BTW, since originally writing this, I've come to believe that subscribed is the attribute I want. At least when referring to things "I" care about. I may also want to look for pipelines related to merge requests that developer X has touched, and I'd want some broad definition for that, better than just "author" or "assignee".
should we introduce a "starring feature" where you can star/subscribe to one?
No. :)
Mockups look good. I'm not sure how you want to handle the global list when there are multiple projects involved. It looks like you're grouping pipelines by project, but perhaps project should just be another column.
Related, once we add a project column to the view, we're one step closer to killing the admin view of builds (evolution of #19694 (closed)).
For the record, we cut scope of handling subscribed, contributor, and commenter. Triggered by would be the most important filter, although perhaps we should filter by project too...
got ya on the subscribe thing for MR, however a pipeline can also belong to a commit alone.. how would you subscribe to that? if it isn't you who authored it or triggered it?
project should just be another column
This would again increase horizontal space and wouldn't be inline with issues (which won't be a problem if see: https://gitlab.com/gitlab-org/gitlab-ce/issues/21660#note_14880834) , but I think you got a point. I would rather see all pipelines from all projects in the way they are triggered or last updated. A solution to this would however lie in adjusting the "stages" columns:
isn't it correct that:
currently changes based upon which pipeline is on top? Which makes these columns information value either wrong or very low. it doesn't say much at the moment as some pipeline below may have 7 stages, which are all named totally different..
I think you don't even care "too much" how your "stage" is named, you just want to know which "part" of your pipeline has failed... or maybe even better yet, where it failed within that stage or how many builds of that stage are failed.. or which one build took the longest compared to the rest? all in one glance, so can dive deeper only if needed.
lets look at a more conservative new approach:
and finally lets take a look at a version that gives way more information, while still having less space occupied.
hovering a build will create a tooltip and will click you right through to build or stage
tooltip can holds information such as buildname, stagename, total run time
references from Circle CI and soundcloud ;)
See all the whitespace, thats now usable for other columns?
For the record, we cut scope of handling subscribed, contributor, and commenter. Triggered by would be the most important filter, although perhaps we should filter by project too...
I do not entirely get what you mean here, but do agree that if we take the approach of a project columns, sorting per project on global pipelines should become a thing. I think you mean to say you want this:
with an extra "scope" dropdown, which can be filtered with subscribed, contributor, and commenter.
got ya on the subscribe thing for MR, however a pipeline can also belong to a commit alone.. how would you subscribe to that? if it isn't you who authored it or triggered it?
@dimitrieh I'm not really following you. Or at least I don't think this is necessary. If there's a commit floating out there, without an associated issue or merge request, then yeah, I'm not going to see it. But then again, how would you possibly know that I'm interested in it? Finding it and subscribing to it sounds kinda silly. :) It's not the kind of thing you "follow".
@dimitrieh Great mockups! I really like the first one. I was going to suggest just dropping the stage information altogether when looking at the global pipeline view. But what you propose does add value so you can quickly see how far something got, and presumably hover over a stage to see what stage it was, and which jobs failed.
Alternatively, we could just state the information with text. Such as listing where it failed, if it did. Or listing what the final stage was, if it all succeeded. The reason I think listing the final stage is interesting is because the same project can have different pipelines for different triggers, such as master might deploy to staging, but another branch does not, so highlighting that this pipeline made it to staging, production, etc. is useful. Also, manual actions can extend the pipeline even further, so knowing that someone manually triggered the continuation is nice. Again, your mockup probably does a better job at this.
I don't think I'm fan of the bar graph for this view.
I'm not sure how best to filter the global pipeline view. Let's start with the simplest stuff, such as author and triggered by. State would be reasonable. Subscribed might be a checkbox. A dropdown for project might make sense although that kinda gets weird, because why didn't you just go to the project then. But maybe it'll be easier to go there. Or maybe you're looking for something and don't know which project it is on, so want to quickly jump around and select a few.
Let's get back to the original request: As a developer, I want to see a list of "my pipelines". So anything I've triggered across projects. Then drop down a level and ask "why do you want a list of my pipelines", and the answer is likely because they want to a) see if everything is passing and b) find failures to investigate. So filtering by state, or at least sorting by state, could work there.
Yes some kind of toggle for subscribed would work here indeed, however wouldn't it be cool if you could see/filter other people subscriptions as well?
Meaning a subscribers dropdown as well..
Say I want to find a pipeline I am subscribed to and someone else as well ( chances are small, but still could come in handy, plus then its in line with the rest of the dropdowns )
@dimitrieh Is someone's subscriber state "public" information? Is it == "participants" in the sidebar? If not, I'd be afraid of privacy issues. Granted it's not a big deal, but we shouldn't be leaking the fact that someone did or did not subscribe to something. Unless of course we already do. :)
Say I want to find a pipeline I am subscribed to and someone else as well ( chances are small, but still could come in handy, plus then its in line with the rest of the dropdowns )
If chances really are small, then don't do it. :) Unless the consistency in designing the drop-downs is that much worth it.
I tested it out and its not the same actually... participants are people that are mentioned or actively contributed to the issue. So yes at the moment this is private information.. mmmh
So yes, for subscribed we'd need a toggle.
In the issue I mentioned this issue in I entertain the usecase in a different light which makes additional sense ;) , but maybe not for subscribed status, but for participants (which is almost but not totally the same)
Usecase: you want to find an issue you are sure of you and someone else contributed towards, but both of you didn't author it.
So if we had a "participants" dropdown we could filter on issues where we know someone is mentioned or actively contributed towards.
Also participants is part of the sidebar, where all other parts are filterable options..
FWIW we use gitlab for our internal only git hosting and CI. The only thing we care about is a global list of running pipelines so we can see when/where things are queueing up, so we know how/when to scale. We don't need any of the complexity around subscribing, starring etc mentioned above. We basically just want to see a queue of builds for all projects in a group. That'd help us tremendously and might be a good, simple first iteration
+1 for @bradrobertson, this issue is way more than really needed. Companies and teams need a dashboard... but #3235 (moved) was closed in favor of this.
@bradrobertson is that just a mockup or already code? if code i think this is a valid first step ... lateron we can have squares for each pipeline divided per stage for example ... like the smaller areas in windows startmenu
not sure, why was the earlier issue closed on this one!! but this is certainly something that is super needed by any org. I am an GitLab EE user and we have a 100's of repositories in my project.. By using Gitlab CI, I am surely missing on this feature of Jenkins which gives you dashboard monitors plugins ... super requirement for the team dev rooms to get a high level picture. How else do we get and radiate this info?
@markpundsack I'm finding a strong desire to have a view that at least shows me the pipeline status of master, since I want that to be green. Filtering by arbitrary branches will also be useful to check on the status of our CE/EE stable branches.
@stanhu This issue is about the pipeline list, but it sounds like you're talking more about a dashboard like others have discussed above. Is that correct?
@markpundsack To start, I'd be fine with just being able to filter by a single branch. Usually I don't care about the 100 other branches our team is working on; I just care about master or one of the stable branches.
Not sure if this is the best issue, but the pipeline list on MR's could use some love too. I'm unable to load the pipelines for this MR b/c of the sheer number of them. Basic pagination would be nice.
The ticket description doesn't list branch name as the filter field. This would be very valuable, e.g. for long lived feature branches (in one repo context) or for displaying only production builds (global pipeline view).
Another missing field is searching jobs by job
name. Not sure if global jobs view is in scope of this list, but if it is, searching by job name is very helpful. Even in global context - since job names follow a convention, E.g. name is "deploy".
I agree, especially if the branches are used for deployment like in the GitLab branching model it is very useful to be able to see all pipelines on a production branch so we can for example rollback to previous successful deployment.
We already have IssuableCollections module that provides capability for the finder and filtering. It could be adapted to be used for PipelinesController#index as well.
Regarding displaying the search bar with the filters we need to add the shared/issuable/search_bar partial and modify SearchHelper#search_filter_input_option to also support inputs for pipelines. On top of this we may need to implement routes and controller actions to fetch the various options for autocomplete.
Finally we need to ensure that all the filters are also implemented as scopes in the Ci::Pipeline model.
As a side comment from our discussion last Friday.
This issue, due to being scheduled for 12.3, is no longer an option to be taken through the full UX research cycle. Therefore the ~"Process::1 Research" stage only depends still on 2 things:
The decision as which need-statement to focus on. (My suggestion here is to focus on defining the filters first)
Only if going for "filters first": Defining exactly what constitutes a user's pipelines. (My suggestion here is to focus on pipelines triggered by that user)
@dimitrieh don't you get the collective view for "free" by setting smart defaults for the filters? I agree some people will have different views of what "my" pipelines are, but something like the following from the description is a reasonable start:
It could just be pipelines that I've triggered (i.e. by pushing a commit)
@jlenny I agree on the fact that filters are the best way forward.
To check if we are on the same line: We currently only have a pipeline list within the context of a project. This would mean that the "collective pipeline view" including filters will be project-based.
@jlenny as discussed this issue will focus on filters first. I have created a follow-up issue which will focus on the scope of making it possible to view your pipelines across a wider context like a group or instance: https://gitlab.com/gitlab-org/gitlab-ce/issues/65040
@dimitrieh, @shampton will be the DRI for the frontend. He is on holiday during the scheduled meeting (returning 2019-07-30). Would it be possible to reschedule for when he returns? Thanks!
gitlab pipeline tag (latest, merge request, detached)
Multiple filters will be possible
Filtering is most feasible and important on project pipeline list
Next steps
@fabiopitino do we keep records of who created a git branch and how feasible would it be to be able to filter on that? This way you might be able to see all pipeline statuses for all branches created by you.
I'll create designs in order to showcase this functionality. This will most likely be based on the filter UI presented in the issue list and board.
@fabiopitino@shampton we need to consider if we are able to do repeated filters (additive). For example I might want a collective view of all pipelines belonging to branch A and branch B.
@fabiopitino@shampton we also need to decide on a final scope of this issue. Can you point out what you'll be able to tend to in terms of filtering within this first milestone. I'll base my designs on this decision.
@fabiopitino@shampton As we are likely to copy the search/filter paradigm from the issue/merge request list we will have a default open search functionality in there as well. The question is if this is doable with it querying commit messages. I would say it would be reasonable to limit the amount if need be.
@jlenny (I'll move the required information into the description as discussed => This has been done. Please see if this aligns with your vision as well)
we need to consider if we are able to do repeated filters (additive). For example I might want a collective view of all pipelines belonging to branch A and branch B.
I would like the ability to have repeated filters, but we could probably scope that off to a followup issue just to keep this as simple as possible.
we also need to decide on a final scope of this issue. Can you point out what you'll be able to tend to in terms of filtering within this first milestone. I'll base my designs on this decision.
I think the current scope you have listed is good - at least from a frontend perspective.
As we are likely to copy the search/filter paradigm from the issue/merge request list we will have a default open search functionality in there as well. The question is if this is doable with it querying commit messages. I would say it would be reasonable to limit the amount if need be.
I think that's more of a backend question. It shouldn't be hard for the frontend to just send that query to the backend.
The main difficulty on the frontend side is that the pipelines page is written in Vue and the merge requests/issues pages are written in HAML, so the search bar will need to be reimplemented in Vue. It may be already implemented for another page, but I haven't found it yet.
do we keep records of who created a git branch and how feasible would it be to be able to filter on that? This way you might be able to see all pipeline statuses for all branches created by you.
We do not store such information in the database and fetching the author of a branch from Gitaly would be challenging. When we fetch a list of branches from Gitaly we get back also the target commit the branch points to which contains the author but we don't have the original commit that created the branch unless we fetch commits for each branch, which is very expensive. I would suggest we keep this out of the scope for now.
we need to consider if we are able to do repeated filters (additive). For example I might want a collective view of all pipelines belonging to branch A and branch B.
we also need to decide on a final scope of this issue. Can you point out what you'll be able to tend to in terms of filtering within this first milestone. I'll base my designs on this decision.
Here is my feedback on the proposed filters (I had more time to dig into the code base rather than going by feeling as during the call):
filter by branch name already exists in https://gitlab.com/gitlab-org/gitlab-ce/-/branches/all but it's a text search and not an autocomplete field like we have for milestone in Issues filter. I'm assuming that autocomplete if backed by Gitaly will be very expensive. We either make branch name filter as text search or add a widget to the filters list similar to the autocomplete ones that would accept a term for search. @shampton would this be something feasible? I'm not seeing anything like this done yet.
filter by git tag is the same problem as above
filter by triggerer should be very simple as we have this data in the database
filter by pipeline status should the same as triggerer
filter by commit author is probably the most difficult because we would need to fetch all commits for an author and we don't even have a Gitaly call for that.
filter by pipeline tag (latest, merge request, detached): seems like we might be able to do merge request and detached but not latest because latest is known "after" fetching the pipeline objects, because we need to compare whether the commit associated to the pipeline is the latest for the ref in the repository.
alternatively there is another filter that we could add easily: filter by source (push, web, trigger, external, api, etc.)
My suggestion is to focus in this milestone to have working filtering capabilities in order to lay the ground work for more filters (possibly more complex ones) later on. So we could focus on just the simple one: by triggerer, by pipeline status, by source (I think it's important too) and a default search that could be by commit message. If branches/tags filter could be added using a term search on pipelines.refs (without autocomplete) we could also add them too.
As we are likely to copy the search/filter paradigm from the issue/merge request list we will have a default open search functionality in there as well. The question is if this is doable with it querying commit messages. I would say it would be reasonable to limit the amount if need be.
We either make branch name filter as text search or add a widget to the filters list similar to the autocomplete ones that would accept a term for search. @shampton would this be something feasible? I'm not seeing anything like this done yet.
I'm not entirely sure how that would work, so maybe it would be better to also scope this off to a followup issue. Is that alright with you, @dimitrieh?
The branch name though is a high priority (I would add in "tag" as well in the same way), but has some discussion still. I would deem that more important though than filtering on the commit message (which will be different per commit). Because of that, I think we might be able to reduce scope by text search only on branch/tag.
Filtering/autocomplete by:
trigger author (high priority for scope)
pipeline status
trigger source
Text search by:
branch name (high priority for scope)
tag name
@fabiopitino and @filipa (cc: @shampton) please let me know if this is the scope we can agree on. Higher fidelity mockups including color information following shortly, as well as details on dropdowns and filter tokens.
@eread I do think that trigger author is much clearer than triggerer though a bit more lengthy. I am considering changing this terminology used throughout the interface starting with the filter and the third column inside the pipeline list view. Let me know what you think .
Token inherits status color and features pipeline status icon and status name
dropdown features pipeline status icons
Trigger author filter
Token features trigger author avatar and name
dropdown features trigger author avatar, name, and username
Trigger source filter
Token features trigger source name
dropdown features trigger source name
General search
Features 4 options
@fabiopitino@filipa I would like to know if we align on the following lists being complete including the terminology used (cc: @eread):
Pipeline status:
Canceled
Created
Failed
Manual
Not found
Passed
Running
Skipped
Warning
Trigger source:
API
External
Git push
Manual
Schedule
@jeldergl would you be able to give some feedback on the icon usage of the general search dropdown. I feel we might want to consider changing the icons for status and trigger source. In terms of potentially creating those icons, do I/we need to consider the icon redesign effort having an impact on that?
General search dropdown:
Status - icon: status-created
Trigger author - icon: user
Trigger source - icon: fire
@filipa I am intending for us to stay as close as possible to the already implemented filters and search paradigm of https://gitlab.com/gitlab-org/gitlab-ce/issues. Even so, I provided specs. There might be small differences in measurements and color, though I expect those to be fixed eventually by the GitLab UI component effort.
@dimitrieh
I'm not sure if this is doable in one single release since the search bar we have is not Vue, and this page is all in Vue.
I'm not sure if it's wise to try to use a non-Vue search bar that is built for issuables (and has issuables filters) and try to tweak it to work with a Vue code base with non-issuables filters.
I will look further into this and let you know.
We may need to consider building something similar in Vue from scratch.
@filipa thanks, waiting for further feedback in that case. If need be we can reduce scope, preferably as long as we keep the "high priority for scope" items in there.
The ~Manage team has similar requirements regarding extending the functionality of our filter bar. There's already an issue planned for 12.2 for creating a search/filter bar in Vue, see https://gitlab.com/gitlab-org/gitlab-ce/issues/57396
@xanf can you please let us know what is the current state, or if we have an ETA?
I'm wondering if it would be possible to use this component in this deliverable for 12.3 - do you think this is a reasonable timeline, or not at all?
@filipa will let you know.
I'm setting "merge train" for this (there will be multiple changes to multiple components in gitlab-ui), will link final "filters" one as soon as I create it (expected tomorrow)
I don't mind trigger author in our context. We "author" issues and merge requests. We don't say folks are "issuers" or "issue creators", nor "merge requesters" or "merge request creators".
Though, don't we have something in the UI already that is labeled "Triggered by"?
So one could filter on "Triggered by"? rather than "Trigger author"?
What concepts and procedures should the docs guide and enable the user to understand or accomplish?
This is only available for the project pipeline list currently. You can search or filter down on a certain scope of pipelines across a project's context. For example your own, based on a certain branch, or from a certain source. Additionally, it will be easier to find pipelines with uncommon statusses that have warnings or are not found.
Additive filters will be considered in the future (this might help to see all pipelines from a team working on the same project for example).
To this end, what new page(s) are needed, if any? What pages/subsections need updates? Consider user, admin, and API doc changes and additions.
For any guide or instruction set, should it help address a single use case, or be flexible to address a certain range of use cases?
It will address a range of use cases by allowing the user to search filter down the pipeline scope across a project's context.
Do we need to update a previously recommended workflow? Should we link the new feature from various relevant locations? Consider all ways documentation should be affected.
@dimitrieh here’s some exploration around the icons. I’m not suggesting that A from one has to go with A from another, so you can consider each group independently.
Exploration
Comp
I do like the thought of these being a little more literal and connected though, so for that reason I do like option C from each. If nothing stands out here I’m happy to do more exploration.
@jeldergl thanks! this is looking good. I really like the status icon A. The trigger source icons I am less sure about. What about a lightning bolt or a switch of some kind?
When I was organizing the icons in the gitlab-pattern-library.sketch file I came across this, but noticed it wasn't in the SVG Previewer. So I will likely update that icon, keep the same name and release. Sound fair?
@tauriedavis it's not in the SVG library. So if it exists in the product it's being referenced differently and/or using an SVG not in the current library?
@dimitrieh what are your thoughts here? Although I think the icon could work in both places, I’d prefer to keep everything pipeline-related limited to single use.
My assumption here is that the icon will get a ring around it for the use case of https://gitlab.com/gitlab-org/gitlab-ce/issues/58622 thus looking different from the icon if used for the dropdown in this issue. @tauriedavis is that correct? As there is a version called borderless I think this should be the case.
It would be a pipeline status, so I believe it would always have the border or live within a status badge.
That said, we do have this open issue gitlab-design#593 (closed) which discusses a pipeline status icon that is too similar to another one. I think if we use both proposed icons here for different meanings, we may likely end up in a similar situation. What do you think?
As this moves into 12.4, there might be some room for ~"solution validation" prior to that. I'll look into this next week in terms of availability and available testing audience options.
For any community members that are willing to participate, please send the following feedback to my email:
Your use case for using this feature
Your current role and experience
Size of your company/project
In case you reach out, I'll reply next week and communicate what the next steps might be!
@markpundsack @jlenny @tauriedavis@ayufan@grzesiek Shower thought: I think the underlying problem why people need pipelines filtering is by default all pipelines are displayed. In medium and large sized projects where multiple people work simultaneously on multiple branches, the "Pipelines" view ($PROJECT_URL/pipelines) isn't usable by itself. It's as useless as a hypothetical commits view with all commits sorted by date when they're pushed, and a note what branch each respective commit was pushed to - showing only commits on master by default is a good thing. When I need to find a specific pipeline that executed on master, my current workflow is to open Commits view, and locate pipelines through there. I believe Pipelines should display master branch by default, and offer a way to pick a different branch, or "All branches" (top option in the dropdown). Thoughts?
GitLab is moving all development for both GitLab Community Edition
and Enterprise Edition into a single codebase. The current
gitlab-ce repository will become a read-only mirror, without any
proprietary code. All development is moved to the current
gitlab-ee repository, which we will rename to just gitlab in the
coming weeks. As part of this migration, issues will be moved to the
current gitlab-ee project.
If you have any questions about all of this, please ask them in our
dedicated FAQ issue.
You can also find more information here:
Using "gitlab" and "gitlab-ce" would be confusing, so we decided to
rename gitlab-ce to gitlab-foss to make the purpose of this FOSS
repository more clear
I created a merge requests for CE, and this got closed. What do I
need to do?
Everything in the ee/ directory is proprietary. Everything else is
free and open source software. If your merge request does not change
anything in the ee/ directory, the process of contributing changes
is the same as when using the gitlab-ce repository.
Will you accept merge requests on the gitlab-ce/gitlab-foss project
after it has been renamed?
No. Merge requests submitted to this project will be closed automatically.
Will I still be able to view old issues and merge requests in
gitlab-ce/gitlab-foss?
Yes.
How will this affect users of GitLab CE using Omnibus?
No changes will be necessary, as the packages built remain the same.
How will this affect users of GitLab CE that build from source?
Once the project has been renamed, you will need to change your Git
remotes to use this new URL. GitLab will take care of redirecting Git
operations so there is no hard deadline, but we recommend doing this
as soon as the projects have been renamed.
Where can I see a timeline of the remaining steps?