danmayer / churn Goto Github PK
View Code? Open in Web Editor NEWProviding additional churn metrics over the original metric_fu churn
Home Page: https://github.com/danmayer/churn
License: MIT License
Providing additional churn metrics over the original metric_fu churn
Home Page: https://github.com/danmayer/churn
License: MIT License
When churn is run on my code as the SVN password is requested I insert it but nothing happens.
Is there any property to be configured for SVN authentication?
I have configured my .gitconfig to use vimdiff when comparing with git diff.
This causes running churn to display the warning and freeze the terminal window.
Passing --no-ext-diff
to the git diff command should fix this case.
churn/lib/churn/scm/git_analyzer.rb
Line 39 in d6f1ad4
Unable to resolve dependencies: churn requires map (= 4.3.0); main requires map (~> 5.1.0) this is while installing just churn.
Hi,
I must be doing something wrong, but when running churn
from my project root I got
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/churn-0.0.35/lib
F, [2014-04-27T07:02:07.016792 #25671] FATAL -- : child class must implement (RuntimeError)
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/churn-0.0.35/lib/churn/scm/source_control.rb:33:in `get_revisions'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/churn-0.0.35/lib/churn/calculator.rb:270:in `parse_log_for_revision_changes'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/churn-0.0.35/lib/churn/calculator.rb:95:in `emit'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/churn-0.0.35/lib/churn/calculator.rb:51:in `report'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/churn-0.0.35/bin/churn:74:in `report_churn'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/churn-0.0.35/bin/churn:82:in `run'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/main-6.0.0/lib/main/program/class_methods.rb:155:in `block in run'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/main-6.0.0/lib/main/program/class_methods.rb:144:in `catch'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/main-6.0.0/lib/main/program/class_methods.rb:144:in `run'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/main-6.0.0/lib/main/factories.rb:18:in `run'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/main-6.0.0/lib/main/factories.rb:25:in `Main'
/opt/rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/churn-0.0.35/bin/churn:15:in `<top (required)>'
/opt/rbenv/versions/2.1.1/bin/churn:23:in `load'
/opt/rbenv/versions/2.1.1/bin/churn:23:in `<main>'
Using 0.0.35 (dependency of metric_fu) with ruby 2.1.1p76 and svn version 1.7.9
Thanks
I just stumbled on your library. It works great for quick analysis, except when I was trying to extract a JSON version of the data to compare with another set of data I have from another tool. I then tried to use the yq
tool to transform the YAML output into JSON, but the keys printed in the YAML output are symbols, which makes the JSON awkward to use.
There are really two suggestions here:
Hey @danmayer,
Have you thought about adding a version option?
[etagwerker@bonsai metric_fu git:(master โ)]$ bundle exec churn --version
/Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-0.0.35/lib
unrecognized option `--version'
It might be useful for reporting bugs and for users to make sure that they're running the latest version.
Hello,
I install gem metric_fu, but it breaking on Churn executing. I try start only churn, but executing breaking also:
www@devos:~/rails_apps/f220_dev_app$ churn
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/churn-0.0.35/lib
F, [2015-10-01T02:37:34.030169 #17227] FATAL -- : Churn requires a bazaar, git, mercurial, or subversion source control (RuntimeError)
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/churn-0.0.35/lib/churn/scm/source_control.rb:16:in `set_source_control'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/churn-0.0.35/lib/churn/calculator.rb:35:in `initialize'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/churn-0.0.35/bin/churn:74:in `new'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/churn-0.0.35/bin/churn:74:in `report_churn'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/churn-0.0.35/bin/churn:82:in `run'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/main-6.1.0/lib/main/program/class_methods.rb:156:in `block in run'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/main-6.1.0/lib/main/program/class_methods.rb:145:in `catch'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/main-6.1.0/lib/main/program/class_methods.rb:145:in `run'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/main-6.1.0/lib/main/factories.rb:18:in `run'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/main-6.1.0/lib/main/factories.rb:25:in `Main'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/gems/churn-0.0.35/bin/churn:15:in `<top (required)>'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/bin/churn:23:in `load'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/bin/churn:23:in `<main>'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/bin/ruby_executable_hooks:15:in `eval'
/home/www/.rvm/gems/ruby-2.2.0@rails420_f220_app/bin/ruby_executable_hooks:15:in `<main>'
www@devos:~/rails_apps/f220_dev_app$
I have git installed on my environment
RubyGems.org doesn't report a license for your gem. This is because it is not specified in the gemspec of your last release.
via e.g.
spec.license = 'MIT'
# or
spec.licenses = ['MIT', 'GPL-2']
Including a license in your gemspec is an easy way for rubygems.org and other tools to check how your gem is licensed. As you can imagine, scanning your repository for a LICENSE file or parsing the README, and then attempting to identify the license or licenses is much more difficult and more error prone. So, even for projects that already specify a license, including a license in your gemspec is a good practice. See, for example, how rubygems.org uses the gemspec to display the rails gem license.
There is even a License Finder gem to help companies/individuals ensure all gems they use meet their licensing needs. This tool depends on license information being available in the gemspec. This is an important enough issue that even Bundler now generates gems with a default 'MIT' license.
I hope you'll consider specifying a license in your gemspec. If not, please just close the issue with a nice message. In either case, I'll follow up. Thanks for your time!
Appendix:
If you need help choosing a license (sorry, I haven't checked your readme or looked for a license file), GitHub has created a license picker tool. Code without a license specified defaults to 'All rights reserved'-- denying others all rights to use of the code.
Here's a list of the license names I've found and their frequencies
p.s. In case you're wondering how I found you and why I made this issue, it's because I'm collecting stats on gems (I was originally looking for download data) and decided to collect license metadata,too, and make issues for gemspecs not specifying a license as a public service :). See the previous link or my blog post about this project for more information.
Try running the code on churn git repo and you will see that classes and methods are empty
Churn is really cool! Churn is useful to identify problem files, even in non-Ruby projects. Maybe we could check for class and method churn for other languages as well?
F, [2011-10-12T11:39:50.155303 #47049] FATAL -- : no such file to load -- bzr_analyzer (LoadError)
/Users/allenwyma/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:54:in gem_original_require' /Users/allenwyma/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:54:in
require'
/Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/churn-0.0.13/bin/../lib/churn/churn_calculator.rb:13
/Users/allenwyma/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:54:in gem_original_require' /Users/allenwyma/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:54:in
require'
/Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/churn-0.0.13/bin/churn:19:in report_churn' /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/churn-0.0.13/bin/churn:28:in
run!'
/Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/main-4.6.0/lib/main/program/class_methods.rb:155:in run' /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/main-4.6.0/lib/main/program/class_methods.rb:144:in
catch'
/Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/main-4.6.0/lib/main/program/class_methods.rb:144:in run' /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/main-4.6.0/lib/main/factories.rb:18:in
run'
I installed mercurial from gem install mercurial, then pulled the master branch and reinstalled the gem from buildling the gemspec from the mast branch source and it doesn't seem to load up the bzr analyzer library. Anyone else having this problem?
/Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/main-4.6.0/lib/main/factories.rb:25:in Main' /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/churn-0.0.13/bin/churn:6 /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/bin/churn:19:in
load'
/Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/bin/churn:19
/Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/metric_fu-2.1.1/lib/generators/churn.rb:24:in to_h': undefined method
[]' for false:FalseClass (NoMethodError)
from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/metric_fu-2.1.1/lib/base/generator.rb:134:in generate_report' from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/metric_fu-2.1.1/lib/base/report.rb:60:in
add'
from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/metrical-0.0.7/lib/metrical.rb:51:in run_metric_fu' from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/metrical-0.0.7/lib/metrical.rb:51:in
each'
from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/metrical-0.0.7/lib/metrical.rb:51:in run_metric_fu' from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/metrical-0.0.7/lib/metrical.rb:18:in
run'
from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/gems/metrical-0.0.7/bin/metrical:4
from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/bin/metrical:19:in `load'
from /Users/allenwyma/.rvm/gems/ruby-1.8.7-p352/bin/metrical:19
Is there a blocker on using the new ruby_parser (not locking the gem at ~>2.3)?
As jeweler and churn screw up all the gem file generation and make the gemfile claim the gem is dependent on itself.
Bundler says that churn is incompatible with other gems in a current project.
This line in the churn Rakefile is the issue:
gem.add_dependency "ruby_parser", '~> 2.0.4'
What would it take to have churn be able to use the current ruby_parser and enable more flexibility for version numbers?
Something like this:
gem.add_dependency "ruby_parser", '~> 2.3'
Thanks,
Joel
I get an error running churn under cucumber from this file. Cucumber does not like the desc on line 6. Renaming the file to churn_tasks.rake seems to solve this problem. Has this file been misnamed, or is my understanding that churn_tasks is a rake file incorrect?
I have several nested directories that I would like to churn
all at once. Many of these each contain their own .gitignore
, and I would like to configure churn
to not only ignore the top level .gitignore
, but any .gitignore
in the sub directories as well.
Maybe my syntax is wrong?
$ churn -i ".gitignore, **/.gitignore"
...
| haskell/.gitignore | 3 |
| latex/.gitignore | 3 |
When I try to run churn 0.0.4 with ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10.2.0] I get this stack output:
dyld: lazy symbol binding failed: Symbol not found: _rb_intern2
Referenced from: /Users/jake/.rvm/gems/ruby-1.9.1-p376/gems/json-1.2.0/ext/json/ext/parser.bundle
Expected in: flat namespace
dyld: Symbol not found: _rb_intern2
Referenced from: /Users/jake/.rvm/gems/ruby-1.9.1-p376/gems/json-1.2.0/ext/json/ext/parser.bundle
Expected in: flat namespace
Trace/BPT trap
I want to check only rb files, but churn checks all files.
I did not find any information about it in the readme, is this possible?
Could we clean up the CLI output a bit? For example, we could omit Classes:
or Methods:
whenever they're empty.
Is it possible to use TFS as the SCM?
Checkout this repo to see the problem:
https://github.com/markburns/empty-rails-3-project-to-demonstrate-bug-in-churn
git clone [email protected]:markburns/empty-rails-3-project-to-demonstrate-bug-in-churn.git
cd empty-rails-3-project-to-demonstrate-bug-in-churn
rake metrics:all
/Users/mark/.rvm/gems/ruby-1.8.7-p334/gems/churn-0.0.13/bin/churn:2:in `require': no such file to load -- main (LoadError)
from /Users/mark/.rvm/gems/ruby-1.8.7-p334/gems/churn-0.0.13/bin/churn:2
from /Users/mark/.rvm/gems/ruby-1.8.7-p334/bin/churn:19:in `load'
from /Users/mark/.rvm/gems/ruby-1.8.7-p334/bin/churn:19
rake aborted!
undefined method `[]' for false:FalseClass
Tasks: TOP => metrics:all
(See full trace by running task with --trace)
Hi @danmayer! ๐
Thanks for maintaining churn
!
It seems that I've found an edge case while trying to use churn
from metric_fu
. I recently noticed that the Appveyor build was failing: https://ci.appveyor.com/project/bf4/metric-fu/builds/32531867/job/ja1pbtisllw801sv -- Failure is happening within the ChurnCalculator#reject_ignored_files
method.
Here is the backtrace:
******* STARTING METRIC churn
Traceback (most recent call last):
22: from bin/metric_fu:9:in `<main>'
21: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/cli/client.rb:19:in `run'
20: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/cli/helper.rb:19:in `run'
19: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/run.rb:9:in `run'
18: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/run.rb:19:in `measure'
17: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/run.rb:19:in `each'
16: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/run.rb:21:in `block in measure'
15: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/reporting/result.rb:48:in `add'
14: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/generator.rb:104:in `generate_result'
13: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/metrics/churn/generator.rb:12:in `emit'
12: from /Users/etagwerker/Projects/fastruby/metric_fu/lib/metric_fu/metrics/churn/generator.rb:35:in `run'
11: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:56:in `report'
10: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:95:in `analyze'
9: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:191:in `calculate_revision_changes'
8: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:191:in `each'
7: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:196:in `block in calculate_revision_changes'
6: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:208:in `calculate_revision_data'
5: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:279:in `parse_logs_for_updated_files'
4: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:287:in `reject_ignored_files'
3: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:287:in `reject'
2: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:287:in `block in reject_ignored_files'
1: from /Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:287:in `any?'
/Users/etagwerker/Projects/fastruby/metric_fu/vendor/bundle/ruby/2.5.0/gems/churn-1.0.5/lib/churn/calculator.rb:287:in `block (2 levels) in reject_ignored_files': empty char-class: /[]/ (RegexpError)
Here are the arguments that we are using to create an instance:
ARGS: {:start_date=>"\"1 year ago\"", :minimum_churn_count=>10, :ignore_files=>[], :data_directory=>"tmp/metric_fu/scratch/churn"}
Here is a potential solution that is working locally for me:
def reject_ignored_files(files)
return files if @ignores.compact.any?
files.reject{ |file, _| @ignores.any?{ |ignore| /#{ignore}/ =~ file } }
end
If you're interested in a solution like that, I can submit a PR.
Please let me know.
Thanks!
When I try to run churn 0.0.4 with ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0] I get this stack trace:
F, [2010-01-12T20:14:02.861020 #6029] FATAL -- : undefined method sexp_type' for class
Sexp' (NameError)
/Library/Ruby/Gems/1.8/gems/ruby_parser-2.0.4/lib/ruby_parser_extras.rb:1025
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in gem_original_require' /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
require'
/Library/Ruby/Gems/1.8/gems/ruby_parser-2.0.4/lib/ruby_parser.rb:12
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in gem_original_require' /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in
require'
/Library/Ruby/Gems/1.8/gems/churn-0.0.4/bin/../lib/churn/churn_calculator.rb:3
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in gem_original_require' /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in
require'
/Library/Ruby/Gems/1.8/gems/churn-0.0.4/bin/churn:18:in report_churn' /Library/Ruby/Gems/1.8/gems/churn-0.0.4/bin/churn:27:in
run!'
/Library/Ruby/Gems/1.8/gems/main-4.2.0/lib/main/program/class_methods.rb:147:in run' /Library/Ruby/Gems/1.8/gems/main-4.2.0/lib/main/program/class_methods.rb:136:in
catch'
/Library/Ruby/Gems/1.8/gems/main-4.2.0/lib/main/program/class_methods.rb:136:in run' /Library/Ruby/Gems/1.8/gems/main-4.2.0/lib/main/factories.rb:18:in
run'
/Library/Ruby/Gems/1.8/gems/main-4.2.0/lib/main/factories.rb:25:in Main' /Library/Ruby/Gems/1.8/gems/churn-0.0.4/bin/churn:5 /usr/bin/churn:19:in
load'
/usr/bin/churn:19
When i run
churn -y
In my project i get the following issue:
F, [2016-10-06T00:03:13.033320 #28182] FATAL -- : invalid byte sequence in UTF-8 (ArgumentError)
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/churn-1.0.2/lib/churn/scm/git_analyzer.rb:11:in 'split'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/churn-1.0.2/lib/churn/scm/git_analyzer.rb:11:in 'get_logs'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/churn-1.0.2/lib/churn/calculator.rb:253:in 'parse_log_for_changes'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/churn-1.0.2/lib/churn/calculator.rb:84:in 'emit'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/churn-1.0.2/lib/churn/calculator.rb:55:in 'report'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/churn-1.0.2/bin/churn:73:in 'report_churn'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/churn-1.0.2/bin/churn:81:in 'run'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/main-6.2.0/lib/main/program/class_methods.rb:156:in 'block in run'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/main-6.2.0/lib/main/program/class_methods.rb:145:in 'catch'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/main-6.2.0/lib/main/program/class_methods.rb:145:in 'run'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/main-6.2.0/lib/main/factories.rb:18:in 'run'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/main-6.2.0/lib/main/factories.rb:25:in 'Main'
/Users/myuser/.rvm/gems/ruby-2.1.8/gems/churn-1.0.2/bin/churn:14:in '<top (required)>'
/Users/myuser/.rvm/gems/ruby-2.1.8/bin/churn:23:in 'load'
/Users/myuser/.rvm/gems/ruby-2.1.8/bin/churn:23:in '<main>'
/Users/myuser/.rvm/gems/ruby-2.1.8/bin/ruby_executable_hooks:15:in 'eval'
/Users/myuser/.rvm/gems/ruby-2.1.8/bin/ruby_executable_hooks:15:in '<main>'
There is any way to fix this encoding issue ?
I was going to suggest enabling regexes for file_extension
and file_prefix
, when I realized it already supports that.
I think this should go into the README. Give me a ping if I should prepare a PR.
There are a few projects that have a lot of churn... i.e. VERSION, Gemfile.lock & release notes. I'd like to ignore files like those in the churn results.
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.