r-ae-i / redmine_editauthor Goto Github PK
View Code? Open in Web Editor NEWRedmine plugin that allows to edit issue author.
License: GNU General Public License v3.0
Redmine plugin that allows to edit issue author.
License: GNU General Public License v3.0
Hey,
great plugin, it is working very well!
We've noticed that we have no way of retrieving the actual issue author within the redmine webinterface. I'm assuming this is intended behavour. Isn't it?
Do you think it is desirable to create a journal entry which reflects the actual creator of the issue and changes it to the dropdown-selected author?
BR Max
When I change author, I am not see some users, because it role can create new issues, but issue can't be assign to this role.
Please, fix it, change assignable_users to other rule.
I mean page like this
https://redmine.mydomain/issues/1234
�[1m�[35mProject Load (0.0ms)�[0m SELECT "projects".* FROM "projects" WHERE (projects.status = 1 AND projects.id IN (SELECT em.project_id FROM enabled_modules em WHERE em.name='issue_tracking'))
�[1m�[36mCACHE (0.0ms)�[0m �[1mSELECT "issue_statuses".* FROM "issue_statuses" WHERE "issue_statuses"."id" = 4 LIMIT 1�[0m
�[1m�[35mCACHE (0.0ms)�[0m SELECT "users".id FROM "users" INNER JOIN "groups_users" ON "users"."id" = "groups_users"."group_id" WHERE "users"."type" IN ('Group') AND "groups_users"."user_id" = 3
�[1m�[36mCACHE (0.0ms)�[0m �[1mSELECT "roles".* FROM "roles" �[0m
�[1m�[35mCACHE (0.0ms)�[0m SELECT "workflows".* FROM "workflows" WHERE "workflows"."type" IN ('WorkflowTransition') AND "workflows"."old_status_id" = 4 AND (role_id IN (1,2,3,4,5,6) AND tracker_id = 1 AND ((author = 'f' AND assignee = 'f')))
�[1m�[36mCACHE (0.0ms)�[0m �[1mSELECT "issue_statuses".* FROM "issue_statuses" WHERE "issue_statuses"."id" IN (1, 2, 3, 5, 6, 7)�[0m
�[1m�[35mCACHE (0.0ms)�[0m SELECT "roles".* FROM "roles"
�[1m�[36mWorkflowPermission Load (0.0ms)�[0m �[1mSELECT "workflows".* FROM "workflows" WHERE "workflows"."type" IN ('WorkflowPermission') AND "workflows"."tracker_id" = 1 AND "workflows"."old_status_id" = 4 AND "workflows"."role_id" IN (1, 2, 3, 4, 5, 6)�[0m
�[1m�[35mCACHE (0.0ms)�[0m SELECT "projects".* FROM "projects" WHERE (projects.status = 1 AND projects.id IN (SELECT em.project_id FROM enabled_modules em WHERE em.name='issue_tracking'))
�[1m�[36mTracker Load (0.0ms)�[0m �[1mSELECT "trackers".* FROM "trackers" INNER JOIN "projects_trackers" ON "trackers"."id" = "projects_trackers"."tracker_id" WHERE "projects_trackers"."project_id" = 7 ORDER BY trackers.position�[0m
�[1m�[35mIssuePriority Load (0.0ms)�[0m SELECT "enumerations".* FROM "enumerations" WHERE "enumerations"."type" IN ('IssuePriority') AND "enumerations"."active" = 't' ORDER BY enumerations.position ASC
�[1m�[36mSQL (1.0ms)�[0m �[1mSELECT "members"."id" AS t0_r0, "members"."user_id" AS t0_r1, "members"."project_id" AS t0_r2, "members"."created_on" AS t0_r3, "members"."mail_notification" AS t0_r4, "users"."id" AS t1_r0, "users"."login" AS t1_r1, "users"."hashed_password" AS t1_r2, "users"."firstname" AS t1_r3, "users"."lastname" AS t1_r4, "users"."mail" AS t1_r5, "users"."admin" AS t1_r6, "users"."status" AS t1_r7, "users"."last_login_on" AS t1_r8, "users"."language" AS t1_r9, "users"."auth_source_id" AS t1_r10, "users"."created_on" AS t1_r11, "users"."updated_on" AS t1_r12, "users"."type" AS t1_r13, "users"."identity_url" AS t1_r14, "users"."mail_notification" AS t1_r15, "users"."salt" AS t1_r16, "roles"."id" AS t2_r0, "roles"."name" AS t2_r1, "roles"."position" AS t2_r2, "roles"."assignable" AS t2_r3, "roles"."builtin" AS t2_r4, "roles"."permissions" AS t2_r5, "roles"."issues_visibility" AS t2_r6 FROM "members" LEFT OUTER JOIN "users" ON "users"."id" = "members"."user_id" LEFT OUTER JOIN "member_roles" ON "member_roles"."member_id" = "members"."id" LEFT OUTER JOIN "roles" ON "roles"."id" = "member_roles"."role_id" WHERE "members"."project_id" = 7 AND (users.type='User' AND users.status=1)�[0m
�[1m�[35m (1.1ms)�[0m SELECT COUNT(*) FROM "issue_categories" WHERE "issue_categories"."project_id" = 7
�[1m�[36mSQL (0.0ms)�[0m �[1mSELECT "versions"."id" AS t0_r0, "versions"."project_id" AS t0_r1, "versions"."name" AS t0_r2, "versions"."description" AS t0_r3, "versions"."effective_date" AS t0_r4, "versions"."created_on" AS t0_r5, "versions"."updated_on" AS t0_r6, "versions"."wiki_page_title" AS t0_r7, "versions"."status" AS t0_r8, "versions"."sharing" AS t0_r9, "projects"."id" AS t1_r0, "projects"."name" AS t1_r1, "projects"."description" AS t1_r2, "projects"."homepage" AS t1_r3, "projects"."is_public" AS t1_r4, "projects"."parent_id" AS t1_r5, "projects"."created_on" AS t1_r6, "projects"."updated_on" AS t1_r7, "projects"."identifier" AS t1_r8, "projects"."status" AS t1_r9, "projects"."lft" AS t1_r10, "projects"."rgt" AS t1_r11, "projects"."inherit_members" AS t1_r12 FROM "versions" LEFT OUTER JOIN "projects" ON "projects"."id" = "versions"."project_id" WHERE "versions"."status" = 'open' AND (projects.id = 7 OR (projects.status <> 9 AND ( versions.sharing = 'system' OR (projects.lft >= 13 AND projects.rgt <= 26 AND versions.sharing = 'tree') OR (projects.lft < 13 AND projects.rgt > 26 AND versions.sharing IN ('hierarchy', 'descendants')) OR (projects.lft > 13 AND projects.rgt < 26 AND versions.sharing = 'hierarchy'))))�[0m
Rendered issues/_form_custom_fields.html.erb (1.1ms)
Rendered issues/_attributes.html.erb (32.2ms)
�[1m�[35mSetting Load (0.0ms)�[0m SELECT "settings".* FROM "settings" WHERE "settings"."name" = 'plugin_redmine_editauthor' LIMIT 1
Rendered issues/_form.html.erb (132.9ms)
Rendered issues/_edit.html.erb (138.1ms)
Rendered issues/show.html.erb within layouts/base (271.7ms)
Completed 500 Internal Server Error in 526ms
ActionView::Template::Error (undefined method `pluck' for #<Arel::Nodes::Distinct:0x4db9cf8>):
41: <%= render :partial => 'issues/attributes' %>
42: </div>
43:
44: <%= call_hook(:view_issues_form_details_bottom, { :issue => @issue, :form => f }) %>
45: <% end %>
lib/redmine/hook.rb:61:in `block (2 levels) in call_hook'
lib/redmine/hook.rb:61:in `each'
lib/redmine/hook.rb:61:in `block in call_hook'
lib/redmine/hook.rb:58:in `tap'
lib/redmine/hook.rb:58:in `call_hook'
lib/redmine/hook.rb:158:in `call_hook'
app/views/issues/_form.html.erb:44:in `block in _app_views_issues__form_html_erb___343850445_41569596'
app/helpers/application_helper.rb:955:in `labelled_fields_for'
app/views/issues/_form.html.erb:1:in `_app_views_issues__form_html_erb___343850445_41569596'
app/views/issues/_edit.html.erb:8:in `block in _app_views_issues__edit_html_erb___467624147_41534712'
app/helpers/application_helper.rb:948:in `labelled_form_for'
app/views/issues/_edit.html.erb:1:in `_app_views_issues__edit_html_erb___467624147_41534712'
app/views/issues/show.html.erb:132:in `_app_views_issues_show_html_erb__700021579_34282788'
app/controllers/issues_controller.rb:119:in `block (2 levels) in show'
app/controllers/issues_controller.rb:116:in `show'
My environment
Environment:
Redmine version 2.3.4.stable
Ruby version 1.9.3-p448 (2013-06-27) [i386-mingw32]
Rails version 3.2.13
Environment development
Database adapter SQLite
Redmine plugins:
no plugin installed
Hello,
when I change the issue's author and save, it show internal error,and the nignx log as below:
App 15690 stderr: = Running after_save custom workflows for Issue (#444) "问题 #444: 11111111111"
App 15690 stderr: = Finished running after_save custom workflows for Issue (#444) "问题 #444: 11111111111"
App 15690 stderr: Rendered mailer/_issue.text.erb (6.7ms)
App 15690 stderr: Rendered mailer/issue_edit.text.erb within layouts/mailer (14.4ms)
App 15690 stderr: Rendered mailer/_issue.html.erb (2.2ms)
App 15690 stderr: Rendered mailer/issue_edit.html.erb within layouts/mailer (8.7ms)
App 15690 stderr: Completed 500 Internal Server Error in 516ms (ActiveRecord: 36.0ms)
App 15690 stderr:
App 15690 stderr: Errno::ECONNREFUSED (Failed to open TCP connection to 192.168.2.16:9292 (Connection refused - connect(2) for "192.168.2.16" port 9292)):
App 15690 stderr: plugins/redmine_app_notifications/app/models/app_notification.rb:13:in deliver' App 15690 stderr: plugins/redmine_app_notifications/lib/app_notifications_journals_patch.rb:32:in
block in create_app_notifications_after_create_journal'
App 15690 stderr: plugins/redmine_app_notifications/lib/app_notifications_journals_patch.rb:24:in each' App 15690 stderr: plugins/redmine_app_notifications/lib/app_notifications_journals_patch.rb:24:in
create_app_notifications_after_create_journal'
App 15690 stderr: app/models/journal.rb:67:in save' App 15690 stderr: app/models/issue.rb:1691:in
create_journal'
App 15690 stderr: app/models/issue.rb:211:in create_or_update' App 15690 stderr: app/controllers/issues_controller.rb:516:in
block in save_issue_with_child_records'
App 15690 stderr: app/controllers/issues_controller.rb:504:in save_issue_with_child_records' App 15690 stderr: app/controllers/issues_controller.rb:179:in
update'
App 15690 stderr: lib/redmine/sudo_mode.rb:63:in `sudo_mode'
and I add the port 9292 to public zone ,but still show error,what is the misstake?thanks.
Hi,
Is there any way this plugin can be made to work with Redmine 4.0?
Have you any plans to update your plugin for compatible with Redmine 4.1.x?
If an original author is registered in redmine, however not listed in the group for which the project is running, when you update the ticket, it automatically selects another user and changes the author.
This is also not the first person on the list, however it appears to be the same one each time.
Is it possible to also sort the list in alphabetical order.
Cheers
Hello and thank you for the redmine author plugin that makes our ticketing more simple and easy to use.
We are actually using redmine as out ticketing system and we've noticed that when a user may choose the author not only sees the project members where the issue is being opened, but all the users of the visible projects in the redmine instance.
Since we have many customers in one place (redmine instance) we would like to have the possibility to choose only between actual project members and not between all users in visible projects. Of course this option has to be the same even when modifying the author on an existing issue, and not only when adding a new issue.
A drop-down list with separators between users coming from current project (to put first in the list) and all remaining users from visible projects (to put last in the list) will suffice the request too.
Furthermore it will be nice if the drop-down list would be alphabetically sorted.
Kind regards
i was silly. commented the wrong github project :-) please delete or close the issue
i was silly. commented the wrong github project :-) please delete or close the issue
Hello, at Runtime i get this error:
Message from application: additionals plugin cannot be used with redmine_editauthor plugin'. (RuntimeError) /opt/bitnami/apps/redmine/htdocs/plugins/additionals/lib/additionals.rb:109:in
block in incompatible_plugins'
/opt/bitnami/apps/redmine/htdocs/plugins/additionals/lib/additionals.rb:108:in each' /opt/bitnami/apps/redmine/htdocs/plugins/additionals/lib/additionals.rb:108:in
incompatible_plugins'
`
It would be greatly appreciated if the plugin allow you to choose the Author when creating a new Issue. Is it possible?
Hi, I tried to install the plugins on Redmine 5.0.0.stable. Reading the plugin's tab, the compatibility is there: https://redmine.org/plugins/redmine_editauthor
Unfortunately though, it generates me errors by installing it. Restarting Redmine returns the error page.
This is the result from the command: bundle exec rake redmine:plugins:migrate RAILS_ENV=production
rake aborted!
LoadError: cannot load such file -- redmine_editauthor
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:35:in `require'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:35:in `require'
/opt/bitnami/redmine/plugins/redmine_editauthor/init.rb:1:in `<top (required)>'
/opt/bitnami/redmine/lib/redmine/plugin_loader.rb:31:in `load'
/opt/bitnami/redmine/lib/redmine/plugin_loader.rb:31:in `run_initializer'
/opt/bitnami/redmine/lib/redmine/plugin_loader.rb:108:in `each'
/opt/bitnami/redmine/lib/redmine/plugin_loader.rb:108:in `block in load'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:427:in `instance_exec'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:427:in `block in make_lambda'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:198:in `block (2 levels) in halting'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:604:in `block (2 levels) in default_terminator'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:603:in `catch'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:603:in `block in default_terminator'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:199:in `block in halting'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:512:in `block in invoke_before'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:512:in `each'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:512:in `invoke_before'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb:105:in `run_callbacks'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/reloader.rb:88:in `prepare!'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/railties-6.1.4.7/lib/rails/application/finisher.rb:124:in `block in <module:Finisher>'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/railties-6.1.4.7/lib/rails/initializable.rb:32:in `instance_exec'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/railties-6.1.4.7/lib/rails/initializable.rb:32:in `run'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/railties-6.1.4.7/lib/rails/initializable.rb:61:in `block in run_initializers'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/railties-6.1.4.7/lib/rails/initializable.rb:60:in `run_initializers'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/railties-6.1.4.7/lib/rails/application.rb:391:in `initialize!'
/opt/bitnami/redmine/config/environment.rb:16:in `<top (required)>'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:35:in `require'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:35:in `require'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/dependencies.rb:332:in `block in require'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/dependencies.rb:299:in `load_dependency'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4.7/lib/active_support/dependencies.rb:332:in `require'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/railties-6.1.4.7/lib/rails/application.rb:367:in `require_environment!'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/railties-6.1.4.7/lib/rails/application.rb:533:in `block in run_tasks_blocks'
/opt/bitnami/redmine/vendor/bundle/ruby/3.0.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/bitnami/redmine/bin/bundle:113:in `load'
/opt/bitnami/redmine/bin/bundle:113:in `<main>'
Tasks: TOP => redmine:plugins:migrate => environment
(See full trace by running task with --trace)
Hello! I'm going to do this, I'll send a pull request
Plugin currently uses User#allowed_to?
to find and filter possible authors. This is slow because Redmine internally fetches all roles and memberships for each user to know if necessary permission is granted.
Hello,
we are doing telephone tickets, so it would be a help if the author would be editable when creating tickets.
thank you.
Environment:
Redmine version 3.2.1.stable
Ruby version 2.3.1-p112 (2016-04-26) [x86_64-linux-gnu]
Rails version 4.2.7.1
Environment production
Database adapter Mysql2
SCM:
Git 2.7.4
Filesystem
Redmine plugins:
advanced_roadmap 0.10.1
issue_charts 1.3.0
localizable 0.4.0
quick_view 0.3.0
redmine_agile 1.4.1
redmine_didyoumean 1.2.0
redmine_editauthor 0.9.0
redmine_issue_badge 0.0.3
redmine_issues_tree 0.0.9
redmine_ldap_sync 2.0.8.devel
redmine_lightbox2 0.2.7
redmine_my_page 0.1.10
redmine_people 1.2.0
redmine_tags 3.1.1
redmine_theme_changer 0.2.0
Hi,
As manager on my redmine database, I checked the "Edit issue autor" in the role configuration. Thus all permissions are given for the manager role.
The result is a new combo box "Auteur" on the editing issue page.
Unfortunately the combo is empty.
The issue was seen on :
French interface
Redmine 2.3.1.stable
Ruby 2.0.0 (i686-linux}
Rails 3.2.13
Environment production
Database adapter Mysql2
redmine_editauthor 0.9.1
Moreover, because of my company information system, public plugin directory is in read only mode
Hi,
Is it possible to make a setting so that when the author changes, the list contains only users of the same group as the changed author? Or make this condition computed.
i was silly. commented the wrong github project :-) please delete or close the issue
Hi there! Happy to try my hand at resolving this, not a Redmine expert so guidance welcome 😁
I'm seeing this error after an issue was created by an email address not associated with a user.
The issue belongs to uid=2, an Anonymous user a/c (guessing this is a Redmine default?)
I see that in lib/redmine_editauthor/hook.rb
the plugin attempts to catch errors where the author doesn't exist, but the unshift still throws an error (presumably Anonymous user is a special case here?)
Redmine details:
Environment:
Redmine version 3.4.6.devel
Ruby version 2.3.3-p222 (2016-11-21) [x86_64-linux]
Rails version 5.2.1
Environment production
Database adapter Mysql2
SCM:
Git 2.1.4
Filesystem
Redmine plugins:
redmine_editauthor 0.11.0
redmine_gist 0.1.1
redmine_image_clipboard_paste 3.3.0
redmine_messenger 1.0.3
Backtrace:
==> /home/redmine/redmine/redmine/log/production.log <==
Started GET "/issues/123" for 1.2.3.4 at 2018-12-18 07:01:44 +1300
Processing by IssuesController#show as HTML
Parameters: {"id"=>"123"}
Current user: example.user (id=1)
Rendering issues/show.html.erb within layouts/base
Rendered issues/_action_menu.html.erb (4.7ms)
Rendered issue_relations/_form.html.erb (1.7ms)
Rendered issues/_relations.html.erb (2.5ms)
Rendered issues/_action_menu.html.erb (4.6ms)
Rendered issues/_form_custom_fields.html.erb (0.4ms)
Rendered issues/_attributes.html.erb (16.2ms)
Rendered issues/_form.html.erb (49.2ms)
Rendered issues/_edit.html.erb (50.1ms)
Rendered issues/_action_menu_edit.html.erb (55.5ms)
Rendered issues/show.html.erb within layouts/base (91.7ms)
Completed 500 Internal Server Error in 144ms (ActiveRecord: 13.5ms)
ActionView::Template::Error (undefined method `unshift' for #<User::ActiveRecord_Relation:0x000000041f6568>):
44: <%= render :partial => 'issues/attributes' %>
45: </div>
46:
47: <%= call_hook(:view_issues_form_details_bottom, { :issue => @issue, :form => f }) %>
48: <% end %>
49:
50: <% heads_for_wiki_formatter %>
plugins/redmine_editauthor/lib/redmine_editauthor/hook.rb:22:in `block in view_issues_form_details_bottom'
plugins/redmine_editauthor/lib/redmine_editauthor/hook.rb:19:in `view_issues_form_details_bottom'
lib/redmine/hook.rb:61:in `block (2 levels) in call_hook'
lib/redmine/hook.rb:61:in `each'
lib/redmine/hook.rb:61:in `block in call_hook'
lib/redmine/hook.rb:58:in `tap'
lib/redmine/hook.rb:58:in `call_hook'
lib/redmine/hook.rb:96:in `call_hook'
app/views/issues/_form.html.erb:47:in `block in _app_views_issues__form_html_erb__2960696311288320352_47074680'
app/helpers/application_helper.rb:1237:in `labelled_fields_for'
app/views/issues/_form.html.erb:1:in `_app_views_issues__form_html_erb__2960696311288320352_47074680'
app/views/issues/_edit.html.erb:8:in `block in _app_views_issues__edit_html_erb___3052376908758556173_61309540'
app/helpers/application_helper.rb:1230:in `labelled_form_for'
app/views/issues/_edit.html.erb:1:in `_app_views_issues__edit_html_erb___3052376908758556173_61309540'
app/views/issues/_action_menu_edit.html.erb:8:in `_app_views_issues__action_menu_edit_html_erb__3179006967060884851_61477360'
app/views/issues/show.html.erb:137:in `_app_views_issues_show_html_erb__2137193729562061852_60877680'
app/controllers/issues_controller.rb:106:in `block (2 levels) in show'
app/controllers/issues_controller.rb:99:in `show'
lib/redmine/sudo_mode.rb:63:in `sudo_mode'
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.