Analyze How Code Review is Going in Bitbucket Data Center

September 27, 2021
#Analytics#How To#Bitbucket
9 min

Awesome Graphs is one of our most popular apps. It’s a solution that extends Bitbucket, a platform that teams use to host Git repositories and collaborate on code.

Awesome Graphs helps engineering leaders and software teams improve their own processes and deliver products faster by transforming invisible development activities into easy-to-understand insights and reports.

One of the keys focuses of the app is the code review processes analytics. We would like to tell you which features support this use case and how you can benefit from the app. Keep reading if you are interested in:

  • Seeing how actively your team members review code
  • Analyzing what developers may need to improve their work patterns and who’s doing a great job
  • Learning what reviewers are most active and diligent
  • Knowing the average time taken to resolve pull requests.

Code review analysis

code review analysis in bitbucket

The Contributions Report analyzes activity in pull requests (tasks, comments, needs work/approved/declined statuses). It helps you understand:

  • What developers create high-quality code and who might need to improve their approach to work. E.g. when an engineer has fewer taskscomments, and needs work flags in their pull requests, it suggests his work is approved as it is or with minor changes and he creates code of high quality.
  • What reviewers are thorough when they review the work of developers. E.g. diligent reviewers come up with suggestions and improvements, so they have more tasks and comments than others.
  • How the dynamics of code review changes over time. E.g. you can see if the number of pull requests with Needs work flags is getting bigger or smaller if the number of tasks in pull requests is increasing or decreasing over time.

Learn more

The average time taken to resolve pull requests

pull requests resolution time report in bitbucket

Another report, Resolution Time Report, shows the average time taken to resolve pull requests. This is helpful to capture trends in resolution time. It displays resolution times of merged and declined pull requests separately. With this report you can:

  • Notice spikes in resolution time and then dive in to see what went wrong
  • See if an average resolution time is high for a long period of time – it can be a signal to look into your code review process and determine what causes delays
  • Monitor how changes in your processes affect the speed of code review.

Learn more

Knowledge sharing indicators

reviewers of pull requests report in bitbucket

The Pie Chart Report is a handy way to check if all developers in your team are involved in the code review. This report shows the breakdown of pull requests by different statistics types.

Grouped by reviewer, the Pie Chart Report shows the following:

  • How many pull requests each person reviewed. These metrics help understand how much everyone contributes to the project.
  • Whether all people review code or there are one or two who are doing all job. This is an indicator of poor knowledge sharing.
  • Who is too busy reviewing all pull requests of their team. These people can become a bottleneck that slows the delivery time, because they’re not available for immediate review.

Learn more

Pull requests with a too long or too short resolution time

pull requests resolution time report in bitbucket

The Resolution Time Distribution Report visualizes pull requests grouped by the time taken to merge or decline them and gives an idea of the most frequent resolution times on your project. Using this report. you can easily:

  • find pull requests with the longest resolution time to check the reasons for the delay
  • see pull requests with the shortest time to resolve them to investigate whether they were checked as appropriate
  • predict the resolution time for the future pull requests.

Learn more

Exporting pull requests for the future processing

With Awesome Graphs, the historical data can be exported to a CSV file right on the People page.

exporting pull requests from bitbucket

As a result of the exporting, you receive the CSV file with the list of pull requests (alternatively, the list of commits) with their details about the author, reviewers, state, the date they were created and last updated. The files can be processed in Excel or integrated with analytics tools like Tableau, Power BI, etc. to create custom graphs and dashboards and merge with the data from other apps.

Learn more

What other reports do you need?

Awesome Graphs already has a wide range of graphs and reports that help you answer various questions about project development and the work of your team in Bitbucket. We are open to your feedback and appreciate hearing about what you need. So if you have a problem that you think Awesome Graphs can help you with, contact us – we actually listen.

Try Awesome Graphs for free

 

