Per discussion on Slack architecture channel, OEP is not needed for this kind of change. Instead an empty PR is sent: https://github.com/edx/edx-platform/pull/12896 - it will eventually contain implementation.
This ML thread is mentioned on the PR, so I believe the discussion could continue here, or move to PR, or just go in parallel in both places. Regards, Eugeny @Opencraft <http://opencraft.com> P.S. previous message is from me too - I accidentally posted it from my personal email On Wednesday, June 29, 2016 at 11:53:05 AM UTC+3, Колпаков Евгений 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, <eug...@opencraft.com> 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, <eug...@opencraft.com> 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, <eug...@opencraft.com> 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 <pdp...@gmail.com> >>>>>>>> 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, eug...@opencraft.com 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 | an...@edx.org >> >> 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/ff1916be-7f37-4e5a-ab56-c39d89d661ba%40googlegroups.com.