Wartremover VS Gitbucket

Compare Wartremover vs Gitbucket and see what are their differences.

Wartremover

Flexible Scala code linting tool (by wartremover)

Gitbucket

A Git platform powered by Scala with easy installation, high extensibility & GitHub API compatibility (by gitbucket)
Our great sponsors
  • talent.io - Download talent.io’s Tech Salary Report
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Truly a developer’s best friend
Wartremover Gitbucket
2 9
1,013 8,750
0.4% 0.7%
9.3 9.1
8 days ago 7 days ago
Scala Scala
Apache License 2.0 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Wartremover

Posts with mentions or reviews of Wartremover. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-01-12.
  • Which static analysis tool do you use for Scala?
    8 projects | reddit.com/r/scala | 12 Jan 2022
    There is also wartremover but you cannot run it separately from your compile command.
  • Newspeak and Domain Modeling
    4 projects | news.ycombinator.com | 29 Jun 2021
    or `NonUnitStatements` without explicit annotation.

    This effectively locks you into writing pure code (you can extend the linter to cover other things like not using `Future` or not using Java libs outside of `MonadError` from cats[4]). The linters operate on typed ASTs at compile time, and have plugins for the most popular scala build tools. Coupled with `-XFatalWarnings', you can guarantee that nothing unexpected happens unless you explicitly pop the escape hatch, for the most part.

    You can still bring in external libraries that haven't been compiled with these safties in place, so you aren't completely safe, but if you use ZIO[5]/Typelevel[6] libraries you can be reasonably assured of referentially transparent code in practice.

    There are three schools of thought, roughly, in the scala community towards the depth of using the type system and linters to provide guarantees and capabilities, currently:

    1) Don't attempt to do this, it makes the barrier to entry to high for Scala juniors. I don't understand this argument - you want to allow runtime footguns you could easily prevent at compile time because the verifiable techniques take time to learn? Why did you even choose to use a typesafe language and pay the compilation time penalty that comes with it?

    2) Abstract everything to the smallest possible dependency interface, including effects (code to an effect runtime, F[_] that implements the methods your code needs to run - if you handle errors, F implements MonadError, if you output do concurrent things, F implements Concurrent, etc.) and you extend the effect with your own services using tagless final or free.

    3) You still use effect wrappers, but you bind the whole project always to use a concrete effect type, avoiding event abstraction, thus making it easier to code, and limiting footguns to a very particular subset (mainly threadpool providers and unsafeRun or equivalent being called eagerly in the internals of applications).

    My opinion is that smallest interface with effect guarantees (#2) is best for very large, long maintenance window apps where thechoice of effect runtime might change(app), or is out of the devs' control (lib); and #3 is best for small apps.

    TL/DR; You can go a really, really long way to guaranteeing effects don't run in user code in scala. Not all the way like Haskell, but far enough that it's painful to code without conforming to referential transparency.

    1. https://github.com/scalacenter/scalafix

    2. https://github.com/scalaz/scalazzi

    3. http://www.wartremover.org/

    4. https://typelevel.org/cats/api/cats/MonadError.html

    5. https://zio.dev/

    6. https://typelevel.org/

Gitbucket

Posts with mentions or reviews of Gitbucket. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-03-23.
  • GitHub incident 2022-03-23
    8 projects | news.ycombinator.com | 23 Mar 2022
    Another self-hosted project in the space that i've seen was GitBucket, although it runs on the JVM (not necessarily a bad thing, just different from Go): https://gitbucket.github.io/
  • Python For Everyone: Mastering Python The Right Way
    4 projects | dev.to | 4 Mar 2022
    Version control Systems eg. Github, Bitbucket, Gitbucket help in version control of your code and generally storage of your code. It can also serve as a visual reminder of the progress you make eg. on Github there is a monitoring system that shows how many days you are active on the platform.
  • GitHub Down again 11/27/2021
    5 projects | news.ycombinator.com | 27 Nov 2021
    > Git itself decentralizes source control, and yet we all want to use single-point-of-failure Github.

    This is pretty much why both the organization that i work for, as well as i personally for my homelab use self-hosted GitLab instances: https://about.gitlab.com/

    Though in practice there are a lot of other options out there, like Gitea (https://gitea.com/) and GitBucket (https://gitbucket.github.io/), though maybe less so for alternative source control systems (e.g. SVN has been all forgotten, however that's a personal pet peeve).

    Not only that, but i also utilize my own Sonatype Nexus (https://www.sonatype.com/products/repository-oss?topnav=true) instances to great success: for doing everything from mirroring container images that i need from DockerHub (e.g. due to their proposed removal policies for old images and already adopted rate limits), to mirroring Maven/npm/NuGet/pip/Ruby and other dependencies, so i don't have to connect to things on the Internet whenever i want to do a new build.

    That not only improves resiliency against things on the Internet going down (apart from situations where i need something new and it's not yet cached), but also improves performance a lot in practice, when only the company servers need to be hit, or my own personal servers in the data center for my cloud hosted stuff, or my own personal servers in my homelab for my own stuff.

    Admittedly, all of that takes a bit of setup, especially if you happen to expose anything to the web in a zero trust fashion (permissible for my own stuff, as long as i'm okay with manually managing CVEs just to probably get hacked in the end anyways, but definitely not that any corporation with an internal network would want to do), but in my eyes that's still worth the effort, if you value being in control of your own software stack and the ecosystem around it.

    It's probably much less worth it, if you don't see that as a benefit and don't want to be the one responsible for whatever project you're working on getting hacked, e.g. if you'd fail to patch out the recent GitLab CVE where exiftools could execute arbitrary code, which is probably the case if you don't have the resources to constantly throw at maintenance, in comparison to companies with 100x - 1000x more resources than you have for that sort of stuff.

  • How to build a search engine with Ruby on Rails
    5 projects | news.ycombinator.com | 16 Sep 2021
    > Rails doesn't scale? Github's the largest code repository site in the world.

    You know, i think i understand both of the viewpoints here. Personally, i'd say that Rails doesn't scale as well as i'd expect it to. You can definitely build scalable systems in it, though you'll end up throwing a whole bunch of hardware resources, when compared to certain other languages and technology stacks, to serve similar load.

    For example, right now i self-host a GitLab (https://about.gitlab.com/) instance for managing my code repositories, CI builds and so on. Even with just me using it (alongside some automated processes), it routinely eats up close to 4 GB of RAM, which in my case is an entire VPSes worth and costs me about 60 Euros a year with Time4VPS (affiliate link, if you'd like to check it out: https://www.time4vps.com/?affid=5294) but would cost me way more in AWS, GCP etc. One could argue that that's not too expensive, but not everyone earns a lot of money and running 10-20 VPSes does eventually build up, since i can't afford colocation and my residential homelab setup with a WireGuard tunnel to bypass ISP NAT with a proxy VPS is pretty slow, even if i can afford more storage, RAM and CPU power that way.

    Compare that situation to projects like Gogs (https://gogs.io/), Gitea (https://gitea.com/), GitBucket (https://gitbucket.github.io/) and sourcehut (https://sourcehut.org/) - i'd argue that all of them on average use less CPU resources and memory for accomplishing similar tasks. For example, have a look here: https://forgeperf.org/

    However, we cannot ignore the fact that using Ruby might have been exactly what allowed for quickly creating the functionality of GitLab and many other platforms and tools out there, GitHub included, so the choice between usable software and innovation in the near future and performant software possibly years from now is a tricky one.

    There are probably good arguments for both, but noone can declare either to be better. Personally, i don't mind using Ruby, Python or even PHP when it makes sense and i don't need to worry about scalability from day 0.

  • Selfhosted open source alternative to GitHub/GitLab
    5 projects | reddit.com/r/selfhosted | 9 Aug 2021
    I saw this on HN and have been using it for the past two weeks for some small hobby projects. The docs are so-so but I got it set up in Docker without much hassle. I've since migrated completely from gitbucket. Great software - I encourage everyone to try it out.
  • Scala projects to read through
    5 projects | reddit.com/r/scala | 7 Aug 2021
    A Git platform (like github or gitlab) written in Scala. Definitely not a pet project so might be fun to read the code. https://github.com/gitbucket/gitbucket
  • Gitly: A light and fast GitHub/Gitlab alternative written in V lang (pre-alpha)
    8 projects | news.ycombinator.com | 4 Aug 2021

What are some alternatives?

When comparing Wartremover and Gitbucket you can also consider the following projects:

Gitea - Git with a cup of tea, painless self-hosted git service

Scapegoat - Scala compiler plugin for static code analysis

Gogs - Gogs is a painless self-hosted Git service

Scalastyle - scalastyle

Taiga - Agile project management platform. Built on top of Django and AngularJS

Scalafix - Refactoring and linting tool for Scala

scalafmt - This repo is now a fork of --->

Gitlab CI - GitLab CE Mirror | Please open new issues in our issue tracker on GitLab.com

Taiga-front - Agile project management platform. Built on top of Django and AngularJS

Linter - Static Analysis Compiler Plugin for Scala

gitlab

Scoverage - Scoverage Scala Code Coverage Core Libs