Thanks, Braden. Those steps sound good to me, so I'll wait to review the proposed approach when it is available.
- Andy On Wed, Jul 20, 2016 at 3:15 PM, Braden MacDonald <[email protected]> wrote: > From my perspective, the next steps should be to write up an OEP for > course-scoped fields (this is something I hoped to do myself this week but > it got bumped due to other priorities - should be coming soon), and to > sketch out a prototype of the course_view approach for implementing XBlock > tabs, as discussed in this thread, and use that as a basis for continuing > the discussion. > > -- > Braden > @OpenCraft <http://opencraft.com/> > > On Tue, Jul 19, 2016 at 2:27 PM, Andy Armstrong <[email protected]> wrote: > >> Hey Eugeny, >> >> I'm back from vacation now, so I'd love to pick this up again. What is >> your current thinking? Would it be helpful for me to reply to this thread, >> or has the design moved on? >> >> Thanks, >> >> - Andy >> >> On Wed, Jun 29, 2016 at 4:53 AM, Колпаков Евгений < >> [email protected]> wrote: >> >>> Hi Andy, >>> >>> First of all, thank you for very thoughtful and detailed feedback! >>> >>> I think a good place to start would be to enumerate the different use >>>> cases that this solution could help with. >>> >>> >>> Makes sense, I'll try to list them on the https://openedx.atlassian.net/ >>> browse/TNL-2319 >>> >>> In general, having a custom tab that the author can add blocks to would >>>> be very flexible, and much more powerful than the current static tab. In >>>> fact, it might be better to replace the static tab with your new tab, >>>> because it is straightforward for the author to add an HTML block to it, >>>> and then they can easily extend it by adding videos or any other content >>>> they might have. In some ways, it is as if they are adding a unit directly >>>> as a tab, rather than within a section of the course. >>>> >>> >>> Exactly! >>> >>> An important point to consider is that adding a discussion block to this >>>> custom tab wouldn't work by default, as it would render an inline >>>> discussion. The block would have to know that it was being rendered >>>> 'outside the course', or it would need an advanced setting, or there would >>>> need to be a different class of discussion block. The last two options seem >>>> to me that they would be confusing for the author. >>> >>> >>> This problem is caused by the fact inline discussion and course >>> discussion have quite different UI, dictated by different use cases. >>> Solutions use two different discussion XBlocks (codenames DiscussionXBlock >>> and DiscussionCourseXBlock) for inline and course discussions, and so far >>> it worked for them - we can follow that approach, if all else fails. >>> However, it looks like introducing "course_tab_view" I mentioned earlier >>> would be able to solve the problem. In two words: XBlockTab will ask >>> XBlocks to render "course_tab_view", and by default that view will just >>> fallback to "student_view"; XBlocks that need to look different in a tab >>> will override it. >>> >>> IMO for a feature like discussions it would be ideal to register that it >>>> wants to automatically add a tab, rather than requiring the course author >>>> to explicitly add a new XBlock. >>> >>> >>> I'm not sure I fully understand this idea, so please correct me if I'm >>> wrong. Is this about automatically adding a XBlock discussion tab to a >>> course if discussion XBlock is installed into platform? I can see four >>> issues with this approach: >>> >>> 1. Implicit action - it might be confusing to course authors to see >>> new tab appearing out of the thin air. Also, to avoid having two >>> discussion >>> tabs we'll have to hide one - probably old discussion tab; in this case >>> it >>> might be not obvious what happened. >>> 2. If I do recall right, XBlock is not supposed to import anything >>> from platform, and base class for course tabs (CourseTab) lives in >>> edx-platform. >>> 3. No obvious update plan for existing courses - I wouldn't in life >>> figured out that refreshing tab list can be achieved by updating >>> "Advanced >>> Module List". And it looks like it is the only way to make Discussion >>> XBlock tab to appear in existing courses in this scenario, unless we go >>> into trouble of creating a migration script/management command. >>> 4. (Very minor) If generic XBlockTab is implemented (the one that >>> allows adding any XBlock/XModule to a tab), having dedicated tab for >>> discussion XBlock would be confusing. >>> >>> Generic XBlockTab + DiscussionXBlock have drawbacks too: >>> >>> 1. Authors must manually add it to a course - might not be a >>> drawback at all. It requires a bit more interaction than current version, >>> but (arguably) we could mimic current behavior by always adding >>> XBlockTab + >>> discussion XBlock when course is created. >>> 2. Upgrade for existing courses is slightly less trivial - there are >>> two options: either allow authors to opt-in for new mechanism and let >>> them >>> manually migrate courses, or automatically migrate everything with >>> management command (but this options have the drawback of being >>> non-obvious >>> to course authors) >>> 3. DiscussionXBlock needs to be updated to know it is in the tab - >>> this could be done using "course_tab_view" >>> >>> So, IMO, XBlockTab + DiscussionXBlock would be a more elegant solution; >>> it might require a bit more work from course authors (unless we take care >>> of them by autocreating tab+XBlock), but also will provide them some >>> flexibility (i.e. slap an HTML block with instructions on top of course >>> discussion). >>> >>> Again, this is all a very valuable ideas, thank you or sharing! >>> >>> Regards, >>> Eugeny >>> @Opencraft <http://opencraft.com> >>> >>> среда, 29 июня 2016 г., 0:14:36 UTC+3 пользователь Andy Armstrong >>> написал: >>>> >>>> Hi Eugeny, >>>> >>>> This is a much requested feature, so thanks for sending out the >>>> proposal. FYI, there's a pre-existing ticket that I created a while back in >>>> JIRA: >>>> >>>> https://openedx.atlassian.net/browse/TNL-2319 >>>> >>>> I think a good place to start would be to enumerate the different use >>>> cases that this solution could help with. In general, having a custom tab >>>> that the author can add blocks to would be very flexible, and much more >>>> powerful than the current static tab. In fact, it might be better to >>>> replace the static tab with your new tab, because it is straightforward for >>>> the author to add an HTML block to it, and then they can easily extend it >>>> by adding videos or any other content they might have. In some ways, it is >>>> as if they are adding a unit directly as a tab, rather than within a >>>> section of the course. >>>> >>>> An important point to consider is that adding a discussion block to >>>> this custom tab wouldn't work by default, as it would render an inline >>>> discussion. The block would have to know that it was being rendered >>>> 'outside the course', or it would need an advanced setting, or there would >>>> need to be a different class of discussion block. The last two options seem >>>> to me that they would be confusing for the author. >>>> >>>> IMO for a feature like discussions it would be ideal to register that >>>> it wants to automatically add a tab, rather than requiring the course >>>> author to explicitly add a new XBlock. This is how the XModule works today >>>> using the CourseTab extension point: >>>> >>>> https://openedx.atlassian.net/wiki/display/AC/Adding+a+new+course+tab >>>> >>>> As Cale mentioned, we've been thinking about allowing XBlocks to be >>>> able to provide course views for themselves (both course-level student >>>> views, and course-level instructor views). I've written more about this >>>> here: >>>> >>>> <http://goog_576435595> >>>> >>>> https://openedx.atlassian.net/wiki/display/AC/Feature+Plugins+for+edX+Platform >>>> >>>> I hope this is helpful. Let's keep the conversation going. >>>> >>>> - Andy >>>> >>>> On Tue, Jun 28, 2016 at 11:41 AM, <[email protected]> wrote: >>>> >>>>> Ok, concern noted, I'll keep it in mind. Also, if there are any >>>>> written outcomes of "caused us more pain than they've been worth" it would >>>>> be great if you could share them somehow. >>>>> >>>>> Actually, we might want to follow the approach StaticTab uses - it >>>>> stores url_slug in policies.json and actual content in >>>>> tabs/${url_slug}.xml >>>>> - is that something similar to what you have in mind? >>>>> >>>>> Regards, >>>>> Eugeny >>>>> @Opencraft <http://opencraft.com> >>>>> >>>>> On Tuesday, June 28, 2016 at 6:15:51 PM UTC+3, Calen Pennington wrote: >>>>>> >>>>>> For OLX, I can see the content being exported to the `tabs` >>>>>> directory, but I'm a bit concerned about where the links to those tabs >>>>>> will >>>>>> live. In general, having XBlocks that are detached from the course tree >>>>>> has >>>>>> caused us more pain than they've been worth, in the past, so I'd love to >>>>>> see an explicit reference to the tab usage key somewhere (maybe from the >>>>>> Course block?) >>>>>> >>>>>> -Cale >>>>>> >>>>>> On Tue, Jun 28, 2016 at 11:11 AM, <[email protected]> wrote: >>>>>> >>>>>>> Cale, >>>>>>> >>>>>>> >>>>>>> - Usage_key - the same as normal blocks have. I don't think >>>>>>> usage_key includes block's parent, so it won't be affected by adding >>>>>>> it to >>>>>>> a tab vs vertical. Is there any caveat I'm missing? >>>>>>> - OLX - if I do recall right XBlocks in Units are stored in >>>>>>> "vertical", one unit per file. For a tab it makes sense to reuse the >>>>>>> same >>>>>>> approach; the only question is where to put that tab XML file. At a >>>>>>> glance >>>>>>> it should be located in "tabs", as StaticTab stores it's contents >>>>>>> there. >>>>>>> But it is derived from how HTML module works, so we don't have to >>>>>>> replicate >>>>>>> it. I don't have final answer on this, but "tabs" folder seems like a >>>>>>> correct place. >>>>>>> - There might be three approaches: >>>>>>> - It doesn't - "student_view" is always rendered - this is >>>>>>> slightly simpler to implement and has more flexibility, but might >>>>>>> be >>>>>>> limited. >>>>>>> - Convention-based - we define a new "predefined" view (i.e. >>>>>>> "course_tab_view") to be used for course tab. This view might be >>>>>>> "abstract", or can just default to "student_view". >>>>>>> - Configuration based - export some decorator for XBlock to >>>>>>> mark "course_tab_view" explicitly. >>>>>>> >>>>>>> To me, it looks like convention-based approach with "student_view" >>>>>>> fallback is the most efficient one, so if there are no other >>>>>>> considerations >>>>>>> I would try implementing it first (and structuring the rest of >>>>>>> conversation >>>>>>> with that assumption in mind). >>>>>>> >>>>>>> Regards, >>>>>>> Eugeny >>>>>>> @Opencraft <http://opencraft.com> >>>>>>> >>>>>>> On Tuesday, June 28, 2016 at 5:10:45 PM UTC+3, Calen Pennington >>>>>>> wrote: >>>>>>>> >>>>>>>> Eugeny, >>>>>>>> >>>>>>>> Another approach that we've talked about in the past around this >>>>>>>> same problem is that rather than having a specific tab type for >>>>>>>> housing an >>>>>>>> XBlock, we'd allow XBlocks to expose a course_view, which the XBlock >>>>>>>> could >>>>>>>> use to render any course-level content (perhaps configuration details, >>>>>>>> perhaps something like the Discussions tab, perhaps other uses). Those >>>>>>>> tabs >>>>>>>> could be rendered for any XBlock type that appeared in the course. >>>>>>>> >>>>>>>> Questions I have about your proposed implementation: >>>>>>>> >>>>>>>> - what will the XBlock usage_key would be? >>>>>>>> - where will the XBlock content (scope.content) would be stored >>>>>>>> in OLX? >>>>>>>> - How does an XBlock define a view that's specific to the tab? >>>>>>>> - For instance, I assume that the Discussion block would >>>>>>>> have a different display in the tab than it would inline. >>>>>>>> >>>>>>>> -Cale >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Jun 28, 2016 at 9:41 AM, <[email protected]> wrote: >>>>>>>> >>>>>>>>> My current understanding is that XBlockTab will just provide a >>>>>>>>> "place" where you can put any XBlock or component, so that it would be >>>>>>>>> displayed in tab. >>>>>>>>> >>>>>>>>> Theoretically it would mean that any XBlock could be added there, >>>>>>>>> and that XBlock would work exactly the same in tab or in unit. >>>>>>>>> Practically >>>>>>>>> - I don't know yet - there might be a need for an XBlock to implement >>>>>>>>> some >>>>>>>>> interface to be able to work in tab, and in that case only certain >>>>>>>>> XBlocks >>>>>>>>> will be available for tabs. But I would like to avoid that and have a >>>>>>>>> truly >>>>>>>>> generic solution. >>>>>>>>> >>>>>>>>> In two words: the suggested XBlockTab lives in edx-platform and >>>>>>>>> only "hosts" XBlocks. >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> Eugeny >>>>>>>>> @Opencraft <http://opencraft.com> >>>>>>>>> >>>>>>>>> On Tuesday, June 28, 2016 at 4:30:00 PM UTC+3, Cristian Salamea >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Tue, Jun 28, 2016 at 8:13 AM, Peter Pinch <[email protected]> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> How would this affect course import and export? >>>>>>>>>>> >>>>>>>>>>> I believe unrecognized blocks are ignored on import, but that >>>>>>>>>>> may be harder to do with tabs, since they are specified in >>>>>>>>>>> policy.json. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> In fact question could be extended to: in future any xblock can >>>>>>>>>> add a tab ? >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I'd also want to make sure that there is some meaningful logging >>>>>>>>>>> and error messaging to the user when a course is imported and the >>>>>>>>>>> proper >>>>>>>>>>> XBlockTab hasn't been installed. >>>>>>>>>>> >>>>>>>>>>> On Jun 28, 2016, at 9:06 AM, [email protected] wrote: >>>>>>>>>>> >>>>>>>>>>> Hello world! >>>>>>>>>>> >>>>>>>>>>> *Background*: OEP is a new (suggested) format for proposing >>>>>>>>>>> changes to Open edX platform. More details: >>>>>>>>>>> https://github.com/edx/open-edx-proposals/blob/master/oeps/oep-0001.rst >>>>>>>>>>> >>>>>>>>>>> *Idea: *Allow XBlocks to be displayed in a course tab (like >>>>>>>>>>> Progress, Discussion, etc.) >>>>>>>>>>> >>>>>>>>>>> *Motivation: * >>>>>>>>>>> >>>>>>>>>>> - In order to completely pull out discussions from >>>>>>>>>>> edx-platform. discussion XModule is (almost) converted to an >>>>>>>>>>> XBlock <https://github.com/edx/edx-platform/pull/12582>. The >>>>>>>>>>> next step would be to replace course discussion tab with >>>>>>>>>>> discussion >>>>>>>>>>> XBlock-based solution. >>>>>>>>>>> - This might be useful for building instructor tools (example of >>>>>>>>>>> a tool that could benefit from this >>>>>>>>>>> >>>>>>>>>>> <https://github.com/open-craft/problem-builder/blob/master/problem_builder/instructor_tool.py>). >>>>>>>>>>> This is related to other thread on mailing list >>>>>>>>>>> <https://groups.google.com/forum/#!topic/edx-code/Zd2sKQaMhHI> - >>>>>>>>>>> kind of alternative implementation. >>>>>>>>>>> >>>>>>>>>>> *Tentative implementation details: * >>>>>>>>>>> >>>>>>>>>>> *tl;dr*: XBlockTab (working name) will be similar to existing >>>>>>>>>>> StaticTab (powers "Custom Page" feature) and use nested XBlocks >>>>>>>>>>> concept to >>>>>>>>>>> allow using any XBlock (component?) in a Tab. >>>>>>>>>>> >>>>>>>>>>> Overall, it would work like that: >>>>>>>>>>> >>>>>>>>>>> - "Pages" page in Studio will have "Add XBlock Page" button >>>>>>>>>>> added; this button will cause XBlockTab to be added to a course >>>>>>>>>>> - In studio XBlockTab will expose UI for adding XBlocks and >>>>>>>>>>> (most likely) other components (problems, video, etc.), similar >>>>>>>>>>> to one >>>>>>>>>>> found in course Outline editor (Unit page). At a glance it looks >>>>>>>>>>> like it >>>>>>>>>>> could be exact same UI, but it is not 100% clear yet. >>>>>>>>>>> - Components added to an XBlockTab will be persisted to the >>>>>>>>>>> modulestore using the same mechanism to allow nested XBlocks. >>>>>>>>>>> - In LMS, XBlockTab will render its children (nested) >>>>>>>>>>> components sequentially - much like "Unit" (aka vertical module). >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I'm about writing an OEP this week, so feedback and ideas are >>>>>>>>>>> very welcome. >>>>>>>>>>> >>>>>>>>>>> Regards, >>>>>>>>>>> Eugeny >>>>>>>>>>> @Opencraft <http://opencraft.com/> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>> Google Groups "General Open edX discussion" group. >>>>>>>>>>> To view this discussion on the web visit >>>>>>>>>>> https://groups.google.com/d/msgid/edx-code/ad852782-b1e2-46ba-85bc-8d93db72048a%40googlegroups.com >>>>>>>>>>> <https://groups.google.com/d/msgid/edx-code/ad852782-b1e2-46ba-85bc-8d93db72048a%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>>>> . >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>> Google Groups "General Open edX discussion" group. >>>>>>>>>>> To view this discussion on the web visit >>>>>>>>>>> https://groups.google.com/d/msgid/edx-code/CFAAC85C-CE8E-4A56-819C-F1610A0C730A%40gmail.com >>>>>>>>>>> <https://groups.google.com/d/msgid/edx-code/CFAAC85C-CE8E-4A56-819C-F1610A0C730A%40gmail.com?utm_medium=email&utm_source=footer> >>>>>>>>>>> . >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> [image: Cristian Salamea on about.me] >>>>>>>>>> >>>>>>>>>> Cristian Salamea >>>>>>>>>> about.me/ovnicraft >>>>>>>>>> <http://about.me/ovnicraft> >>>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "General Open edX discussion" group. >>>>>>>>> To view this discussion on the web visit >>>>>>>>> https://groups.google.com/d/msgid/edx-code/70e847c6-b42e-470f-8ea2-9ffba6d81e2f%40googlegroups.com >>>>>>>>> <https://groups.google.com/d/msgid/edx-code/70e847c6-b42e-470f-8ea2-9ffba6d81e2f%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>> . >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "General Open edX discussion" group. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/edx-code/4dd69f54-5ead-45ea-bf29-3b7ffce6be64%40googlegroups.com >>>>>>> <https://groups.google.com/d/msgid/edx-code/4dd69f54-5ead-45ea-bf29-3b7ffce6be64%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "General Open edX discussion" group. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/edx-code/e68f5731-3dfd-43c6-a15f-a08babc0d51f%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/edx-code/e68f5731-3dfd-43c6-a15f-a08babc0d51f%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> >>>> >>>> >>>> -- >>>> >>>> *Andy Armstrong* >>>> >>>> edX | UI Architect | [email protected] >>>> >>>> 141 Portland Street, 9th floor >>>> >>>> Cambridge, MA 02139 >>>> http://www.edx.org <http://www.edxonline.org/> >>>> >>>> [image: >>>> http://www.e-learn.nl/media/blogs/e-learn/edX_Logo_Col_RGB_FINAL.jpg?mtime=1336074566] >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "General Open edX discussion" group. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/edx-code/5363559a-5780-419b-9b68-3a94c6f7c7a5%40googlegroups.com >>> <https://groups.google.com/d/msgid/edx-code/5363559a-5780-419b-9b68-3a94c6f7c7a5%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> >> >> >> -- >> >> *Andy Armstrong* >> >> edX | UI Architect | [email protected] >> >> 141 Portland Street, 9th floor >> >> Cambridge, MA 02139 >> http://www.edx.org <http://www.edxonline.org/> >> >> [image: >> http://www.e-learn.nl/media/blogs/e-learn/edX_Logo_Col_RGB_FINAL.jpg?mtime=1336074566] >> >> -- >> You received this message because you are subscribed to the Google Groups >> "General Open edX discussion" group. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/edx-code/CAG2ZmnAMohtNiX-G9iN7YuMaWJJVt1d%2BDdvHFBaouhDLVSvuZw%40mail.gmail.com >> <https://groups.google.com/d/msgid/edx-code/CAG2ZmnAMohtNiX-G9iN7YuMaWJJVt1d%2BDdvHFBaouhDLVSvuZw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > > -- > You received this message because you are subscribed to the Google Groups > "General Open edX discussion" group. > To view this discussion on the web visit > https://groups.google.com/d/msgid/edx-code/CAEyJbEa5tTT-pHj4xAbWxADid7i5iZm02LXqQ%3DJKupjnFu47vA%40mail.gmail.com > <https://groups.google.com/d/msgid/edx-code/CAEyJbEa5tTT-pHj4xAbWxADid7i5iZm02LXqQ%3DJKupjnFu47vA%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- *Andy Armstrong* edX | UI Architect | [email protected] 141 Portland Street, 9th floor Cambridge, MA 02139 http://www.edx.org <http://www.edxonline.org/> [image: http://www.e-learn.nl/media/blogs/e-learn/edX_Logo_Col_RGB_FINAL.jpg?mtime=1336074566] -- You received this message because you are subscribed to the Google Groups "General Open edX discussion" group. To view this discussion on the web visit https://groups.google.com/d/msgid/edx-code/CAG2ZmnCOrosUanQydRq2QtUuJx4jZqm067Sd23p3JF9pMCzsvQ%40mail.gmail.com.
