All Projects → uber → Piranha

uber / Piranha

Licence: apache-2.0
A tool for refactoring code related to feature flag APIs

Programming Languages

javascript
184084 projects - #8 most used programming language
java
68154 projects - #9 most used programming language
swift
15916 projects
C++
36643 projects - #6 most used programming language
objective c
16641 projects - #2 most used programming language
shell
77523 projects
CMake
9771 projects

Projects that are alternatives of or similar to Piranha

Fun with flags
Feature Flags/Toggles for Elixir
Stars: ✭ 554 (-69.89%)
Mutual labels:  feature-flags, feature-toggles
Flipper
Flipper is a simple and useful tool to deal with feature toggles
Stars: ✭ 64 (-96.52%)
Mutual labels:  feature-flags, feature-toggles
Featuretoggle
Simple, reliable feature toggles in .NET
Stars: ✭ 641 (-65.16%)
Mutual labels:  feature-flags, feature-toggles
Feature Flags
Feature flags API written in Go
Stars: ✭ 375 (-79.62%)
Mutual labels:  feature-flags, feature-toggles
Flagsmith Frontend
Web App and Mobile App for Flagsmith
Stars: ✭ 86 (-95.33%)
Mutual labels:  feature-flags, feature-toggles
Sourcery
Refactor Python using AI. ⭐ this repo and Sourcery Starbot will send you a PR
Stars: ✭ 372 (-79.78%)
Mutual labels:  refactoring, code-quality
Unleash Client Python
Unleash client for Python 💡💡💡
Stars: ✭ 44 (-97.61%)
Mutual labels:  feature-flags, feature-toggles
Unleash
Unleash is the open source feature toggle service.
Stars: ✭ 4,679 (+154.29%)
Mutual labels:  feature-flags, feature-toggles
Hippo
PHP standards checker.
Stars: ✭ 82 (-95.54%)
Mutual labels:  ast, code-quality
Unleash Client Go
Unleash Client for Go
Stars: ✭ 78 (-95.76%)
Mutual labels:  feature-flags, feature-toggles
Flagr
Flagr is a feature flagging, A/B testing and dynamic configuration microservice
Stars: ✭ 1,776 (-3.48%)
Mutual labels:  feature-flags, feature-toggles
Typo3 Rector
Rector for TYPO3
Stars: ✭ 107 (-94.18%)
Mutual labels:  ast, refactoring
Solhint
Solhint is an open source project created by https://protofire.io. Its goal is to provide a linting utility for Solidity code.
Stars: ✭ 363 (-80.27%)
Mutual labels:  ast, code-quality
Rector
Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
Stars: ✭ 4,739 (+157.55%)
Mutual labels:  ast, refactoring
Flopflip
🎚Flip or flop features in your React application in real-time backed by flag provider of your choice 🚦
Stars: ✭ 334 (-81.85%)
Mutual labels:  feature-flags, feature-toggles
Javascript Client
NodeJS and Browser SDK client for Split Software
Stars: ✭ 30 (-98.37%)
Mutual labels:  feature-flags, feature-toggles
Tweek
Tweek - an open source feature manager
Stars: ✭ 268 (-85.43%)
Mutual labels:  feature-flags, feature-toggles
Flags
⛳️ Feature Flags for Next.js
Stars: ✭ 277 (-84.95%)
Mutual labels:  feature-flags, feature-toggles
Molasses
Feature toggle library for elixir
Stars: ✭ 70 (-96.2%)
Mutual labels:  feature-flags, feature-toggles
Flipt
An open-source, on-prem feature flag solution
Stars: ✭ 1,623 (-11.79%)
Mutual labels:  feature-flags, feature-toggles

Piranha

Join the chat at https://gitter.im/uber/piranha

Feature flags are commonly used to enable gradual rollout or experiment with new features. In a few cases, even after the purpose of the flag is accomplished, the code pertaining to the feature flag is not removed. We refer to such flags as stale flags. The presence of code pertaining to stale flags can have the following drawbacks:

  • Unnecessary code clutter increases the overall complexity w.r.t maintenance resulting in reduced developer productivity
  • The flags can interfere with other experimental flags (e.g., due to nesting under a flag that is always false)
  • Presence of unused code in the source as well as the binary
  • Stale flags can also cause bugs

Piranha is a tool to automatically refactor code related to stale flags. At a higher level, the input to the tool is the name of the flag and the expected behavior, after specifying a list of APIs related to flags in a properties file. Piranha will use these inputs to automatically refactor the code according to the expected behavior.

This repository contains four independent versions of Piranha, one for each of the four supported languages: Java, JavaScript, Objective-C and Swift.

To use/build each version, look under the corresponding [lang]/ directory and follow instructions in the corresponding [lang]/README.md file. Make sure to cd into that directory to build any related code following the instructions in the README.

A few additional links on Piranha:

  • A technical report detailing our experiences with using Piranha at Uber.
  • A blogpost presenting more information on Piranha.
  • 6 minute video overview of Piranha.

Support

If you have any questions on how to use Piranha, please feel free to reach out to us on the gitter channel. For bugs and enhancement requests, open a GitHub issue.

Contributors

We'd love for you to contribute to Piranha! Please note that once you create a pull request, you will be asked to sign our Uber Contributor License Agreement.

We are also looking for contributions to extend Piranha to other languages (C++, C#, Kotlin).

License

Piranha is licensed under the Apache 2.0 license. See the LICENSE file for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].