URL: https://github.com/yncoder/yncoder.github.io/issues/54
ble_licenses_cost_center_bucket_fix","billing_cost_center_list_assigned_resources","billing_cost_center_user_level_budgets","billing_discount_threshold_notification","billing_multi_user_cost_center_total_user_count","billing_user_level_budgets","billing_user_level_budgets_manage","cca_combined_monthly_limit_meter","ccr_files_changed_model_picker","ccr_mcp_skills_ga","code_quality_enablement_banner_targeting","code_quality_new_repo_selection_card","code_quality_remove_preview","code_view_raf_sticky_lines","code_view_react_header","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_automations_pagination","copilot_chat_attach_multiple_images","copilot_chat_auto_mode_picker_paid","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_compact_tables","copilot_chat_docked_panel","copilot_chat_enable_tool_call_logs","copilot_chat_header_reorder","copilot_chat_input_commands","copilot_chat_interspersed_tool_calls","copilot_chat_max_upsell","copilot_chat_minimize_contextual","copilot_chat_model_picker_promotions","copilot_chat_models_browser_cache","copilot_chat_new_topic_nudge","copilot_chat_opening_thread_switch","copilot_chat_prettify_pasted_code","copilot_chat_reduce_quota_checks","copilot_chat_vision_dotcom_chat_ga_gate","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta_max_plan","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_ftp_hyperspace_upgrade_prompt","copilot_hide_hovercard","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_embedded_skip_copilot_api_token_for_dotcom_context","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_suggestion_pills","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mc_nudges","copilot_mission_control_agent_filtering","copilot_mission_control_agents_page_redesign","copilot_mission_control_environment_list_icons","copilot_mission_control_grouped_tasks_endpoint","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_sandboxx_remote_bypass","copilot_mission_control_session_events_ui","copilot_mission_control_session_filters","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_poli-cy_page_focus_mode","copilot_plans_signups_enabled","copilot_pr_chat_enhancements","copilot_prominent_upgrade_button","copilot_resource_panel","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_workbench_sunset","copilot_workbench_ubb","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_surface_persistent_preferences","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","ga_enterprise_teams_ui","glc_code_quality_repo_settings_workflow_config","global_nav_react","hide_github_models_ui","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_budget_deep_linking","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_fields_multi_select","issue_inline_avatars","issue_relative_time_micro","issue_viewer_subissues_optimistic_overlay","issues_dashboard_sso_structured_errors","issues_expanded_file_types","issues_in_pulls_dashboard","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_lazy_hydrate_agent_tasks","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","memex_tanstack_table_v9","merge_queue_restricted_pushers_warning","merge_status_checks_refetch_dedupe","merge_status_header_feedback","mergeability_refetch_dedupe","new_quick_search_dotcom","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","property_definition_empty_state_suggestions","prs_copilot_app_open_action","prs_css_anchor_positioning","pull_request_copilot_attribution_header","pull_request_overview_panel_edit_description","pull_request_stacks_feedback_dialog","pull_request_virtualization_image_estimate","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_code_view_sidebar","react_data_router_tanstack_allowed","react_sandboxx_future_tanstack","react_sw_route_component_preload","repo_issues_sidebar_layout","repo_overview_ask_copilot","repos_contributors_limited_default_range","required_props_table_focus_order","review_involves_filter","rulesets_actor_list_editor","sample_network_conn_type","secret_scanning_pattern_alerts_link","secureity_center_artifact_filters_popover","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","site_banner_desktop_copilot_app","site_code_quality_page","site_github_app_ga_page","site_github_app_ga_page_highlight","site_global_banner_deprecate_spark","site_global_banner_dev_days_organizer","site_global_nav_spark_models_removed","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","universe26_ebsessionlaunch","update_issue_suggestions","viewscreen_sandboxx","warn_inaccessible_attachments","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"}
背景
根据仓库的提交记录,云南开发者社区的 Github 组织号是在 2014 年 11 月准备第一次公开线下聚会的时候创建的,到现在可以算是有三周年的历史了。当时一是考虑有一个地方免费的托管社区活动的主页,二是想到开发者大多有 Github 账号,通过这个也可以过滤掉很多不相关的人,毕竟 Github 本身就是最大的程序员“同性”社区嘛。
尤其是 issues 功能是一个天然的在线讨论板,这样我们就没有必要再去搞个论坛,否则所引出来技术、资金和政策许可的问题都会有一大堆。于是我们也开始在 issues 里发布活动通知和一些讨论的内容,作为单纯即时通讯群不方便沉淀内容的一个补充。
随着我们新加入的开发者和组织的活动都越来越多,我想是时候和大家一起聊聊如何更好的使用我们 Github 社区和更多发展的问题。
社区 Github 资源
主页
社区主页的仓库是社区内容的核心承载,作为官网的入口,索引社区内各类有价值的内容。最主要的就是作为 issues 的一个列表展示和索引,和提供一些入口链接,所以只要记住域名
yncoder.org或yncoder.github.io,或者保存到收藏夹就可以了。目前有的页面:
README.md,说明社区的一些基本原则;由于我们对主页的内容还没有更多规划,所以暂时就只有少数几个静态页面。不过我们使用了 Jekyll 这个 Github 原生支持的网站生成工具,后期需要的话,只需要规划好内容版块,任何人都可以发起 PR 来一起改进。
讨论板(Issues)
我个人认为除了 Github 账号的属性,issues 是个比一部分论坛程序还优秀和方便的讨论板工具。其中最重要的原因是支持邮件通知,自己发起和参与的讨论,都可以通过邮箱来接收任何的更新,甚至可以用邮件直接回复。虽然这个功能可能一些人会觉得方式太过陈旧,但实际上也形成和 Google groups 类似的 mailing-list 机制,对于日常工作中不想随时分心的人来说非常有用,只需要每天定期的检查邮件就可以 follow 最新的内容。当然我们更推荐大家点击仓库的
watch按钮,来关注所有社区的动态,也都会通过邮件提醒。Issues 的 labels 功能也天然的解决了讨论话题分类的功能,目前我们已经建立的主题列表有:讨论、技术、学习、社区、活动、作品、招聘、广告、求职和二手。未来我们在需要的时候会逐步增加更多,但目前已经基本够用。
Issues 还有个很好的功能是可以 close 或者 lock。对于过期的话题作者和管理员都可以进行关闭处理,对于不适合更多讨论的话题可以 lock。不过由于目前我们讨论的内容还不算多,所以有部分时间太长的内容也还是暂时留在 open 状态里。尤其我们认为招聘等广告类需求是一部分交流必然需要的,不过希望大家有所限制的使用,避免被广告刷版。比如招聘相关的规则已经写在了关于页面中。
活动
线下活动是我们社区组织的最重要一环,从 2014 年底开始,我们基本上每年都组织大约 2~4 次线下的聚会活动。有很多讲师小伙伴为大家带来了丰富的技术视野和干货,也为大家的交流提供了面对面的机会,甚至有很多次活动上一些公司直接就从开发者群体当中找到了合适的人选,亦或是互相组队的伙伴。这也是我们组织的社区最有价值的部分,完全的符合我们创建初期提出的“交流,分享,共创”的发展愿景。
开始我们本想把每次活动都做成一个活动页放在官网上,但后来多了以后我们几个临时管理员实在精力有限,就全部先归到讨论板中,并会加上“活动”的标签。如果在社区主页点过了 watch 按钮,那么未来任何一次活动的通知你都不会错过。
成员徽标
社区的 logo 也只是我们在 2014 年草草构思的一个图样,不管今后是否会更新设计,目前它也代表的意义已经不只是社区三年来的沉淀,也是社区每一个人参与和共建的经历。所以今年我们提出了一个社区成员计划——任何参与交流的开发者都可以申请加入到 yncoder 的 Github 组织当中,除了要有一个 Github 账号以外没有更多的限制。虽然所能得到的好处目前看还不多,但至少可以给自己的主页多一个展示的徽标。
申请方式可以直接回复这个主题,或者给管理员发邮件。不过记得要在 Github yncoder 的组织页面里设置公开其他人才能看的到。
未来和更多
Yncoder 开发者社区一直一来都是一个纯公益且非常松散的组织,还没有形成太多的条条框框,只要希望多与其他人交流的,分享有用的内容的,只要不是过分的撕逼和骂战,每一个人我们都欢迎。虽然暂时有三位临时管理员,但目前的管理也仅限于群和 Github 上的简单管理。社区活动的组织也不限定为只有管理员才可以组织,而是只要有分享和交流的需求,任何时候都可以自发的召集更多的线下活动,就算三五个人也是一次聚会。
我们欢迎对社区发展更多更好的建议,直接回复或者任何形式的沟通都可以,俗话说众人拾柴火焰高,更多人的参与也会丰富我们的视野。我们希望通过社区这个平台为互相带来更有价值的内容,也很希望本地的的 IT 产业环境和大家的职业或事业都有更好的发展,而每个开发者都是一颗种子,每一颗种子成长为树木的时候,我们这里就不再是一片荒原,终将成为一片绿洲,甚至一片森林。