Related posts

    Announcing New Stiltsoft Partner Program

    March 22, 2021
    #News
    2 min

    At Stiltsoft, we recognize how important both our partners and customers are, so we decided to launch our new Partner Program that will affect only the Awesome Graphs for Bitbucket app.

    We are building a new Partner Program to provide you with comprehensive training materials and resources, free app licenses, promo codes, and more. If you apply, you save time and effort of your sales team with the help of our training course and demos on demand.

    We want to inform you that Awesome Graphs for Bitbucket has Standard Atlassian Partner Discount until March 21st, 2021. From March 22nd, a 20% discount will only be available for Stiltsoft Partners.

    Other Stiltsoft apps participate in the Standard Discount scheme for Atlassian Marketplace Products.

    To get a 20% discount, you will need to become our partner. Moreover, you will get other partnership perks:

    • Free licenses
    • Demo on demand
    • Promo codes
    • Enablement materials
    • App training
    • Co-marketing activities

    To join, simply drop an email at partner@stiltsoft.com, and we will get you set up as soon as possible. For more details, please visit our website.

    We look forward to continued collaboration!

    Related posts

      Case Study: How a FinTech Company Improves Code Review Process

      June 30, 2020
      #Bitbucket#Case Study
      7 min

      We’ve got pretty good with our Pull Request and Code Review process, but initially, our PRs were complex, not very well documented, and difficult to read. The Resolution Time Distribution graph shows how better we are getting at this, being able to merge PRs much quicker than before.

      Pablo Reyes, VP Engineering at Strands

      Strands is one of our customers that has been using Awesome Graphs for Bitbucket for a couple of years so far. Since 2004, Strands has been developing highly customizable digital money management software for top-tier financial institutions worldwide. Our team is happy to help them reach their goals and improve their development processes with the statistics visualizations we provide.

      Pablo Reyes, VP of Engineering at Strands, shared best practices on how their team effectively uses our solution to:

      • identify bottlenecks in code review
      • track the process improvement with the implemented changes
      • increase developers’ motivation by keeping an eye on their performance trends.

      Code review process improvement

      In fact, they’ve got pretty good with their Code Review process so far. But initially, the PRs were complex, poorly documented, and difficult to read. The Resolution Time Distribution report shows how better they are getting at this, merging PRs much quicker than before. code review process improvement in Bitbucket

      Since they do a lot of code reviews at Strands, it’s always nice to see who and what teams are making the best use of it. It’s motivating for the team to see the progress, and the Pull Requests reports give them the perfect overview of these advancements.

      A couple of years ago, they started improving their code review process. For example, they introduced the practice of approving PRs by at least three people. Moreover, they encouraged developers to leave many comments and suggestions and only approve a PR once it’s good enough.

      As a result, PRs are resolved faster, not only because they are done better but also because the quality of suggested improvements rises constantly. The Contributions report gives an overview of code review activity and whether it improves or not.

      contributions report in Bitbucket

      Software development tracking

      At Strands, managers don’t use Awesome Graphs to control the number of commits per developer. Still, they find it useful to look at the dynamics of the overall activity to capture the code development trends. For example, if there’s a significant drop, the developer is probably stuck at difficult tasks or disturbed by various activities, helping other teams or communicating with customers.

      Most things are caught soon in the day-to-day communication and work, but mid-term changes in the trend (either a decrease or increase) give them a hint of something they may need to look at. This has been visible when people change projects or teams.

      The developer’s Contributions graph gives a clear view of this kind of drops and rises, and it’s handy to compare two periods before and after certain changes were implemented.

      developer contributions in Bitbucket

      Any emerging trend serves as a valuable point for discussion, enabling the team to identify potential bottlenecks or areas that can be enhanced within their software development process. Developers’ performance is complex and depends on lots of different things, some quantitative and some qualitative. Still, the aggregation of code contributions (comments, pull requests, tasks solved, commits, etc) gives some good indicators of how a team evolves with time.

      Along with the others, the Contributors graph provides insights into the dynamics of code contributions by different teams and helps with software development tracking.

      software development tracking

      Try the best teams’ practices for your company

      Awesome Graphs for Bitbucket has become a helpful tool for Strands to identify problem areas  in their processes and track whether the implemented changes improve them. Besides, it is a handy instrument for regular monitoring of software development.

      Try Awesome Graphs for Bitbucket for free and discover how it can benefit your workflow.

      Read more case studies to see how our customers benefit from using Awesome Graphs for Bitbucket in their work:

      Atlassian Applications: Performance Issues to Consider

      May 2, 2019
      #How To#News
      10 min

      A great number of companies worldwide are using Atlassian applications every day. One of the most critical points is performance of Atlassian applications. It is important to keep your Jira, Confluence, or Bitbucket as robust as possible. Low performance and even unpredictable freezes can ruin the user experience and lead to significant decrease in performance of your employees. The growing frustration and dissatisfaction with work results are just additional attributes of this all.

      Common Dogmas

      Performance of Atlassian applications depends on the multiple factors, as follows:

      • Hardware
      • Application
      • Data amount
      • Configuration and settings

      A slow application server will cause temporary lags, freezes, and long response time when the application operates under the load.

      The version of the application may also impact the overall performance. The Atlassian development team is actively working on performance of applications, and every new release improves the performance of critical user interfaces.

      Data amount impacts performance of the Atlassian application too. The more data you have, the slower response of the application you will have. Here you need to understand that larger data amounts require faster hardware components, so a common server will have serious performance issues with processing one million of issues or pages.

      Configuration and settings of the Atlassian application and environment where it operates are additional things to keep in mind. Out-of-box settings may be inappropriate, so here you need to run some experiments to find the optimum.

      Cloud Atlassian Applications

      Unfortunately, you cannot adjust performance of the Cloud Atlassian applications anyhow. If you experience performance issues with your Cloud application, try to contact the Atlassian team.

      The other thing to consider is the location where Atlassian hosts the data center with your Cloud application instance. If it is quite far from you, you can ask the Atlassian team to move your Cloud instance to the data center which is closer to you.

      Server Atlassian Applications

      Performance of the server Atlassian applications depends on different factors, so it is better to adjust issues from different spheres one by one. This allows you to determine what positively impacts the performance, and what does not impact at all.

      Hardware Components

      First of all, install more productive hardware peripherals, more memory, faster CPU, and SSD drives running in a RAID mode.

      The SSD drive impacts the I/O operations of your Atlassian application. The traditional HDD drive does not provide the sufficient performance for resource-intensive applications. Use SSD drives to store your data, including the database.

      Then you need to separate the database server and the application server from each other. Running them both on the same physical server impacts the performance of the Atlassian application.

      When you are using a VPS (in Amazon AWS or anything else) for running the Atlassian application, add more memory and increase the number of CPU cores, and then increase the amount of heap memory for the application. Resources of the start-level VPS instance will be insufficient for operation of the Atlassian application being used by thousands of users.

      If after these manipulations the performance remains at the same level, you need to consider additional points. First of all, take a look at the best practices from Atlassian. Use the logging and profiling to identify the bottlenecks and address them.

      Software Optimizations

      Adjust the number of HTTP and database connections to the application. The insufficient, as well as the great number of connections, may lead to problems with the request servicing time. You need to determine the optimal number of these connections for your instance as it depends on quite many factors. Enable the HTTP response compression, this option should be enabled in Bitbucket, by default.

      Install the latest application updates and upgrades. For example, Jira 8 is much faster than Jira 7, the same also applies to the latest versions of Confluence.

      Archive the old Jira projects that your team no longer use. This feature is implemented for Jira Data Center, but you can try to do the same in Jira Server. Get rid of unused custom fields and apply the comprehensive administration policy.

      The storing of indexes on the RAM disk can significantly improve the performance of the Atlassian application even on the server with SSD drives. The only disadvantage of this approach is that restart of the server will ruin all indexes and you will have to re-run indexation. It is recommended to have an exact copy of the production server where you can do all these experiments and see whether there is any effect from them. Only then adjust the production server.

      If you are using Confluence, you need to remember about Synchrony service which is used for collaborative editing. It also has its own memory settings, so if you notice any issues with it, add some memory.

      In case of Bitbucket you need to acknowledge that it creates git-processes on the host. During the peak load these git-processes may require much more memory than Bitbucket itself needs. This mainly depends on the development workflows you use and size of repositories.

      You can also limit the load per user through the reverse proxy. This can be used in situations when some user account generates too many requests which slows down the Atlassian application.

      Automation, Monitoring, and Antivirus

      Adjust the schedule of running all automations, data exports, imports, and backups. Limit their load and execute them during the inactive hours. In case of distributed teams this can become a real challenge.

      Use the monitoring with different metrics to identify the existing and possible performance issues. Evaluate metrics on a regular basis and set up notifications for critical load values.

      Antivirus checkups can negatively impact performance of the Atlassian application. Run the full system scan during the inactive time or in hours of the lowest load. The full system check can decrease the I/O operations during the check time.

      If after all these efforts, the performance of the Atlassian application remains the same, it’s time to move to Data Center.

      Data Center

      Data Center operates as a cluster of application nodes. All the requests are processed by the load balancer which further routes requests to the appropriate node.

      You can have as many nodes as you need. Their number is not limited anyhow by the Atlassian license. But usually, in some situations there is no sense in adding more nodes. The shared home directory should be single and you need to store it on the fast drive, preferably SSD. The same applies to the database. If nodes operate on the same physical server, the scaling effect will be hardly noticeable.

      If you see the positive impact from adding nodes, you can automate this process. This approach can be very efficient when you use VPS for running the Atlassian application. You can automatically start additional nodes on a new VPS machine during the peak load, and suspend them during the inactivity period. This way you will preserve the high level of performance and will save money on VPS usage as you will use it temporarily.

      The other thing which you can implement is integration of CDN. It can be integrated with Server and Data Center Atlassian applications. All attachments and media assets can be loaded through CDN. This will decrease the load on the application and will improve its response time.

      Not sure what to start from?

      As you may notice performance of Atlassian applications depends on quite many things. It can become a real challenge to identify the potential bottlenecks without having sufficient experience and expertise in the Atlassian platform. But you can always contact us and get a free consultation.

      Just drop an email at tech-support@stiltsoft.com and we will contact you shortly.

      Data Center Approval Procedure for Atlassian App Vendors

      January 8, 2019
      #How To#Confluence#Jira#Bitbucket
      8 min

      Atlassian delivers a variety of applications for planning activities, managing projects and products, storing source code, and building solutions to small companies and large enterprises. Like no other companies, Atlassian team understands how unpredictable downtime or performance downgrade may cause operation instability even in the company with refined processes and procedures.

      To avoid occurrence of such issues in operation with their applications, Atlassian initiated the Data Center approval program for apps distributed on the Atlassian Marketplace. This program was designed to ensure that apps for Data Center are developed with highly available, clustered environments in mind. Each app undergoes a testing and validation process run by Atlassian in cooperation with a Marketplace vendor. Apps that successfully pass this procedure are proven to perform reliably and consistently in large-scale Data Center environments.

      Developing App for Atlassian Data Center Application

      Marketplace vendors that want their apps to be compatible with Atlassian Data Center applications need to undergo the approval process. It includes the following:

      • Filling out a Technical Readiness Checklist for the app
      • Testing app impact on application endpoints
      • Scale testing of the app and its impact on the Atlassian application
      • Support and issue escalation details

      All these items require significant input from the vendor team and preparation of the large-scale environment for testing. The vendor team needs to identify all the integration points where the app interacts with the Atlassian application and test their performance.

      Technical Readiness Checklist

      This is a detailed questionnaire with more than 150 questions detailing the app operation in the Data Center environment. It is comprised of the 10 major sections that cover all the crucial aspects of the app processes and its impact on the Atlassian ecosystem.

      It requires specification of information about data caching and its distribution across nodes, database transactions, cluster locking for running long-term operations, event handling, scheduled tasks, resource usage, security, and other things that may impact the Atlassian application.

      Testing Application Endpoints

      The vendor needs to run a series of tests to verify that the app does not have great impact on the native application REST endpoints after the app installation. This is required to ensure that the app cannot cause the endpoint slowdown or failure under the high load. If your app does not interact with any application endpoints, this testing can be skipped.

      Scale Testing

      Every app needs to be tested in the one-, two-, and four-node environment under the high load. This load testing allows you to identify problems if your app greatly impacts performance of an Atlassian application. Testing is performed in two runs: with the app enabled and with the app disabled. Here the vendor can get great insights on the performance of the app under the load and identify points that can be accelerated.

      Support Escalation Details

      Here the vendor specifies how and who the Atlassian team may contact in case of an emergency case. Every vendor needs to have a dedicated contact channel to provide support for enterprise customers with Data Center deployments.

      Making our apps Data Center approved

      We at StiltSoft have already four apps approved for usage with Atlassian Data Center applications. Here they are:

      • Awesome Graphs for Bitbucket – app to visualize and analyze performance of individual developers and evolvement of project repositories over time.
      • Table Filter and Charts for Confluence – app to manage table data, filter data against multiple criteria, aggregate it in pivot tables, and visualize this data with all sorts of charts and graphs.
      • Smart Attachments for Jira – app to organize retention of attachments in dedicated categories within issues, set access restrictions, and run automated operations or file validations during workflow transitions.
      • Handy Macros for Confluence – a set of tools and augmentations to simplify real-time interactions with content in Confluence. It bundles the switchable status sets, image and video carousels, task reminders and inline task lists.

      All these apps have passed the Data Center approval and proved to be reliable and stable solutions under heavy load.  For all these apps you can install the Data Center compatible version on the Atlassian Marketplace. In the interface of the app listing page, you can select the appropriate hosting option, as follows:

      Don’t wait and try these apps in your Data Center environment.

      How and Why to Migrate between Atlassian Server, Cloud and Data Center Applications

      December 18, 2018
      #How To#Confluence#Jira#Bitbucket
      18 min

      Atlassian applications are offered in the three different types of deployments:

      Cloud. Atlassian deploys and maintains applications providing you with quick access to them. This way you are always up-to-date with all recent features. With a 7-day trial period and subscription-based pricing, Atlassian provides you with a great chance to try and adopt Atlassian software with minimal efforts.

      Server. A lot of companies use this classic deployment option because it allows them receive full control over the application. A perpetual license and access to more than 3000 apps for Server products instead of 1000+ apps for Cloud tools make this option the most popular one at the moment. Server versions have a 30-day trial period.

      Data Center. One of the benefits of using Data Center is that customers with high demands get enterprise-level clustered instances. High availability, scalability, enterprise features, and approved apps make Data Center a great choice for large companies looking to expand and scale fast. With a subscription-based pricing model, Data Center comes with a 30-day trial period.

      What to choose?

      The most suitable type of deployment depends on the size and structure of your enterprise, as well as it depends on the type of data that you use, security requirements, and more. Let’s compare these three options to help you choose the one that best suits your needs.

      Cloud Server Data Center
      Unlimited users (error) 5000 users limit (tick) (tick)
      Administration-free (tick) (error) (error)
      Quick deployment (tick) (error) (error)
      Automatic updates (tick) (error) (error)
      Custom domains
      (confluence.company.com)
      (error)
      (atlassian.net domain is used)
      (tick) (tick)
      Choice from supported databases (error) (tick) (tick)
      Direct access to the database (error) (tick) (tick)
      Perpetual license (error) (tick) (error)
      Enterprise features
      (see details for Jira, Confluence and Bitbucket)
      (error) (error) (tick)
      High availability (error) (error) (tick)
      Scaling (error) (error) (tick)

      Atlassian Marketplace apps

      (star)(star) (star)(star)(star) (star)

      Reasons to migrate between deployments

      Cloud to Server

      We think that this migration is the most popular one. However, companies sometimes prefer to migrate from Server to Cloud.

      Fast-growing companies that start their Atlassian experience from Cloud can quickly get close to their storage or license user limits. In this case their business processes become more complex and they need customizations that Cloud can’t provide them with. Some companies may also join other companies, and each of them needs to get access to both companies’ data. Also, companies may have complex processes that can be significantly simplified by installing apps from the Marketplace that aren’t compatible with Cloud deployment. The best way to deal with these issues is migrating to Server deployment and possibly merging instances into one.

      Sometimes companies split into two or more separate business units. Some of them don’t need strict security or complex processes as well as a lot of users and customizations. In these cases it looks more logical to decrease administration burden by moving to Cloud.

      Server to Data Center

      Another example is dynamically growing companies that actively use the wide set of features. After creating tons of projects and issues in Jira, or gigabytes of repositories in Bitbucket, or hundreds of spaces in Confluence their software slows down. It’s logical but it can adversely affect the quality of their work. The obvious way to overcome these problems is moving to Data Center. Using enterprise features (like project archiving in Jira), customers can decrease the number of issues. Also, there are other ways to improve performance and stability that are only available in clustered software (like separate application nodes for reporting and automation purposes).

      Other migrations

      There are no strict rules for migrations (but each case should be considered independently). It’s even possible to migrate from Cloud to Data Center and from Data Center to Cloud. That means that you can always stay with Atlassian software, regardless of the size of your company.

      How to migrate between deployments with minimal impact on your business

      Approaches to migrations differ depending on the size of your company, a number of business processes and their complexity, and other factors. You need to choose the right one.

      If your company (as well as an instance of Atlassian software) is small, migration usually looks simple. Mostly, these are migrations from Cloud to Server. Usually, you can perform such migrations yourself, the process is well-documented and pretty simple. You can also ask your technical folks to do that as the process doesn’t require any specific skills. At the same time, there can be some obstacles that make this kind of migration more complex.

      If the business is big, there are usually large amounts of data stored in your Atlassian software. These companies mostly migrate from Server to Data Center. This kind of migration is complex and requires a deep understanding of requirements and limitations to choose the right implementation. You need a team of well-trained professionals and a person whose role is to coordinate the team to get your applications migrated. Ideally, you should have an experienced Atlassian Certified specialist in your team to avoid the obstacles (the number of obstacles increases comparing to the previous case). Also, the process of migration and its result should be thoroughly tested to make sure the move went smoothly.

      The alternative way is to get help from Atlassian Solution Partner company.


      Atlassian Partners have a deep understanding of the ecosystem, they know every aspect of Atlassian software and typical challenges you may face during migrations. The most difficult thing in migration is to choose the right options from a wide variety of available options keeping in mind the unique needs of companies on a short-term and on a long-term basis. Also, Atlassian Partner competencies are confirmed by Atlassian Certifications and Atlassian Accreditations held by team members (it’s a part of the Partner Program requirements). Atlassian Solution Partners can help you accurately evaluate what exactly you need and get some recommendations on migration process. They can also support you during your migration and help you in resolving issues after that.

      If you have any questions about migration or need some help in choosing the most suitable option, feel free to contact us. Ask us any questions for free!