Install the Heroku CLI with
$ brew install heroku/brew/heroku
For more information, visit https://cli.heroku.com
License: Apache License 2.0
Install the Heroku CLI with
$ brew install heroku/brew/heroku
For more information, visit https://cli.heroku.com
Xcode 14.1 is required to upgrade Heroku CLI to the newest version on MacOS 13, but 14.1 is only RC1 and not available outside of developer channels. This shouldn't be a requirement until the version is in the public channels.
==> Upgrading heroku/brew/heroku
7.63.4 -> 7.65.0
Error: Your Xcode (14.0.1) is too outdated.
Please update to Xcode 14.1 (or delete it).
Xcode can be updated from the App Store.
The automatic version check shows that there is a new version (7.64.0) available. But it can't be updated as 7.63.4 is linked as the recent version.
This is partially a question and potential PR?
After installing heroku CLI, brew doctor
continually reports a warning that heroku-node is not linked.
$ brew doctor
[snip]
Warning: You have unlinked kegs in your Cellar.
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
heroku-node
I can see that it is a dependency of the heroku cli itself, but since the CLI seems to be working as expected while heroku-node is not linked, it seems that heroku-node doesn't need to be linked. Which means the formula should be marked as keg_only, no?
If that is indeed the case, then I would be more than happy to open a PR to that effect.
After upgrading to 8.1.9 I got
alexey@DESKTOP-41AVESA:~/shaka/blade$ heroku --version
/home/linuxbrew/.linuxbrew/bin/heroku: line 45: /home/linuxbrew/.linuxbrew/Cellar/heroku/8.1.9/libexec/bin/node: cannot execute binary file: Exec format
error
alexey@DESKTOP-41AVESA:~/shaka/blade$ brew info heroku
==> heroku/brew/heroku: stable 8.1.9
Everything you need to get started with Heroku
https://cli.heroku.com
/home/linuxbrew/.linuxbrew/Cellar/heroku/8.1.9 (21,992 files, 225.3MB) *
Built from source on 2023-07-20 at 15:03:16
From: https://github.com/heroku/homebrew-brew/blob/HEAD/Formula/heroku.rb
Given
homebrew-brew/Formula/heroku.rb
Line 8 in 7f57462
If you don't want to support Linux, maybe just prevent installation and point to the standard Linux installation method?
After upgrading my Heroku install via brew upgrade
, I'm getting this error on startup:
$ /usr/local/bin/heroku
module.js:557
throw err;
^
Error: Cannot find module '/Users/mistydemeo/.local/share/heroku/client/package.json'
at Function.Module._resolveFilename (module.js:555:15)
at Function.Module._load (module.js:482:25)
at Module.require (module.js:604:17)
at require (internal/module.js:11:18)
at run (/Users/mistydemeo/.local/share/heroku/client/node_modules/@cli-engine/engine/lib/cli.js:82:22)
at Object.<anonymous> (/Users/mistydemeo/.local/share/heroku/client/bin/heroku.js:7:1)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
I do have a /Users/mistydemeo/.local/share/heroku/client
directory, and it does not have a package.json
.
heroku-node
claims that it is keg-only:
❯ brew info heroku-node
heroku/brew/heroku-node: stable 12.21.0 [keg-only]
node.js dependency for heroku
https://cli.heroku.com
/usr/local/Cellar/heroku-node/12.21.0 (6 files, 45.4MB) *
Built from source on 2021-03-19 at 13:34:47
From: https://github.com/heroku/homebrew-brew/blob/HEAD/Formula/heroku-node.rb
==> Caveats
heroku-node is keg-only, which means it was not symlinked into /usr/local,
because heroku-node is only used by Heroku CLI (heroku/brew/heroku), which explicitly requires from Cellar.
However, as of 1de06ce, it installs a system version of Node to /usr/local
:
❯ which node
❯ brew tap heroku/brew && brew install heroku
[...]
❯ which node
/usr/local/bin/node
I'm guessing this is specifically due to this change, introduced via heroku/cli@7526130.
Is it possible to undo this side effect? It contradicts the documentation and may conflict with other Node installations on the system.
/cc @fivetanley
There have been three releases of the Heroku CLI since the last update to the homebrew recipe. Will this be updated soon?
The name of the bash completion symlink installed is "bash". Because it lives in a "global" directory of all completions for all tools for this computer, it should be called heroku. It's called "bash" because that's the name of the file it symlinks to, which makes sense for that file as it is local to the Heroku autocomplete project. But the symlink itself should probably be renamed.
$ ls -l /usr/local/etc/bash_completion.d/heroku
ls: /usr/local/etc/bash_completion.d/heroku: No such file or directory
$ ls -l /usr/local/etc/bash_completion.d/bash
lrwxr-xr-x 1 hraban admin 53 8 Jan 13:24 /usr/local/etc/bash_completion.d/bash -> ../../Cellar/heroku/7.35.1/etc/bash_completion.d/bash
It's probably related to https://github.com/heroku/homebrew-brew/blob/master/Formula/heroku.rb#L14 but I don't understand what type that bash_completion member and I can't figure out where to look for docs. Perhaps someone here knows how to create a differently named symlink?
Hi, I am running into a very weird error with the heroku CLI tool. Every command I run has a node error that has to do with semvar(?)
$ heroku --version
Refreshing plugins... !
▸ semver has no commands. Is this a CLI plugin?
Refreshing plugins... done
heroku-cli/6.15.11-5cba33c (darwin-x64) node-v9.3.0
On top of that all of the commands aren't present when I run help:
$ heroku help
Refreshing plugins... !
▸ semver has no commands. Is this a CLI plugin?
Refreshing plugins... done
Refreshing plugins... !
▸ semver has no commands. Is this a CLI plugin?
Refreshing plugins... done
Usage: heroku COMMAND
Help topics, type heroku help TOPIC for more details:
auth
plugins add/remove CLI plugins
I don't really know how to debug this, any ideas would be greatly appreciated. Thanks!
I feel uncomfortable configuring taps that aren't in the Homebrew org, because I trust the Homebrew folks to know their own package manager but I don't trust other people to know Homebrew as well. It would be nice to see some explanation as to why this isn't in the homebrew/homebrew-core repo anymore, i.e. why I should trust Heroku to mess with the state of my package manager.
I saw this when trying to upgrade to the latest heroku-node;
==> Downloading https://cli-assets.heroku.com/homebrew/node-8.5.0.tar.xz
Already downloaded: /Users/mistydemeo/Library/Caches/Homebrew/heroku-node-8.5.0.tar.xz
Error: SHA256 mismatch
Expected: 2e0ccf6e8674114e0dd7e5e80a09d895427382f3636f8dac9bbf54d582b19ff6
Actual: 85a955446796d2fdfb4ae994df78f22dd0517c21a1824b78393fe378e77b79fe
Archive: /Users/mistydemeo/Library/Caches/Homebrew/heroku-node-8.5.0.tar.xz
To retry an incomplete download, remove the file above.
It looks like this got caught by CI for the commit that introduced it, so it's not just on my end: https://circleci.com/gh/heroku/homebrew-brew/42?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link Was there a bad upload to the cli-assets host?
After updating to the latest version, whenever I try to run:
heroku run bash -a my-private-shield-app
I get Error: Couldn't find that dyno.
.
However I've been running this in previous versions without problems.
Here's the output with HEROKU_DEBUG=
flag:
Error: Couldn't find that dyno.
Error ID: not_found
at Function.request (/usr/local/Cellar/heroku/7.33.0/libexec/node_modules/@heroku-cli/command/lib/api-client.js:93:27)
at processTicksAndRejections (internal/process/task_queues.js:86:5)
The latest version homebrew installed is 7.33. Latest working version is 7.31.2
System: macOS Sonoma 14.1
% brew update && brew upgrade && brew cleanup
fatal: couldn't find remote ref refs/heads/master
Error: Fetching /usr/local/Homebrew/Library/Taps/heroku/homebrew-brew failed!
Error: Some taps failed to update!
The following taps can not read their remote branches:
heroku/brew
This is happening because the remote branch was renamed or deleted.
Reset taps to point to the correct remote branches by running `brew tap --repair`
% brew tap --repair
fatal: couldn't find remote ref refs/heads/master
Error: Failure while executing; `git -C /usr/local/Homebrew/Library/Taps/heroku/homebrew-brew fetch origin` exited with 128.
% heroku --version
heroku/8.7.0 darwin-x64 node-v16.19.0
I also tried brew update-reset
but nothing changed.
If the newest version of the CLI requires Xcode 11.3.1 as a dependency (if Xocde is installed), then you might add that as a conditional dependency in the formula. Xcode major releases are tied to the OS version; not everyone can update their OS every year.
==> Upgrading 1 outdated package:
heroku/brew/heroku 7.42.2 -> 7.42.4
==> Upgrading heroku/brew/heroku 7.42.2 -> 7.42.4
==> Downloading https://cli-assets.heroku.com/heroku-v7.42.4/heroku-v7.42.4.tar.xz
######################################################################## 100.0%
Error: Your Xcode (10.1) is too outdated.
Please update to Xcode 11.3.1 (or delete it).
Xcode can be updated from the App Store.
I've tried just about everything I could think of. Is this a known issue? Potentially something with Mojave?
Hi. Version 7.7.1 fails to upgrade on fish shell. I don't mind missing the auto-completion, but this entirely fails to upgrade on fish shell.
==> Upgrading 1 outdated package, with result:
heroku/brew/heroku 7.6.0 -> 7.7.1
==> Upgrading heroku/brew/heroku
==> Downloading https://cli-assets.heroku.com/heroku-v7.7.1/heroku-v7.7.1.tar.xz
Already downloaded: /Users/shos/Library/Caches/Homebrew/heroku-7.7.1.tar.xz
==> /usr/local/Cellar/heroku/7.7.1/bin/heroku autocomplete --refresh-cache
Last 15 lines from /Users/shos/Library/Logs/Homebrew/heroku/01.heroku:
2018-07-18 19:00:04 +0300
/usr/local/Cellar/heroku/7.7.1/bin/heroku
autocomplete
--refresh-cache
Error: fish is not a supported shell for autocomplete
at Index.errorIfNotSupportedShell (/usr/local/Cellar/heroku/7.7.1/libexec/node_modules/@heroku-cli/plugin-autocomplete/lib/base.js:20:19)
at Index.run (/usr/local/Cellar/heroku/7.7.1/libexec/node_modules/@heroku-cli/plugin-autocomplete/lib/commands/autocomplete/index.js:15:14)
at Index._run (/usr/local/Cellar/heroku/7.7.1/libexec/node_modules/@oclif/command/lib/command.js:29:31)
If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):
https://github.com/heroku/homebrew-brew/issues
Installing heroku/brew/heroku has failed!
Basic versions, in case it's needed:
fish -v => fish, version 2.7.1
heroku -v => heroku/7.6.0 darwin-x64 node-v10.6.0
macOS version => 10.13.6
$ brew upgrade heroku
==> Upgrading 1 outdated package, with result:
heroku/brew/heroku 7.6.0 -> 7.7.0
==> Upgrading heroku/brew/heroku
==> Downloading https://cli-assets.heroku.com/heroku-v7.7.0/heroku-v7.7.0.tar.xz
######################################################################## 100.0%
==> /usr/local/Cellar/heroku/7.7.0/bin/heroku autocomplete --refresh-cache
then it just hangs.
This may be waiting for user input:
$ heroku autocomplete
heroku: Enter your login credentials
Building the autocomplete cache... ?
Email:
I try to upgrade heroku through Homebrew and it doesn't work.
Here is the result;
==> Upgrading 1 outdated package, with result:
heroku/brew/heroku 7.6.1 -> 7.7.1
==> Upgrading heroku/brew/heroku
==> Downloading https://cli-assets.heroku.com/heroku-v7.7.1/heroku-v7.7.1.tar.xz
######################################################################## 100.0%
==> /usr/local/Cellar/heroku/7.7.1/bin/heroku autocomplete --refresh-cache
Last 15 lines from /Users/kangwooc/Library/Logs/Homebrew/heroku/01.heroku:
Building the autocomplete cache... ?
heroku: Enter your login credentials
Email: Building the autocomplete cache... done
/usr/local/Cellar/heroku/7.7.1/libexec/node_modules/@oclif/errors/lib/index.js:29
throw err;
^
Error: timed out
at Object.error (/usr/local/Cellar/heroku/7.7.1/libexec/node_modules/@oclif/errors/lib/index.js:22:17)
at Timeout.setTimeout (/usr/local/Cellar/heroku/7.7.1/libexec/node_modules/@heroku-cli/command/lib/login.js:29:38)
at ontimeout (timers.js:427:11)
at tryOnTimeout (timers.js:289:5)
at unrefdHandle (timers.js:511:7)
at Timer.processTimers (timers.js:211
I just ran brew upgrade
and it has updated the heroku
package to version 64
:
heroku/brew/heroku 7.68.2 -> 64
This is because the latest release (0f27132) has switched the asset URLs naming to one that include the architecture - for example:
https://cli-assets.heroku.com/versions/8.1.8/70bfdbb/heroku-v8.1.8-70bfdbb-darwin-arm64.tar.xz
...and since the formula definition doesn't include an explicit version number, Homebrew is having to extract the version from the URL using false-positive-prone heuristics.
Sadly Homebrew wontfixed doing anything about these broken heuristics:
Homebrew/brew#13082
To resolve this, the formula needs to be updated:
version
attributeversion_scheme
, otherwise existing users who've updated to the invalid "64" version will never receive any future updates, since "64" will always be seen as newer than 7.x.y
versions etc. See: https://docs.brew.sh/Formula-Cookbook#version-scheme-changesFor an example of another project having to resolve this same issue, see:
buildpacks/homebrew-tap#20
buildpacks/pack#1408
Attempted to upgrade heroku
v8.3.0
. Any execution of the binary results in MODULE_NOT_FOUND
error.
How I reproduced:
❯ brew uninstall --zap heroku && brew tap heroku/brew && brew install heroku && heroku --help
Uninstalling /opt/homebrew/Cellar/heroku/8.3.0... (34,323 files, 175MB)
==> Fetching heroku/brew/heroku
==> Downloading https://cli-assets.heroku.com/versions/8.3.0/16f4f8e/heroku-v8.3.0-16f4f8e-darwin-arm64.tar.xz
Already downloaded: /Users/ed/Library/Caches/Homebrew/downloads/51f47a967e9d9df695e899f86c081aa024750f87e63996763e727cc6bdffeecc--heroku-v8.3.0-16f4f8e-darwin-arm64.tar.xz
==> Installing heroku from heroku/brew
==> Caveats
To use the Heroku CLI's autocomplete --
Via homebrew's shell completion:
1) Follow homebrew's install instructions https://docs.brew.sh/Shell-Completion
NOTE: For zsh, as the instructions mention, be sure compinit is autoloaded
and called, either explicitly or via a framework like oh-my-zsh.
2) Then run
$ heroku autocomplete --refresh-cache
OR
Use our standalone setup:
1) Run and follow the install steps:
$ heroku autocomplete
==> Summary
🍺 /opt/homebrew/Cellar/heroku/8.3.0: 34,323 files, 175MB, built in 25 seconds
==> Running `brew cleanup heroku`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
node:internal/modules/cjs/loader:998
throw err;
^
Error: Cannot find module '../../../packages/cli/package.json'
Require stack:
- /opt/homebrew/Cellar/heroku/8.3.0/libexec/lib/global_telemetry.js
- /opt/homebrew/Cellar/heroku/8.3.0/libexec/bin/run
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:995:15)
at Function.Module._load (node:internal/modules/cjs/loader:841:27)
at Module.require (node:internal/modules/cjs/loader:1067:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.<anonymous> (/opt/homebrew/Cellar/heroku/8.3.0/libexec/lib/global_telemetry.js:15:21)
at Module._compile (node:internal/modules/cjs/loader:1165:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10)
at Module.load (node:internal/modules/cjs/loader:1043:32)
at Function.Module._load (node:internal/modules/cjs/loader:878:12)
at Module.require (node:internal/modules/cjs/loader:1067:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/opt/homebrew/Cellar/heroku/8.3.0/libexec/lib/global_telemetry.js',
'/opt/homebrew/Cellar/heroku/8.3.0/libexec/bin/run'
]
}
brew test heroku
results in the following:
❯ brew test heroku
==> Testing heroku/brew/heroku
==> /opt/homebrew/Cellar/heroku/8.3.0/bin/heroku version
Last 15 lines from /Users/ed/Library/Logs/Homebrew/heroku/test.01.heroku:
at Function.Module._load (node:internal/modules/cjs/loader:841:27)
at Module.require (node:internal/modules/cjs/loader:1067:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.<anonymous> (/opt/homebrew/Cellar/heroku/8.3.0/libexec/lib/global_telemetry.js:15:21)
at Module._compile (node:internal/modules/cjs/loader:1165:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10)
at Module.load (node:internal/modules/cjs/loader:1043:32)
at Function.Module._load (node:internal/modules/cjs/loader:878:12)
at Module.require (node:internal/modules/cjs/loader:1067:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/opt/homebrew/Cellar/heroku/8.3.0/libexec/lib/global_telemetry.js',
'/opt/homebrew/Cellar/heroku/8.3.0/libexec/bin/run'
]
}
Error: heroku/brew/heroku: failed
An exception occurred within a child process:
BuildError: Failed executing: /opt/homebrew/Cellar/heroku/8.3.0/bin/heroku version
/opt/homebrew/Library/Homebrew/formula.rb:2741:in `block in system'
/opt/homebrew/Library/Homebrew/formula.rb:2677:in `open'
/opt/homebrew/Library/Homebrew/formula.rb:2677:in `system'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/_methods.rb:270:in `block in _on_method_added'
/opt/homebrew/Library/Taps/heroku/homebrew-brew/Formula/heroku.rb:45:in `block in <class:Heroku>'
/opt/homebrew/Library/Homebrew/formula.rb:2501:in `block (3 levels) in run_test'
/opt/homebrew/Library/Homebrew/extend/kernel.rb:499:in `with_env'
/opt/homebrew/Library/Homebrew/formula.rb:2500:in `block (2 levels) in run_test'
/opt/homebrew/Library/Homebrew/formula.rb:1054:in `with_logging'
/opt/homebrew/Library/Homebrew/formula.rb:2499:in `block in run_test'
/opt/homebrew/Library/Homebrew/mktemp.rb:75:in `block in run'
/opt/homebrew/Library/Homebrew/mktemp.rb:75:in `chdir'
/opt/homebrew/Library/Homebrew/mktemp.rb:75:in `run'
/opt/homebrew/Library/Homebrew/formula.rb:2792:in `mktemp'
/opt/homebrew/Library/Homebrew/formula.rb:2493:in `run_test'
/opt/homebrew/Library/Homebrew/test.rb:44:in `block in <main>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/timeout.rb:93:in `block in timeout'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/timeout.rb:33:in `block in catch'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/timeout.rb:33:in `catch'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/timeout.rb:33:in `catch'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/timeout.rb:108:in `timeout'
/opt/homebrew/Library/Homebrew/test.rb:48:in `<main>'
Best I can tell, what I think is going on:
heroku
linked to /opt/homebrew/Cellar/heroku/8.3.0/libexec/bin/run
(Homebrew behavior)/opt/homebrew/Cellar/heroku/8.3.0/libexec/bin/run
imports ../lib/global_telemetry
on line 9opt/homebrew/Cellar/heroku/8.3.0/libexec/lib/global_telemetry.js
imports ../../../packages/cli/package.json
../../..
resolves to /opt/homebrew/Cellar/heroku/8.3.0
, so is effectively trying to look outside itself (being the bundle)../package.json
, which resides in the libexec
directoryHere's the patch:
--- global_telemetry.js.old 2023-08-16 15:40:09
+++ global_telemetry.js 2023-08-16 15:40:22
@@ -12,7 +12,7 @@
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
-const { version } = require('../../../packages/cli/package.json');
+const { version } = require('../package.json');
const isDev = process.env.IS_DEV_ENVIRONMENT === 'true';
const path = require('path');
const root = path.resolve(__dirname, '../../../package.json');
I also noticed line 18 attempts to resolve the "root" again going too far in path traversal. Possibly may want something like this?
--- global_telemetry.js.old 2023-08-16 15:40:09
+++ global_telemetry.js 2023-08-16 15:41:08
@@ -12,10 +12,10 @@
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
-const { version } = require('../../../packages/cli/package.json');
const isDev = process.env.IS_DEV_ENVIRONMENT === 'true';
const path = require('path');
-const root = path.resolve(__dirname, '../../../package.json');
+const root = path.resolve(__dirname, '../package.json');
+const { version } = require(root);
const config = new core_1.Config({ root });
const heroku = new command_1.APIClient(config);
const token = heroku.auth;
brew test heroku
now succeeds
❯ brew test heroku
==> Testing heroku/brew/heroku
==> /opt/homebrew/Cellar/heroku/8.3.0/bin/heroku version
The CLI has been printing › Warning: heroku update available from 7.68.2 to 8.x
when autocompleting a -a <app_name>
which is itself very irritating, making the autocomplete hard to work with, but particularly irritating because 8.0.1
isn't in this tap so I can't update to that version.
When installing the heroku
Homebrew package, I got this warning:
Warning: A newer Command Line Tools release is available.
Update them from Software Update in System Preferences or run:
softwareupdate --all --install --force
If that doesn't show you an update run:
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
Alternatively, manually download them from:
https://developer.apple.com/download/more/.
However, as of this writing, I have Command Line tools 11.4.1, and the only other newer package is a beta version, which is not wise to install if you aren't helping Apple find bugs:
Software Update is also not offering this beta version for obvious reasons
heroku/brew/heroku: stable 7.47.11
node binary is Mach-O 64-bit executable x86_64 should be Mach-O 64-bit executable arm64.
Workaround:
cd /opt/homebrew/Cellar/heroku-node/12.16.2/share
mv node node.old
ln -sh $(which node) .
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.