Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Contributing

n1474335 edited this page Sep 16, 2022 · 9 revisions

There are lots of opportunities to contribute to CyberChef. If you want ideas, take a look at any Issues tagged with 'help wanted'.

Before your contributions can be accepted, you must:

Coding conventions

  • Indentation: Each block should consist of 4 spaces
  • Object/namespace identifiers: CamelCase
  • Function/variable names: camelCase
  • Constants: UNDERSCORE_UPPER_CASE
  • Source code encoding: UTF-8
  • All source files must end with a newline
  • Line endings: UNIX style (\n)

Design Principles

  1. If at all possible, all operations and features should be client-side and not rely on connections to an external server. This increases the utility of CyberChef on closed networks and in virtual machines that are not connected to the Internet. Calls to external APIs may be accepted if there is no other option, but not for critical components.
  2. Latency should be kept to a minimum to enhance the user experience. This means that operation code should sit on the client and be executed there. However, as a trade-off between latency and bandwidth, operation code with large dependencies can be loaded in discrete modules in order to reduce the size of the initial download. The downloading of additional modules must remain entirely transparent so that the user is not inconvenienced.
  3. Large libraries should be kept in separate modules so that they are not downloaded by everyone who uses the app, just those who specifically require the relevant operations.
  4. Use Vanilla JS if at all possible to reduce the number of libraries required and relied upon. Frameworks like jQuery, although included, should not be used unless absolutely necessary.

With these principles in mind, any changes or additions to CyberChef should keep it:

  • Standalone
  • Efficient
  • As small as possible
Clone this wiki locally
Morty Proxy This is a proxified and sanitized view of the page, visit original site.