{"users":[{"id":3,"username":"nedbat","name":"Ned Batchelder","avatar_template":"/user_avatar/discuss.openedx.org/nedbat/{size}/3317_2.png","primary_group_name":"edX.2U","trust_level":4},{"id":30,"username":"ariestiyansyah","name":"Rizky Ariestiyansyah","avatar_template":"/user_avatar/discuss.openedx.org/ariestiyansyah/{size}/34_2.png","trust_level":2},{"id":1409,"username":"Anh_Vu_Nguy_n","name":"Vu Nguyen","avatar_template":"/user_avatar/discuss.openedx.org/anh_vu_nguy_n/{size}/1740_2.png","trust_level":2},{"id":2922,"username":"brian.smith","name":"Brian Smith","avatar_template":"/user_avatar/discuss.openedx.org/brian.smith/{size}/4259_2.png","primary_group_name":"Axim","flair_name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000","flair_group_id":44,"trust_level":4},{"id":1386,"username":"sarina","name":"Sarina Canelake","avatar_template":"/user_avatar/discuss.openedx.org/sarina/{size}/2308_2.png","primary_group_name":"Axim","flair_name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000","flair_group_id":44,"admin":true,"moderator":true,"trust_level":3},{"id":4704,"username":"mboisson","name":"Maxime Boissonneault","avatar_template":"/user_avatar/discuss.openedx.org/mboisson/{size}/7551_2.png","trust_level":2},{"id":166,"username":"arbrandes","name":"Adolfo R. Brandes","avatar_template":"/user_avatar/discuss.openedx.org/arbrandes/{size}/158_2.png","primary_group_name":"Axim","flair_name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000","flair_group_id":44,"moderator":true,"trust_level":4},{"id":6351,"username":"Catalina_Millaray_Il","name":"Catalina Millaray Ilabaca","avatar_template":"/user_avatar/discuss.openedx.org/catalina_millaray_il/{size}/9702_2.png","trust_level":0},{"id":875,"username":"mrtmm","name":"Maari Tamm","avatar_template":"/user_avatar/discuss.openedx.org/mrtmm/{size}/2542_2.png","trust_level":2},{"id":2023,"username":"mafermazu","name":"María Fernanda Magallanes","avatar_template":"/user_avatar/discuss.openedx.org/mafermazu/{size}/2641_2.png","primary_group_name":"eduNEXT","flair_name":"eduNEXT","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/b/b2029fab48c99e6c1569f75231dca569bed92c08.png","flair_bg_color":"f8f8f8","flair_group_id":43,"trust_level":2},{"id":52,"username":"omar","name":"Omar Al-Ithawi - Founder @ ZeitLabs.com","avatar_template":"/user_avatar/discuss.openedx.org/omar/{size}/7275_2.png","trust_level":2},{"id":729,"username":"Tim_McCormack","name":"Tim McCormack","avatar_template":"/user_avatar/discuss.openedx.org/tim_mccormack/{size}/779_2.png","primary_group_name":"edX.2U","flair_name":"edX.2U","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/8/80ddb0576a1ead3175069c78e9478bf2a4c674ae.png","flair_bg_color":"f8f8f8","flair_group_id":41,"trust_level":3},{"id":21,"username":"chintan","name":"Chintan Joshi","avatar_template":"/user_avatar/discuss.openedx.org/chintan/{size}/52_2.png","trust_level":2},{"id":54,"username":"blarghmatey","name":"Tobias Macey","avatar_template":"/user_avatar/discuss.openedx.org/blarghmatey/{size}/1632_2.png","trust_level":1},{"id":29,"username":"dave","name":"Dave Ormsbee","avatar_template":"/user_avatar/discuss.openedx.org/dave/{size}/263_2.png","primary_group_name":"Axim","flair_name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000","flair_group_id":44,"admin":true,"moderator":true,"trust_level":3},{"id":1584,"username":"MoisesGonzalezS","name":"Moisés González","avatar_template":"/user_avatar/discuss.openedx.org/moisesgonzalezs/{size}/1996_2.png","primary_group_name":"eduNEXT","flair_name":"eduNEXT","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/b/b2029fab48c99e6c1569f75231dca569bed92c08.png","flair_bg_color":"f8f8f8","flair_group_id":43,"trust_level":2},{"id":6350,"username":"Varun","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/v/e9bcb4/{size}.png","primary_group_name":"edX.2U","flair_name":"edX.2U","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/8/80ddb0576a1ead3175069c78e9478bf2a4c674ae.png","flair_bg_color":"f8f8f8","flair_group_id":41,"trust_level":3},{"id":2332,"username":"arunmozhi","name":"Arunmozhi","avatar_template":"/user_avatar/discuss.openedx.org/arunmozhi/{size}/3600_2.png","primary_group_name":"opencraft","flair_name":"opencraft","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/0/08e11bc8fce73e7583120da81679982a02940c61.png","flair_bg_color":"f8f8f8","flair_group_id":42,"trust_level":2},{"id":186,"username":"samuelallan","name":"Samuel (OpenCraft) - https://opencraft.com/help","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/s/c0e974/{size}.png","primary_group_name":"opencraft","flair_name":"opencraft","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/0/08e11bc8fce73e7583120da81679982a02940c61.png","flair_bg_color":"f8f8f8","flair_group_id":42,"trust_level":2},{"id":43,"username":"braden","name":"Braden MacDonald (OpenCraft) - opencraft.com/help","avatar_template":"/user_avatar/discuss.openedx.org/braden/{size}/46_2.png","primary_group_name":"opencraft","flair_name":"opencraft","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/0/08e11bc8fce73e7583120da81679982a02940c61.png","flair_bg_color":"f8f8f8","flair_group_id":42,"trust_level":2},{"id":6152,"username":"DaniilSitnikov","name":"Daniil - Abstract Technology - abstract-technology.de","avatar_template":"/user_avatar/discuss.openedx.org/daniilsitnikov/{size}/9399_2.png","trust_level":1},{"id":3483,"username":"suresh_kbizsoft","name":"suresh kbizsoft","avatar_template":"/user_avatar/discuss.openedx.org/suresh_kbizsoft/{size}/5287_2.png","trust_level":1},{"id":4024,"username":"choltha","name":"CT","avatar_template":"/user_avatar/discuss.openedx.org/choltha/{size}/7661_2.png","trust_level":2},{"id":3953,"username":"Abdul_Muqadim","name":"Abdul Muqadim","avatar_template":"/user_avatar/discuss.openedx.org/abdul_muqadim/{size}/9226_2.png","primary_group_name":"Edly","flair_name":"Edly","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/8/846df8a351e98b10b3adfc59739f36c07bb66262.png","flair_bg_color":"fff","flair_group_id":48,"trust_level":3},{"id":36,"username":"feanil","name":"Feanil Patel","avatar_template":"/user_avatar/discuss.openedx.org/feanil/{size}/37_2.png","primary_group_name":"Axim","flair_name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000","flair_group_id":44,"admin":true,"trust_level":3},{"id":5962,"username":"brunodev","name":null,"avatar_template":"https://avatars.discourse-cdn.com/v4/letter/b/6bbea6/{size}.png","trust_level":1},{"id":2259,"username":"johanv26","name":"Johan Castiblanco","avatar_template":"/user_avatar/discuss.openedx.org/johanv26/{size}/3219_2.png","primary_group_name":"eduNEXT","flair_name":"eduNEXT","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/b/b2029fab48c99e6c1569f75231dca569bed92c08.png","flair_bg_color":"f8f8f8","flair_group_id":43,"trust_level":2},{"id":50,"username":"Felipe","name":"Felipe Montoya","avatar_template":"/user_avatar/discuss.openedx.org/felipe/{size}/60_2.png","primary_group_name":"eduNEXT","flair_name":"eduNEXT","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/b/b2029fab48c99e6c1569f75231dca569bed92c08.png","flair_bg_color":"f8f8f8","flair_group_id":43,"trust_level":2},{"id":1401,"username":"suigh","name":"Rodrigo Suigh","avatar_template":"/user_avatar/discuss.openedx.org/suigh/{size}/1728_2.png","trust_level":1},{"id":3362,"username":"Om_Kumar","name":"Om Kumar(ManpraX)","avatar_template":"/user_avatar/discuss.openedx.org/om_kumar/{size}/6783_2.png","trust_level":2},{"id":204,"username":"e0d","name":"Edward Zarecor","avatar_template":"/user_avatar/discuss.openedx.org/e0d/{size}/199_2.png","primary_group_name":"Axim","admin":true,"trust_level":3},{"id":5601,"username":"gary","name":"Gary","avatar_template":"/user_avatar/discuss.openedx.org/gary/{size}/9654_2.png","trust_level":0},{"id":5202,"username":"cabralpedrofccn","name":"Cabralpedrofccn","avatar_template":"/user_avatar/discuss.openedx.org/cabralpedrofccn/{size}/8178_2.png","trust_level":1},{"id":1871,"username":"Cassie","name":"Cassie Zamparini","avatar_template":"/user_avatar/discuss.openedx.org/cassie/{size}/6843_2.png","primary_group_name":"opencraft","flair_name":"opencraft","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/0/08e11bc8fce73e7583120da81679982a02940c61.png","flair_bg_color":"f8f8f8","flair_group_id":42,"trust_level":3},{"id":3863,"username":"Chelsea_Rathbun","name":"Chelsea Rathbun","avatar_template":"/user_avatar/discuss.openedx.org/chelsea_rathbun/{size}/5385_2.png","primary_group_name":"Axim","flair_name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000","flair_group_id":44,"trust_level":3},{"id":4198,"username":"tech_mil","name":"tech_mil","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/t/0ea827/{size}.png","trust_level":1},{"id":2447,"username":"JuanBuitrago","name":"Juan David Buitrago","avatar_template":"/user_avatar/discuss.openedx.org/juanbuitrago/{size}/3233_2.png","primary_group_name":"eduNEXT","flair_name":"eduNEXT","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/b/b2029fab48c99e6c1569f75231dca569bed92c08.png","flair_bg_color":"f8f8f8","flair_group_id":43,"trust_level":1},{"id":153,"username":"xitij2000","name":"Kshitij Sobti (OpenCraft) — https://opencraft.com/help","avatar_template":"/user_avatar/discuss.openedx.org/xitij2000/{size}/141_2.png","primary_group_name":"opencraft","flair_name":"opencraft","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/0/08e11bc8fce73e7583120da81679982a02940c61.png","flair_bg_color":"f8f8f8","flair_group_id":42,"trust_level":2},{"id":6092,"username":"tsankey","name":"Troy Sankey","avatar_template":"/user_avatar/discuss.openedx.org/tsankey/{size}/9289_2.png","primary_group_name":"edX.2U","flair_name":"edX.2U","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/8/80ddb0576a1ead3175069c78e9478bf2a4c674ae.png","flair_bg_color":"f8f8f8","flair_group_id":41,"trust_level":3},{"id":5028,"username":"kmiller1","name":"Kira","avatar_template":"/user_avatar/discuss.openedx.org/kmiller1/{size}/9594_2.png","primary_group_name":"edX.2U","flair_name":"edX.2U","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/8/80ddb0576a1ead3175069c78e9478bf2a4c674ae.png","flair_bg_color":"f8f8f8","flair_group_id":41,"trust_level":3},{"id":179,"username":"kmccormick","name":"Kyle McCormick","avatar_template":"/user_avatar/discuss.openedx.org/kmccormick/{size}/8982_2.png","primary_group_name":"Axim","flair_name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000","flair_group_id":44,"trust_level":4},{"id":6234,"username":"Pierre-Sassoulas","name":"Pierre Sassoulas","avatar_template":"/user_avatar/discuss.openedx.org/pierre-sassoulas/{size}/9535_2.png","trust_level":0},{"id":416,"username":"robrap","name":"Robert Raposa","avatar_template":"/user_avatar/discuss.openedx.org/robrap/{size}/721_2.png","primary_group_name":"edX.2U","flair_name":"edX.2U","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/8/80ddb0576a1ead3175069c78e9478bf2a4c674ae.png","flair_bg_color":"f8f8f8","flair_group_id":41,"trust_level":3},{"id":6191,"username":"Syed_Ali_Abbas","name":"Syed Ali Abbas","avatar_template":"/user_avatar/discuss.openedx.org/syed_ali_abbas/{size}/8753_2.png","trust_level":1},{"id":4986,"username":"TyHob","name":"Ty Hob","avatar_template":"/user_avatar/discuss.openedx.org/tyhob/{size}/7930_2.png","primary_group_name":"Axim","flair_name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000","flair_group_id":44,"trust_level":4},{"id":33,"username":"pdpinch","name":"Peter Pinch","avatar_template":"/user_avatar/discuss.openedx.org/pdpinch/{size}/36_2.png","trust_level":2},{"id":5352,"username":"Darshan_Kotak","name":"Darshan Kotak","avatar_template":"/user_avatar/discuss.openedx.org/darshan_kotak/{size}/8345_2.png","trust_level":1},{"id":3297,"username":"dariadaria","name":"Daria Kharlan","avatar_template":"/user_avatar/discuss.openedx.org/dariadaria/{size}/5084_2.png","trust_level":2},{"id":5389,"username":"Ivan_Stepanok","name":"Ivan Stepanok","avatar_template":"/user_avatar/discuss.openedx.org/ivan_stepanok/{size}/8389_2.png","trust_level":2},{"id":5050,"username":"edSchema","name":"Eddie Byun","avatar_template":"/user_avatar/discuss.openedx.org/edschema/{size}/8441_2.png","trust_level":2},{"id":2684,"username":"zameel7","name":"Zameel Hassan | Blend-ed","avatar_template":"/user_avatar/discuss.openedx.org/zameel7/{size}/7981_2.png","trust_level":2},{"id":6228,"username":"agp02","name":"","avatar_template":"https://avatars.discourse-cdn.com/v4/letter/a/0ea827/{size}.png","trust_level":1}],"primary_groups":[{"id":41,"name":"edX.2U"},{"id":44,"name":"Axim"},{"id":43,"name":"eduNEXT"},{"id":42,"name":"opencraft"},{"id":48,"name":"Edly"}],"flair_groups":[{"id":44,"name":"Axim","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/a/abe05c3b1cd34aacfe70cb4c4efd280f91162785.png","flair_bg_color":"f8f8f8","flair_color":"000000"},{"id":43,"name":"eduNEXT","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/b/b2029fab48c99e6c1569f75231dca569bed92c08.png","flair_bg_color":"f8f8f8","flair_color":""},{"id":41,"name":"edX.2U","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/8/80ddb0576a1ead3175069c78e9478bf2a4c674ae.png","flair_bg_color":"f8f8f8","flair_color":""},{"id":42,"name":"opencraft","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/0/08e11bc8fce73e7583120da81679982a02940c61.png","flair_bg_color":"f8f8f8","flair_color":""},{"id":48,"name":"Edly","flair_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/8/846df8a351e98b10b3adfc59739f36c07bb66262.png","flair_bg_color":"fff","flair_color":""}],"topic_list":{"can_create_topic":false,"more_topics_url":"/c/development/11?page=1","per_page":30,"top_tags":[{"id":19,"name":"how-to","slug":"how-to"},{"id":34,"name":"tutor","slug":"tutor"},{"id":1,"name":"api","slug":"api"},{"id":33,"name":"devstack","slug":"devstack"},{"id":35,"name":"mfe","slug":"mfe"},{"id":25,"name":"juniper","slug":"juniper"},{"id":63,"name":"nutmeg","slug":"nutmeg"},{"id":120,"name":"sumac","slug":"sumac"},{"id":60,"name":"tutor-mfe","slug":"tutor-mfe"},{"id":22,"name":"ecommerce","slug":"ecommerce"},{"id":36,"name":"koa","slug":"koa"},{"id":89,"name":"palm","slug":"palm"},{"id":70,"name":"tutor-plugin","slug":"tutor-plugin"},{"id":103,"name":"quince","slug":"quince"},{"id":111,"name":"redwood","slug":"redwood"},{"id":93,"name":"edx-platform","slug":"edx-platform"},{"id":131,"name":"teak","slug":"teak"},{"id":64,"name":"olive","slug":"olive"},{"id":38,"name":"docs","slug":"docs"},{"id":48,"name":"studio","slug":"studio"},{"id":58,"name":"translation","slug":"translation"},{"id":113,"name":"xblock","slug":"xblock"},{"id":39,"name":"lilac","slug":"lilac"},{"id":16,"name":"analytics","slug":"analytics"},{"id":20,"name":"i18n","slug":"i18n"},{"id":27,"name":"theming","slug":"theming"},{"id":102,"name":"tutor-indigo","slug":"tutor-indigo"},{"id":49,"name":"maple","slug":"maple"},{"id":77,"name":"backend-dev","slug":"backend-dev"},{"id":95,"name":"customization","slug":"customization"},{"id":23,"name":"discussion","slug":"discussion"}],"topics":[{"fancy_title":"About the Development category","id":71,"title":"About the Development category","slug":"about-the-development-category","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2019-07-22T15:10:12.334Z","last_posted_at":"2019-07-23T17:27:12.449Z","bumped":true,"bumped_at":"2019-07-23T17:27:12.449Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"Software development in the Open edX world, either as core developers or app and plugin developers. \nSub-categories include extending (all about building on top of the Open edX platform), architecture (how should the Ope&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":1755,"like_count":3,"has_summary":false,"last_poster_username":"ariestiyansyah","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":3,"primary_group_id":41,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":30,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"All MFE pages hardcode the page language (&lt;html lang=&ldquo;en-us&rdquo;)","id":17989,"title":"All MFE pages hardcode the page language (<html lang=\"en-us\")","slug":"all-mfe-pages-hardcode-the-page-language-html-lang-en-us","posts_count":5,"reply_count":1,"highest_post_number":5,"image_url":null,"created_at":"2025-12-22T11:58:01.130Z","last_posted_at":"2026-08-07T13:50:11.628Z","bumped":true,"bumped_at":"2026-08-07T13:50:11.628Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"and this affects tasks that depend on the browser language, such as automatic translation. How can this be fixed? \nProblem: \nWhen you change the website language (e.g., through the account page), the lang attribute in th&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":106,"like_count":4,"has_summary":false,"last_poster_username":"arbrandes","category_id":28,"op_like_count":2,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1409,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":2922,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Frequent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":4704,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":166,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"When a professor remove last block completed by a student leaves you to a 404","id":19204,"title":"When a professor remove last block completed by a student leaves you to a 404","slug":"when-a-professor-remove-last-block-completed-by-a-student-leaves-you-to-a-404","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/optimized/2X/c/c8f03221bbed2848055ab0506aa4f648c8bb5595_2_1024x512.png","created_at":"2026-08-06T13:57:17.688Z","last_posted_at":"2026-08-06T14:33:59.987Z","bumped":true,"bumped_at":"2026-08-06T14:33:59.987Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi! i would like to report that when an professor remove a block in a running course and some student have already completed the same block. Then student try to use “Continue with course” button, leaves you to a 404 erro&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":12,"like_count":0,"has_summary":false,"last_poster_username":"sarina","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":6351,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"What is the correct way to set up translations for a third-party XBlock","id":19140,"title":"What is the correct way to set up translations for a third-party XBlock","slug":"what-is-the-correct-way-to-set-up-translations-for-a-third-party-xblock","posts_count":9,"reply_count":3,"highest_post_number":9,"image_url":null,"created_at":"2026-07-02T15:06:10.742Z","last_posted_at":"2026-07-31T08:06:29.804Z","bumped":true,"bumped_at":"2026-07-31T08:06:29.804Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi everyone! \nI’m trying to understand the current, correct approach for adding translations to a third-party XBlock (one not included in the openedx-translations repo). \nInitially, we added translations to our XBlock fo&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":93,"like_count":2,"has_summary":false,"last_poster_username":"mrtmm","category_id":28,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":875,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster, Accepted Answer","user_id":2023,"primary_group_id":43,"flair_group_id":43},{"extras":null,"description":"Frequent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":52,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":2922,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"Design tradeoffs for Codejail upgrade darklaunch","id":19178,"title":"Design tradeoffs for Codejail upgrade darklaunch","slug":"design-tradeoffs-for-codejail-upgrade-darklaunch","posts_count":11,"reply_count":4,"highest_post_number":11,"image_url":null,"created_at":"2026-07-28T00:22:53.650Z","last_posted_at":"2026-07-30T16:34:23.431Z","bumped":true,"bumped_at":"2026-07-30T16:34:23.431Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"At 2U, I’m preparing for us to upgrade our Codejail sandbox environment from Python 3.8 to something more recent (let’s say 3.14). We want to test existing XBlocks against the new environment, so my overall plan is to re&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":89,"like_count":6,"has_summary":false,"last_poster_username":"Tim_McCormack","category_id":12,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":729,"primary_group_id":41,"flair_group_id":41},{"extras":null,"description":"Frequent Poster","user_id":21,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":54,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":29,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":1584,"primary_group_id":43,"flair_group_id":43}]},{"fancy_title":"RFC: Platform-level UTM attribution support for authenticated MFE users","id":19182,"title":"RFC: Platform-level UTM attribution support for authenticated MFE users","slug":"rfc-platform-level-utm-attribution-support-for-authenticated-mfe-users","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2026-07-30T13:57:58.847Z","last_posted_at":"2026-07-30T13:57:58.962Z","bumped":true,"bumped_at":"2026-07-30T13:57:58.962Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hello community, \nI’d like to start a discussion around a gap I’ve encountered with UTM attribution for authenticated users in MFEs. \nBackground \nOpen edX currently captures UTM parameters for many unauthenticated user f&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":25,"like_count":1,"has_summary":false,"last_poster_username":"Varun","category_id":11,"op_like_count":1,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":6350,"primary_group_id":41,"flair_group_id":41}]},{"fancy_title":"Should we build a Paragon native text editor?","id":19168,"title":"Should we build a Paragon native text editor?","slug":"should-we-build-a-paragon-native-text-editor","posts_count":6,"reply_count":2,"highest_post_number":6,"image_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/optimized/2X/4/4bec43a4d729d93334d2311310ad7c4fc9fff4d3_2_1024x512.png","created_at":"2026-07-22T10:54:27.008Z","last_posted_at":"2026-07-22T23:45:28.042Z","bumped":true,"bumped_at":"2026-07-22T23:45:28.042Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi! \nWhen working on the exemplar-blocks [1], I noticed that the bundle size of an XBlock’s UI jumped 4x after adding TinyMCE for an input field. \nBefore\nvite v8.0.2 building client environment for production...\n✓ 3292 m&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":123,"name":"frontend","slug":"frontend"}],"tags_descriptions":{},"views":49,"like_count":5,"has_summary":false,"last_poster_username":"braden","category_id":11,"op_like_count":1,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":2332,"primary_group_id":42,"flair_group_id":42},{"extras":null,"description":"Frequent Poster","user_id":2922,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Frequent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":186,"primary_group_id":42,"flair_group_id":42},{"extras":"latest","description":"Most Recent Poster","user_id":43,"primary_group_id":42,"flair_group_id":42}]},{"fancy_title":"How to override the account activation email template?","id":19159,"title":"How to override the account activation email template?","slug":"how-to-override-the-account-activation-email-template","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-07-13T15:18:31.304Z","last_posted_at":"2026-07-20T14:52:44.157Z","bumped":true,"bumped_at":"2026-07-20T14:52:44.157Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi, I’m trying to override the account activation email template in a Tutor-based Open edX setup. \nI added my custom template here: impower-indigo/tutorindigo/templates/indigo/lms/templates/student/edx_ace/accountactivat&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":25,"like_count":0,"has_summary":false,"last_poster_username":"sarina","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":6152,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"How to change activation email template? - Tutor","id":10100,"title":"How to change activation email template? - Tutor","slug":"how-to-change-activation-email-template-tutor","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2023-05-15T09:32:49.028Z","last_posted_at":"2026-07-14T08:42:01.035Z","bumped":true,"bumped_at":"2026-07-14T08:42:01.035Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I added the base_body_html in  theme_name/lms/templates/ae_common/edx_ace/common in the directory but the activation email template did not change. This is working only on a modified forgot password email template. Pleas&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":19,"name":"how-to","slug":"how-to"},{"id":34,"name":"tutor","slug":"tutor"}],"tags_descriptions":{},"views":214,"like_count":0,"has_summary":false,"last_poster_username":"DaniilSitnikov","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":3483,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":6152,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Load testing &amp; monitoring uWSGI workers after scaling (32GB RAM / 64 Cores)?","id":19137,"title":"Load testing & monitoring uWSGI workers after scaling (32GB RAM / 64 Cores)?","slug":"load-testing-monitoring-uwsgi-workers-after-scaling-32gb-ram-64-cores","posts_count":3,"reply_count":1,"highest_post_number":3,"image_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/optimized/2X/4/44a3361939853ab7de6dbdd232b31bce9442dffb_2_1024x423.png","created_at":"2026-07-02T02:40:53.862Z","last_posted_at":"2026-07-13T07:45:56.838Z","bumped":true,"bumped_at":"2026-07-13T07:45:56.838Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi all, \nI am running Tutor on a server with 64 CPU cores and 32GB RAM, and I’m increasing OPENEDX_LMS_UWSGI_WORKERS from 2 to 24. \n\n\nWhat is the best way to benchmark max concurrency and response times before/after? \n\n\nH&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":19,"name":"how-to","slug":"how-to"},{"id":34,"name":"tutor","slug":"tutor"},{"id":17,"name":"devops","slug":"devops"}],"tags_descriptions":{},"views":49,"like_count":0,"has_summary":false,"last_poster_username":"choltha","category_id":12,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":4024,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster, Accepted Answer","user_id":1584,"primary_group_id":43,"flair_group_id":43}]},{"fancy_title":"Shouldn&rsquo;t Superuser automatically inherit Staff access in Open edX?","id":18657,"title":"Shouldn't Superuser automatically inherit Staff access in Open edX?","slug":"shouldnt-superuser-automatically-inherit-staff-access-in-open-edx","posts_count":3,"reply_count":1,"highest_post_number":3,"image_url":null,"created_at":"2026-03-25T21:04:44.107Z","last_posted_at":"2026-07-06T14:59:11.676Z","bumped":true,"bumped_at":"2026-07-06T14:59:11.676Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi community :waving_hand: \nI’ve been working with Open edX permissions and noticed a surprising behavior: a user with Superuser status does not automatically get all Staff-level access in the LMS or Studio. This seems c&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":103,"like_count":3,"has_summary":false,"last_poster_username":"Abdul_Muqadim","category_id":12,"op_like_count":2,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster, Accepted Answer","user_id":3953,"primary_group_id":48,"flair_group_id":48},{"extras":null,"description":"Recent Poster","user_id":36,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"Discovery New Courses is not showing courses","id":18054,"title":"Discovery New Courses is not showing courses","slug":"discovery-new-courses-is-not-showing-courses","posts_count":4,"reply_count":2,"highest_post_number":4,"image_url":null,"created_at":"2025-12-30T12:20:45.001Z","last_posted_at":"2026-07-02T21:25:42.895Z","bumped":true,"bumped_at":"2026-07-02T21:25:42.895Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I have recently upgraded my tutor version 18.1.3 to tutor 20.0.3. Then I ran the command \npython manage.py cms reindex_studio --experimental \nCounting libraries… \nCounting courses… \nFound 78 courses, 0 libraries. \nChecki&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":94,"like_count":3,"has_summary":false,"last_poster_username":"johanv26","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":true,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":5962,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster, Accepted Answer","user_id":3953,"primary_group_id":48,"flair_group_id":48},{"extras":"latest","description":"Most Recent Poster","user_id":2259,"primary_group_id":43,"flair_group_id":43}]},{"fancy_title":"Plugin-provided XBlock runtime services","id":18682,"title":"Plugin-provided XBlock runtime services","slug":"plugin-provided-xblock-runtime-services","posts_count":10,"reply_count":6,"highest_post_number":10,"image_url":null,"created_at":"2026-03-27T21:57:56.503Z","last_posted_at":"2026-07-01T18:07:55.470Z","bumped":true,"bumped_at":"2026-07-01T18:07:55.470Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi all, \nWe’ve been working on openedx-ai-extensions, a standalone plugin that exposes LLM capabilities to the platform. As part of that work, we investigated whether a plugin can register a new XBlock runtime service — &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":142,"like_count":4,"has_summary":false,"last_poster_username":"Felipe","category_id":12,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":50,"primary_group_id":43,"flair_group_id":43},{"extras":null,"description":"Recent Poster","user_id":43,"primary_group_id":42,"flair_group_id":42},{"extras":null,"description":"Recent Poster","user_id":29,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"OpenEdx Maple too slow?","id":19111,"title":"OpenEdx Maple too slow?","slug":"openedx-maple-too-slow","posts_count":4,"reply_count":0,"highest_post_number":4,"image_url":null,"created_at":"2026-06-17T21:06:18.617Z","last_posted_at":"2026-06-29T05:33:58.988Z","bumped":true,"bumped_at":"2026-06-29T05:33:58.988Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hello, \nI’m having a performance issue with my OpenDX Maple. \nI’m using Tutor v13 and OpenDX Maple on an AWS T3.2xLarge instance, but the site is still very slow. \nI have about 8 courses registered, 200,000 registered us&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":77,"like_count":1,"has_summary":false,"last_poster_username":"gary","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":1401,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":3362,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":204,"primary_group_id":44,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":5601,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Feature Enhancement: Restore the left-sidebar navigation in the learner experience","id":19108,"title":"Feature Enhancement: Restore the left-sidebar navigation in the learner experience","slug":"feature-enhancement-restore-the-left-sidebar-navigation-in-the-learner-experience","posts_count":6,"reply_count":1,"highest_post_number":6,"image_url":null,"created_at":"2026-06-16T16:29:04.486Z","last_posted_at":"2026-06-17T09:25:59.750Z","bumped":true,"bumped_at":"2026-06-17T09:25:59.750Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi everyone, \nIn one of the recent conferences, I was quite pleased to see the proposal to bring back the left-sidebar navigation in Open edX (for context, see the feature proposal). \nWe activated it in our latest platfo&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":73,"like_count":11,"has_summary":false,"last_poster_username":"cabralpedrofccn","category_id":24,"op_like_count":3,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":5202,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":50,"primary_group_id":43,"flair_group_id":43},{"extras":null,"description":"Frequent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":1871,"primary_group_id":42,"flair_group_id":42},{"extras":null,"description":"Recent Poster","user_id":3863,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"Recommended method for uploading files for xblocks","id":17642,"title":"Recommended method for uploading files for xblocks","slug":"recommended-method-for-uploading-files-for-xblocks","posts_count":5,"reply_count":1,"highest_post_number":5,"image_url":null,"created_at":"2025-11-17T00:08:59.738Z","last_posted_at":"2026-06-16T19:12:35.407Z","bumped":true,"bumped_at":"2026-06-16T19:12:35.407Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"For an XBlock that needs to manage files (eg. an audio transcript vtt, a pdf file, some photo images), is there a recommended method? \nI’ve seen a few methods: \n\nsaving to contentstore - eg. appsembler/xblock-video\nsavin&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":128,"like_count":4,"has_summary":false,"last_poster_username":"Felipe","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":186,"primary_group_id":42,"flair_group_id":42},{"extras":null,"description":"Recent Poster","user_id":43,"primary_group_id":42,"flair_group_id":42},{"extras":"latest","description":"Most Recent Poster","user_id":50,"primary_group_id":43,"flair_group_id":43}]},{"fancy_title":"Proposal: Combined Headless LMS+CMS","id":18880,"title":"Proposal: Combined Headless LMS+CMS","slug":"proposal-combined-headless-lms-cms","posts_count":4,"reply_count":1,"highest_post_number":4,"image_url":null,"created_at":"2026-04-30T18:05:47.610Z","last_posted_at":"2026-06-15T22:03:37.804Z","bumped":true,"bumped_at":"2026-06-15T22:03:37.804Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Currently, openedx-platform is split into two parts, CMS and LMS, which get deployed and managed separately. However, they share a codebase (openedx-platform), and there is a very fuzzy boundary between them in some plac&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":140,"like_count":7,"has_summary":false,"last_poster_username":"braden","category_id":12,"op_like_count":6,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":43,"primary_group_id":42,"flair_group_id":42},{"extras":null,"description":"Recent Poster","user_id":29,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"Course from Nutmeg release does not import correctly","id":19070,"title":"Course from Nutmeg release does not import correctly","slug":"course-from-nutmeg-release-does-not-import-correctly","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2026-05-21T15:02:39.989Z","last_posted_at":"2026-06-15T15:11:33.148Z","bumped":true,"bumped_at":"2026-06-15T15:11:33.148Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Summary\nImporting an older course from another platform that is on Nutmeg release causes the import to hang. This seems to happen due to the way policy.json is created. \nI compared the policy.json of two courses. One on &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":53,"like_count":0,"has_summary":false,"last_poster_username":"sarina","category_id":32,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":4198,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"Add catalog-scoped course metadata endpoint backed by enterprise-catalog","id":19066,"title":"Add catalog-scoped course metadata endpoint backed by enterprise-catalog","slug":"add-catalog-scoped-course-metadata-endpoint-backed-by-enterprise-catalog","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2026-05-19T11:30:15.754Z","last_posted_at":"2026-05-19T11:30:15.837Z","bumped":true,"bumped_at":"2026-05-19T11:30:15.837Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I would like to discuss whether `course-discovery` should expose a catalog-scoped course metadata endpoint backed by `enterprise-catalog`. \nThe proposed endpoint would allow API consumers to request Discovery course meta&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":1,"name":"api","slug":"api"}],"tags_descriptions":{},"views":30,"like_count":1,"has_summary":false,"last_poster_username":"JuanBuitrago","category_id":11,"op_like_count":1,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2447,"primary_group_id":43,"flair_group_id":43}]},{"fancy_title":"Frontend extensibility discussion: documenting best practices","id":19055,"title":"Frontend extensibility discussion: documenting best practices","slug":"frontend-extensibility-discussion-documenting-best-practices","posts_count":7,"reply_count":2,"highest_post_number":7,"image_url":null,"created_at":"2026-05-15T04:49:17.851Z","last_posted_at":"2026-05-19T07:53:54.524Z","bumped":true,"bumped_at":"2026-05-19T07:53:54.524Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Over the past few releases, we’ve added quite a lot of extension points to Open edX frontend applications, allowing operators to customize the platform without forking. \nThese have come in the form of new frontend-plugin&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":23,"name":"discussion","slug":"discussion"},{"id":123,"name":"frontend","slug":"frontend"},{"id":94,"name":"extensibility","slug":"extensibility"}],"tags_descriptions":{},"views":119,"like_count":7,"has_summary":false,"last_poster_username":"xitij2000","category_id":12,"op_like_count":4,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":2922,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":166,"primary_group_id":44,"flair_group_id":44},{"extras":"latest","description":"Most Recent Poster","user_id":153,"primary_group_id":42,"flair_group_id":42}]},{"fancy_title":"[RFC] Pluginifying edx-enterprise — looking for community interest &amp; collaborators","id":18316,"title":"[RFC] Pluginifying edx-enterprise — looking for community interest & collaborators","slug":"rfc-pluginifying-edx-enterprise-looking-for-community-interest-collaborators","posts_count":14,"reply_count":3,"highest_post_number":15,"image_url":null,"created_at":"2026-01-26T23:46:30.512Z","last_posted_at":"2026-04-30T20:40:49.396Z","bumped":true,"bumped_at":"2026-04-30T20:40:49.396Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"TL;DR\nI’m proposing to convert openedx/edx-enterprise into a plugin using the existing Open edX plugin framework, so that: \n\nedx-platform no longer directly imports or requires the enterprise module.\nEnterprise behavio&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":122,"name":"plugins","slug":"plugins"},{"id":141,"name":"enterprise","slug":"enterprise"}],"tags_descriptions":{},"views":269,"like_count":13,"has_summary":false,"last_poster_username":"tsankey","category_id":12,"op_like_count":8,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":6092,"primary_group_id":41,"flair_group_id":41},{"extras":null,"description":"Frequent Poster","user_id":29,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Frequent Poster","user_id":36,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":5028,"primary_group_id":41,"flair_group_id":41},{"extras":null,"description":"Recent Poster","user_id":204,"primary_group_id":44,"flair_group_id":null}]},{"fancy_title":"Ruff to replace pylint, pycodestyle in openedx-platform","id":18741,"title":"Ruff to replace pylint, pycodestyle in openedx-platform","slug":"ruff-to-replace-pylint-pycodestyle-in-openedx-platform","posts_count":5,"reply_count":1,"highest_post_number":5,"image_url":null,"created_at":"2026-04-07T16:27:04.000Z","last_posted_at":"2026-04-28T17:53:30.000Z","bumped":true,"bumped_at":"2026-04-28T17:53:30.000Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hey devs :waving_hand: This is a heads up that we are gradually rolling out ruff checks on the openedx-platform master branch. \nAlready, pycodestyle has been disabled. ruff check now does all the basic style checks. \nAls&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":90,"like_count":9,"has_summary":false,"last_poster_username":"kmccormick","category_id":11,"op_like_count":8,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":179,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":6234,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":416,"primary_group_id":41,"flair_group_id":41}]},{"fancy_title":"Replacing MinIO in tutor-minio: Why We Chose Garage (and What Comes Next)","id":18868,"title":"Replacing MinIO in tutor-minio: Why We Chose Garage (and What Comes Next)","slug":"replacing-minio-in-tutor-minio-why-we-chose-garage-and-what-comes-next","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2026-04-28T08:20:39.591Z","last_posted_at":"2026-04-28T16:50:21.283Z","bumped":true,"bumped_at":"2026-04-28T16:50:21.283Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Replacing MinIO in tutor-minio: Why We Chose Garage (and What Comes Next)Context\nMinIO has been the S3-compatible storage backend for the tutor-minio plugin since the plugin was created. The situation upstream has change&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":70,"name":"tutor-plugin","slug":"tutor-plugin"}],"tags_descriptions":{},"views":306,"like_count":7,"has_summary":false,"last_poster_username":"braden","category_id":11,"op_like_count":5,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":6191,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":4986,"primary_group_id":44,"flair_group_id":44},{"extras":"latest","description":"Most Recent Poster","user_id":43,"primary_group_id":42,"flair_group_id":42}]},{"fancy_title":"Generative AI and Open edX code","id":16086,"title":"Generative AI and Open edX code","slug":"generative-ai-and-open-edx-code","posts_count":4,"reply_count":0,"highest_post_number":4,"image_url":null,"created_at":"2025-05-27T18:32:49.554Z","last_posted_at":"2026-04-24T17:19:55.793Z","bumped":true,"bumped_at":"2026-04-24T17:19:55.793Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi all! \nI’m writing to share a new policy around the use of generative AI tools to help write code for contributing to Open edX. It outlines some very important contributor responsibilities when using these tools, so ev&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":135,"like_count":1,"has_summary":false,"last_poster_username":"dave","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":4986,"primary_group_id":44,"flair_group_id":44},{"extras":null,"description":"Recent Poster","user_id":33,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":29,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"SEARCH_SKIP_INVITATION_ONLY_FILTERING set to False causing &ldquo;Unknown value type: &lt;class &lsquo;bool&rsquo;&gt;&rdquo; error on course search","id":18839,"title":"SEARCH_SKIP_INVITATION_ONLY_FILTERING set to False causing \"Unknown value type: <class 'bool'>\" error on course search","slug":"search-skip-invitation-only-filtering-set-to-false-causing-unknown-value-type-class-bool-error-on-course-search","posts_count":5,"reply_count":2,"highest_post_number":5,"image_url":null,"created_at":"2026-04-21T08:40:27.255Z","last_posted_at":"2026-04-24T13:04:40.177Z","bumped":true,"bumped_at":"2026-04-24T13:04:40.177Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi everyone, \nI’m trying to hide invitation-only courses from the search results in Open edX. To achieve this, I set the SEARCH_SKIP_INVITATION_ONLY_FILTERING feature flag to False. \nHowever, after making this change, wh&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":73,"like_count":0,"has_summary":false,"last_poster_username":"sarina","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":5352,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"Failed to upload transcript","id":18843,"title":"Failed to upload transcript","slug":"failed-to-upload-transcript","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/optimized/2X/a/ae1f4b36ae0be0b205f81ed165e2d4011b727c74_2_1024x671.png","created_at":"2026-04-21T10:01:09.445Z","last_posted_at":"2026-04-24T04:24:20.038Z","bumped":true,"bumped_at":"2026-04-24T04:24:20.038Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"How to fix. upload transcript. \nthank you \n  \n  \ntutor_local-cms-worker-1   | [2026-04-21 09:49:56,766: INFO/MainProcess] Task openedx.core.djangoapps.content.search.tasks.upsert_xblock_index_doc[1998cdfa-3490-4f81-b4a7-&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":19,"name":"how-to","slug":"how-to"},{"id":143,"name":"ulmo","slug":"ulmo"}],"tags_descriptions":{},"views":29,"like_count":0,"has_summary":false,"last_poster_username":"choltha","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":4024,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"OpenEDX IOS app - rejected by App Store due to missing IAP","id":18740,"title":"OpenEDX IOS app - rejected by App Store due to missing IAP","slug":"openedx-ios-app-rejected-by-app-store-due-to-missing-iap","posts_count":10,"reply_count":4,"highest_post_number":10,"image_url":null,"created_at":"2026-04-07T12:52:09.554Z","last_posted_at":"2026-04-24T03:50:44.307Z","bumped":true,"bumped_at":"2026-04-24T03:50:44.307Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"I am trying to submit my OpenEDX IOS app to the Apple App store but they reject it saying I need to implement in-app purchases. I asked them to qualify it as a reader app, they also rejected since it contains more featur&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":111,"like_count":2,"has_summary":false,"last_poster_username":"omar","category_id":11,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":3297,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":5389,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":5050,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":2684,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":52,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Translator access to Transifex","id":18852,"title":"Translator access to Transifex","slug":"translator-access-to-transifex","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2026-04-22T15:20:08.651Z","last_posted_at":"2026-04-22T15:20:08.719Z","bumped":true,"bumped_at":"2026-04-22T15:20:08.719Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Hi all, \nWe’re running up against the number of collaborators our plan on Transifex allows. In order to mitigate this, I will be removing accounts who haven’t logged in since 1 April 2025 or before, to free up space for &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":31,"like_count":0,"has_summary":false,"last_poster_username":"sarina","category_id":28,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"Untranslated strings in Feedback xblock","id":18802,"title":"Untranslated strings in Feedback xblock","slug":"untranslated-strings-in-feedback-xblock","posts_count":4,"reply_count":0,"highest_post_number":4,"image_url":"https://us1.discourse-cdn.com/flex020/uploads/openedx/original/2X/1/1f35b7c9c03bdf3f6f20b6506934eadeecd2b455.png","created_at":"2026-04-14T17:58:09.518Z","last_posted_at":"2026-04-14T18:26:09.158Z","bumped":true,"bumped_at":"2026-04-14T18:26:09.158Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"There are a few strings that don’t get translated in the Feedback xblock: \n`Thank you for voting!` \n`Thank you for your feedback!` \nThis is even though those strings are properly translated in Transifex. Any idea why thi&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":36,"like_count":0,"has_summary":false,"last_poster_username":"mboisson","category_id":28,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":4704,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Recent Poster","user_id":179,"primary_group_id":44,"flair_group_id":44}]},{"fancy_title":"Grouping of subjects","id":18738,"title":"Grouping of subjects","slug":"grouping-of-subjects","posts_count":4,"reply_count":0,"highest_post_number":4,"image_url":null,"created_at":"2026-04-07T05:28:35.633Z","last_posted_at":"2026-04-08T13:48:24.894Z","bumped":true,"bumped_at":"2026-04-08T13:48:24.894Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"In my openedx as an admin, i want to create hierarchy like Masters&gt;Branch Name&gt;Semester 1 or 2 or 3 &gt;Course name . Same way Bachelors&gt;Branch Name&gt; Semester 1 or 2 or 3 and so on…&gt;Course name . Students should also be abl&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":19,"name":"how-to","slug":"how-to"}],"tags_descriptions":{},"views":40,"like_count":0,"has_summary":false,"last_poster_username":"sarina","category_id":28,"op_like_count":0,"pinned_globally":false,"featured_link":null,"is_hot":false,"has_accepted_answer":false,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":6228,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":1386,"primary_group_id":44,"flair_group_id":44}]}]}}