Tuesday, April 7, 2020

Contributing to one more open source GitHub project - tfstasksinoutlook

Background

When we are working from the office, we talk to people, show them what we did, help them solve their problem, etc,. That makes sure everybody knows that we are doing. Even if we are not religiously following the project management tools such as TFS. Even though there are no tasks planned in TFS for us in advance, people know we will be working on something. 
But that is different when we work from home. As of writing this post, the entire IT world working from home due to COVID-19. Instead of people asking us, are you free to do something? they may directly go to TFS and see what is our plan. If the TFS is not inline, we may get unplanned works and our planned works will be in trouble. 

If we are working as pure developers taking work items from TFS every morning, life is easy. We know or at least easy to plan what to be done. But it is different when we are up on the ladder. A lot of unplanned meetings may come into out way than actual technical works. Those will be in the outlook or a different planning tool than where our code and work items reside. If we don't get the full view of meetings and work, it is difficult to plan and making sure we show our status correctly.

Problem

In order to get the full view of the meetings and work items, we need to consolidate all in one place. One way is to create work items for each and every meeting and set the Start and Finish date and times respectively. There could be scenarios where clients move the meetings or cancel those. Need to sync up again

Another problem is that TFS doesn't have a calendar view to realize how we spend our day. Many companies don't care about each hour how we spend. But some need to know at the accuracy of 30 mins.
There is a team calendar plugin for Azure Dev Ops. But it may not be applicable in our company which is still with the on-premise TFS server. Not on-premise Azure DevOps Server Also, the team calendar is not designed to solve the problems we are dealing with there.

Approaches

Custom application

Develop a custom application to bring outlook calendar and TFS items and show those using a calendar control. Additional functionalities to create tasks and meetings can be added. This is a long route including hosting, authentication, etc...

Buy a product

There are some commercial outlook add-ins that merge TFS items into outlook calendar. But this category involves money which inturn involves approvals and all. All the features may not be there readily so we may need to spend time with the vendor to include the features we need also the options to customize. But it separates our problem of timekeeping to somewhere else and helps us to concentrate on our core business. People who can go this path should go here. 

Open-source / free Outlook add-in to bring TFS items

One last option is to search for any free or open-source outlook add-in. Free tools may not be having all the features we need. If there are just go for it. Open-source helps us to issue a pull request if we don't see the feature and would like to add one. 
Again there is no guarantee that all open-source projects in GitHub or anywhere else accept our PRs. Sometimes it may be more time consuming than buying a product or getting a feature into a free tool..

Solution

This may not be the solution for all. But at least it is working for me. I did some research in GitHub and figured out one Outlook add-in project named tfstasksinoutlook. I tried to use it and could see it is stable and has the basic features I need. The main attraction was it run, fetched TFS items and added to outlook calendar in the first attempt itself.

It is not that much documented. But easily figured out the process of what they are following. It is simple as creating an issue and issue a PR. Obvious in GitHub. Isn't it?

Tried the same path. It was staying idle for long time with the tools and technology versions of that time. I just upgraded the project to VS 2019 and the framework to 4.6 and issued a PR. To my surprise, it got approved within 1 day.

It needs some more features such as showing the start and finish dates, aligning the meeting based on the start and finish date of the work item, adding the TFS task from calendar items, etc...

PR to show "start and finish dates" is already given and got approved. Hopefully can give next PR to align the calendar item to start and finish date soon.

Benefits of open-source

Readers may stop here and just read the last line as they might have heard the benefits of open source. Below are some benefits I got by participating in this project.
  • Refreshed WPF skills. (Good as everybody forecasting a recession :))
  • Learned a different design for WPF applications. This project uses the System.Reactive than traditional MVVm.
  • Reading other's code and improving my coding skills.
  • Of course, a tool to view my TFS items and meetings in one place.
I believe the project got below benefits from my contributions
  • More issues logged
  • Little active after years with some features.
  • Upgraded tools and frameworks to a better shape. Not to the greatest, it is still .Net 4.6
  • A unit test project. Hopefully, people come after me will write unit tests
Thanks very much, Sergii for your nice open-sourced work.

No comments: