Picture of Peter Smith
Proposed changes to the way that Adapt handles course and component completion
by Peter Smith - Thursday, 13 November 2014, 11:53 AM
 

I know that there has been some discussion in recent months about how best to set component and course completion in Adapt and I'm keen that we have a proper debate and reach agreement on the subject in readiness for the release of version 1.2 of the framework.

With the current design of Adapt components can only be 'hard reset', meaning that when a component's state is reset to allow the user to interact with it again they must do so in order for the course to be considered complete.

We would like to propose a more flexible approach for v1.2 whereby the course designer can choose between:

  • No reset - users are not allowed to make further attempts at a component that they have previously completed
  • 'Soft' reset - users are allowed to make further attempts at a component they have previously completed but are not required to do so
  • 'Hard' reset - when a component is reset to allow further attempts the user is required to complete the component again.

This change would create the opportunity to design a plethora of new and engaging extensions for Adapt, for example:

  • A scenario whereby, on failing an assessment it is suggested that a user revisits parts of the course in order to revise certain topics. The user does not have to do this but is merely given the option to do so.
  • A game-based scenario where the user, having been through the scenario once (which would be sufficient for completion) may return as many times as they like to the scenario to explore possible alternative outcomes.
  • Branching scenarios with lifelines in which the user gets a restricted number of chances to find the correct path through the sequence. Upon reaching a dead end or negative outcome they lose a life and get sent back to the beginning.

 Please comment below (and +1) if you think this functionality would be useful, and also if you have any practical questions about how this would be implemented.

Picture of Martin Sandberg
Re: Proposed changes to the way that Adapt handles course and component completion
by Martin Sandberg - Thursday, 13 November 2014, 12:57 PM
 

Very useful indeed. I love the options for the course designer. Makes it more flexible as a system.

It would also be great if an assessment could be set as to how many times you can retry it. Zero up to infinity.

It would also be great if in addition to _pageLevelProgress we had another bolean to say if the component is required to be completed for the course to be completed. This should also affect the progressbar in the menu.

Have had to do a workaround for this in my current course:

https://community.adaptlearning.org/mod/forum/discuss.php?d=430

 

Another thing is that the progressbar in the menu should be configurable to show either the progress of the page or the completion of an assessment.

Best regards,

Martin

 

 

 

Picture of Matt Leathes
Re: Proposed changes to the way that Adapt handles course and component completion
by Matt Leathes - Thursday, 13 November 2014, 1:56 PM
 

Martin

Thanks for your reply.

We think that this change would make lots more options like this available.

One thing we have been working on is code to allow components to be made 'optional' - so the same effect as what you're asking for about components being required for completion, only the logic is the opposite way round i.e. it's assumed that components are required unless they are marked as optional. There is actually a setting for this in the json already - but it's not actually got any code behind it, so changing it has no effect!

I think we've also done something around menu progress bar being different for assessments.

Picture of Martin Sandberg
Re: Proposed changes to the way that Adapt handles course and component completion
by Martin Sandberg - Thursday, 13 November 2014, 3:17 PM
 

Sounds great.....

/ Martin

Picture of Brian Quinn
Re: Proposed changes to the way that Adapt handles course and component completion
by Brian Quinn - Tuesday, 16 December 2014, 9:42 AM
 

Matt,

+1 for implementing _isOptional.

Picture of Matt Leathes
Re: Proposed changes to the way that Adapt handles course and component completion
by Matt Leathes - Tuesday, 16 December 2014, 10:35 AM
 

Yep, I'm very keen to get that added properly. I'll add a ticket now to make sure that gets done.

Picture of Matt Leathes
Re: Proposed changes to the way that Adapt handles course and component completion
by Matt Leathes - Tuesday, 16 December 2014, 11:33 AM
 

https://github.com/adaptlearning/adapt_framework/issues/490

Please have a look and add comments if you can...

Picture of Jordan Mainzer
Re: Proposed changes to the way that Adapt handles course and component completion
by Jordan Mainzer - Thursday, 13 November 2014, 10:14 PM
 

This would be extremely useful and brings Adapt closer to Papaya or Articulate Storyline in terms of flexible quiz functionality, something it seemed to have been previously lacking.

Picture of Tara MacKinnon
Re: Proposed changes to the way that Adapt handles course and component completion
by Tara MacKinnon - Monday, 17 November 2014, 9:48 AM
 

Definitely a thumbs up from me as an ID. Flexibility in components can only improve the effectiveness of the learning experience for the end user, being able to re-try components, try different answers and fully explore the course help the learner to engage with the content.

Mark
Re: Proposed changes to the way that Adapt handles course and component completion
by Mark Lynch - Monday, 17 November 2014, 11:10 AM
 

Hi,

How do you propose to add this functionality into Adapt as part of core or via a plugin?

Thanks,

Mark.

 

Picture of Matt Leathes
Re: Proposed changes to the way that Adapt handles course and component completion
by Matt Leathes - Monday, 17 November 2014, 5:41 PM
 

I think it would have to be part of core - and would be a case of maintaining two variables/properties for each model instead of the one we have currently.

The current _isComplete variable would continue to be used - but only to reflect whether the user has completed the item for tracking purposes or not (i.e. it's to do with the 'hard' reset).

The 'soft' reset would be handled by a second variable - we've called it _isInteractionComplete - but are certainly not wedded to that name!

With a 'hard' reset, both variables would get reset to false.

With a 'soft' reset, only the second one would.

 

Picture of Peter Smith
Re: Proposed changes to the way that Adapt handles course and component completion
by Peter Smith - Monday, 15 December 2014, 2:47 PM
 

Hi all,

thank you for your comments on this thread; it is great to have received so much support. This feature is included in the scope of the upcoming v2.0 release and will be implemented in core.

As this is a complex feature that will have a significant impact on the way in which assessment and tracking behaves within Adapt courses it is important that all requirements and in particular any edge cases are considered and captured before the technical design and development work begins.

To this end we have put together the attached mindmap which sets out how soft/hard reset should work at both the assessment and individual component level. Please can I ask everyone to check through the document and highlight any requirements that are missing or unclear in the document. Due to the tight timescales for the next framework release please can you provide feedback in readiness for the start of next week (22nd December) when we will start work on the technical design.

Thanks as always for your support.

Picture of Daryl Hedley
Re: Proposed changes to the way that Adapt handles course and component completion
by Daryl Hedley - Tuesday, 23 December 2014, 1:30 PM
 

Hi,

 

Sorry for my delay in getting back to this. I have a few things I’d like to say about this feature. Firstly - I do not believe that having this feature implemented suddenly opens up the possibility to create the extensions listed above. I believe the current implementation restricts extensions to a core that becomes opinionated and this is not what the Adapt OS project was set out to do (I'll explain this below). I remember having a chat with the core developers at the start of this project and deciding that core should give enough but not too much and that the functionality - like listed above should be in extensions.

 

At Appitierre we’re developing extensions similar to those listed above but without the need to have a “soft reset” implemented. I however, believe that being able to retake assessments and allow multiple attempts is a must in a learning system - I’m not sure that a “soft reset” is the answer.

 

After looking through the code for the past few months and realising that there are a lot of “overwrites” needed to implement this I have a few concerns that I think impact Adapt as a product:

 

I gave a talk at the start of the re-write of Adapt, when we decided to make it open source and have a plugin architecture. This talk was to the core developers involved in bringing Adapt to the community. I talked about expectations in code - I believe that we should be sticking to keeping the expectations of code valid for users and programmers. With the “soft reset” functionality we’re able to end up with a data structure on a component model like so:

 

_isComplete: true,

_attemptsLeft: 2,

_attempts: 2,

_isEnabled: true

 

To me this is lying as the question component is complete, but the user has had no attempts at the question - how can that be? I do not believe that code underneath the UI should lie, however this would indicate that we are lying. If a tracking system other than Scorm was to track this data - it would suggest that the learner has completed a question without any attempts. Learning data then becomes invalid.

 

In the diagram listed above it also suggests that pageLevelProgress should lie about completion too. But to add to this - it’s bad UI design. Both two giants in UI design Google and Apple mention about expectations the user should receive during their time in a product (they’ve even written guidelines to explain these too). PageLevelProgress showing that a page is complete although it’s not complete because it’s been “soft reset" is not fair to the user. The UI should always follow the underlying model structure. If a user is to reattempt questions on a page - pageLevelProgress should not tell the user that everything is complete.

 

Accessibility causes even more problems - Maybe there’s a popup that tells the user that something is being reset just before - but let’s look at visually impaired users of Adapt. We should be pinning model status on the components to tell visually impaired users that a component is complete - however after a “soft reset” on a question component the visually impaired user is told it’s complete - but it’s not really because you’re attempts are zero. To me, this doesn’t seem right. The whole design around this seems odd that UI and model data should differ.

 

I’m a strong believer that _isComplete is a boolean. If you complete a component it’s complete, not - it could be or it could not be - some where in the middle. However being able to reset the question to allow multiple attempts is something that an extension should handle. This is why I’d vote for an extension handling this:

 

1 - Enables more flexibility as it’s not reliant on a core functionality - instead the extension picks the behaviour. Extensions = extra behaviour

 

2 - An extension enabling multiple attempts would not need to lie about the model data - _isComplete gets reset to false - pageLevelProgress doesn’t need to be re-written - extension holds multiple attempts data. This way you can record multiple attempts and the data in the attempts, which in turn gives more power to the extension. Imagine an extension based upon an assessment that allows multiple attempts and after your attempts it takes the best score of all the questions and pushes this to the tracking extension. This would be possible with the suggest I’ve just made - with “soft reset” it does leave enough scope to build this.

 

3 - Change of state for individual models should be owned by it’s model - once you get into restoring model data - this should be an extension.

 

4 - Learning designers and programmers can choose to add this. Forcing developers to use this functionality is not the way forward. Where it can be - Adapt should not be opinionated. Again, putting this functionality into an extension would solve this.

 

Tracking data is the most important part of learning yet it has been given the least amount of time. The Spoor extension hasn’t even been modularised - instead it’s still using the old code developer at the start of Adapt. Maybe this is why _isInteractionsComplete has been created? At Appitierre we’ve spent a good deal of time working on tracking and enabling features like listed above in the original post. I believe the problem is not in the core but rather the implementation - and this implementation should go into extensions to allow the most flexibility.

 

In summary, I think the current implementation is not the correct way to go about it. I believe in Adapt being less opinionated and having extensions be the functional aspects. This way both users and programmers can pick and choose their system without it being forced upon them. A good programming practise is to allow the model data to mimic the UI data - this is why we’re starting to see frameworks like React, Ember and Polymer who update the UI if the model updates. And finally, expectations of users/learners should always be at the forefront of our development. We should not be jeopardising this because of an implementation.

 

Thanks,

 

Daryl

Picture of Wes Atkinson
Re: Proposed changes to the way that Adapt handles course and component completion
by Wes Atkinson - Tuesday, 23 December 2014, 3:26 PM
 

Hi. 

I think even having this as isOptional is questionable. If a company doesn't wish to use this, isOptional still means that the code is there in the core, potentially alongside or even in the same files as the code you are using.  It still means that when fixes are made and enhancements are added that it affects the core.

Any change in the core of a product means regression testing. Putting aside the usecase, this alone doesn't scale for enterprise where you are having to retest the core of your product despite it being 'optional'. 

Now addressing the use case - this is very market specific. I do believe this should be an extension.

Thanks

Wes

 

Picture of Dennis Heaney
Re: Proposed changes to the way that Adapt handles course and component completion
by Dennis Heaney - Friday, 2 January 2015, 8:42 AM
 

I have to agree with Daryl and Wes, who've together responded pretty comprehensively regarding the kinds of reservations I myself would have about the proposed changes. 

I'm just posting to back up the comments from those guys, specifically regarding how opinionated the core framework should be - which is to say, not at all. Completion tracking should be straightforward and easy to program around for clients of the framework. The proposed change strikes me very much as something that belongs in an extension.

Mark
Re: Proposed changes to the way that Adapt handles course and component completion
by Mark Lynch - Monday, 5 January 2015, 5:21 PM
 

I'm also in agreement with Daryl and Wes, the core framework should be as small and lightweight as possible, with specific features such as this being implemented in an extension or a similar plugin.

There are plenty of instance on this Forum where people do not use tracking at all - they should not have to download the weight of course and component completion.

Picture of Matt Leathes
Re: Proposed changes to the way that Adapt handles course and component completion
by Matt Leathes - Tuesday, 6 January 2015, 2:35 PM
 

Hi Mark

The course and component completion code is already in the core - so all we're proposing is to amend it slightly to make it more flexible.

As you can see from Ollie's recent PR, the change involves adding only about 70 lines of code to the core, so is very minimal indeed.

Picture of Brian Quinn
Re: Proposed changes to the way that Adapt handles course and component completion
by Brian Quinn - Monday, 5 January 2015, 5:31 PM
 

Quite a lot has been discussed in this thread. 

I can see the value of using the _isOptional property should be implemented as mentioned here:https://github.com/adaptlearning/adapt_framework/issues/490

In terms of the hard, soft, and no reset options, I also would be keen for this to be handed off to an extension rather than implemented as part of core.  I concur with Daryl that Spoor has not received the attention that it deserves either.

Furthermore I would say the current assessment extension similarly requires re-work.  This was something which was touched upon at the Adapt Hack event back in September and brainstormed but unfortunately has not progressed much further.

Picture of Matt Leathes
Re: Proposed changes to the way that Adapt handles course and component completion
by Matt Leathes - Tuesday, 6 January 2015, 2:53 PM
 

Wes, you say that this is 'very market specific', but that's the complete opposite of my experience.

In the vast majority of e-learning content I have seen in more than a decade in the industry, the user interface of any screen/component you return to (having previously completed it) is automatically reset to allow you to have another go - but you are not required to complete the interaction again in order to complete the course i.e. the kind of 'soft reset' we are proposing.

If anything, Adapt is quite unusual in that - by default - it remembers that you have completed questions previously and prevents you from attempting them again. It's also currently broken in that if you revisit a component you completed in a previous SCORM session, it still won't let you attempt it again - but also doesn't properly restore the UI of the component to what it was when you completed it (something we are hoping to fix with an update to contrib-spoor).

In terms of whether it should be an extension or not, I would argue that if 'hard reset' can be part of core then the same argument can apply to 'soft reset' as it's functionally so similar.

Picture of Brian Quinn
Re: Proposed changes to the way that Adapt handles course and component completion
by Brian Quinn - Tuesday, 6 January 2015, 4:00 PM
 

Matt,

If we're talking specifically about questions, the QuestionView object already has support for '_attempts'.  Off the top of my head couldn't the framework core be tweaked to allow something like setting _attempts to -1 attempts to indicate infinite attempts?

In conjunction with an appropriate extension, whether that's a new version of the assessment or something else, you could do things like indicate how many attempts were remaining, e.g. by providing a lives/hearts indicator.  Functionally you could also provide support for only accepting the best/highest scoring attempt, which has also been requested on this forum previously.

In restoring the state of the component via adapt-contrib-spoor, couldn't we also restore the number of attempts taken/remaining?   Wouldn't this properly restore the UI?

Picture of Daryl Hedley
Re: Proposed changes to the way that Adapt handles course and component completion
by Daryl Hedley - Tuesday, 6 January 2015, 4:11 PM
 

Hey,

I agree with Brian - restoring state based upon multiple attempts should be kept as a plugin, possibly assessment or spoor should handle this. It would open up a lot more possibilities and not break the things I mentioned above.

In terms of having components reset on revisit being a common practise - I don't see learning apps like Treehouse, Code academy and other more advanced tracking systems having this as a default. To add to this - this was discussed with Learning Designers at the time and to reset a question or state was seen as a bad experience for learners as they would lose their data. It was discussed that if a plugin decides to reset a question it should notify the learner that the question is being reset. To me, going onto a page and filling it all out and answering the questions, then coming back to the page and it being empty without notification seems backwards to me. It would feel as though I've done all that hard work and it's just been wiped off.

By having the reset functionality turned off by default it's then up to a plugin to add reset messages or state functionality.

Thanks,

Daryl

Picture of Oliver Foster
Re: Proposed changes to the way that Adapt handles course and component completion
by Oliver Foster - Wednesday, 7 January 2015, 7:55 PM
 

Hi Daryl,

The current implementation of isResetOnRevisit works exactly as you've described. It gives no user notification and returns the user to a blank and incomplete component on a page revisit. I completely agree that this does seem quite backward and should be fixed. I'll post an issue on it in the morning.

Ollie.

Picture of Oliver Foster
Re: Proposed changes to the way that Adapt handles course and component completion
by Oliver Foster - Thursday, 8 January 2015, 9:26 AM
Picture of Matt Leathes
Re: Proposed changes to the way that Adapt handles course and component completion
by Matt Leathes - Tuesday, 6 January 2015, 5:22 PM
 

OK, here's an example:

I have a course that consists of two pages.

The second page contains an assessment which cannot be accessed until the user has completed the first page.

In order to complete the first page - which is a mixture of presentation components and some questions - the user must complete all the components on that page, so setting infinite attempts would not work as you don't complete a question until you have exhausted all your attempts.

Anyway, the user completes the first page but then fails the assessment.

The assessment feedback suggests (but does not require) that the user should probably go back and revisit the first page to check their understanding of the content before attempting the assessment again.

At this point it would obviously be necessary to perform a 'soft reset' of the questions in page 1 so that they can actually do all the content in that page again. You wouldn't want to do a 'hard reset' as you're not actually requiring that the user complete the first page again - it's merely a suggestion.

To answer your point about contrib-spoor - it's actually necessary to record what answers the user supplied to each question in order to properly restore the state of the UI in subsequent sessions. Currently contrib-spoor only records what blocks you have completed, nothing more - mainly because of the challenge of doing this in a way that would be terse enough to be stored in under 4096 bytes (the storage limit of cmi.suspend_data in SCORM 1.2).

Picture of Oliver Foster
Re: Proposed changes to the way that Adapt handles course and component completion
by Oliver Foster - Wednesday, 7 January 2015, 8:40 AM
 

Hi Brian,

Your point is one I feel I'd like to further clarify in this topic.

 

_attempts as it currently exists in the questionView describes only the maximum number of incorrect tries one can have at a question before it is automatically completed+incorrect. A person may complete+correct at any time within their number of attempts.

Once the component is complete _attempts has no baring on the component. The score is calculated in each attempt by the component view and only exists in the model on completion (for most question components) i.e. once the component is complete+incorrect or complete+correct the score is set into the components model data. Once the component is complete it cannot currently be retried unless it is hard reset by the _isResetOnRevisit attribute and only on a page revisit.

Soft/hard reset has very little to do with or akin with the questionView style attempts system. Soft/hard reset is about post-completion retaking/reattempting. This is where a page/article or block may be retaken to further engage the learner (for any number of interesting reasons) and whereby they must or must not recomplete these components to pass the course on both the lms and throughout the menu and pagelevelprogress indicators.

 

Scorm will only track the block completion (at present) not a components completion, nor its score, nor the attempts left. To restore a components Ui state it is necessary to include the users selections per component, and in order to keep the component state consistent, its score must be recorded to allow for score displaying extensions etc. Currently this is far outside the scope of Adapt's tracking and scorm implementation which operates at block level only and essentially pretends that component states are non-existant.

 

To me this is one of these multifaceted and intricate programming issues which really needs influence from designers.

 

Ollie.

 

 

 

 

Picture of Daryl Hedley
Re: Proposed changes to the way that Adapt handles course and component completion
by Daryl Hedley - Wednesday, 7 January 2015, 9:59 AM
 

Hey,

Matt - glad you cleared that up - it sounded as though you were saying that resetting question on revisit should be set to true by default.

In terms of your example - I think it's a clearly written out example but it still highlights the issue that the underlying data is lying to the user and that you could end up with the data structure mentioned before in my post.

But let's look at your example and put it into context, for this I don't want to talk about a specific tracking module as the fundamental issue with this implementation is about state of models and UI - we should be catering for all tracking methods, SCORM, Tin-can, Google Analytics (I have seen some pretty cool implementations with MOOCs and Google Analytics), advance tracking systems like Treehouse or a bespoke tracking system:

If the assessment feedback suggests that the user should probably go back and revisit the first page to check their understanding of the content before attempting the assessment again - what happens if they decide to do this and reset the questions on that page which leaves them with the state of this:

 

_isComplete: true,

_attempts: 2,

_attemptsLeft:2,

_isCorrect: false

However if they then navigate straight back to the assessment and take questions (let's say that we have a tracking system that tracks every 60 seconds or when a component gets completed). If I start retaking the assessment and tracking data is sent back up (but we’re tracking all component state, attempts taken, is the question correct, is it complete) this data is now wrong - I’ve managed to complete questions with zero attempts, and all my questions are not correct. What happens if there was valuable tracking data on that page?

I’m sure Google Analytics wouldn't tell you that you’ve got 500 visitors a day and the all of a sudden it says, sorry actually it was 750 a day. Data should never lie - otherwise we’re stopping Adapt from becoming a product that people can use in the future. For instance our tracking system at Appitierre is a custom tracking system that enables you to track all sorts of intricate data that if this “soft” reset was implemented would stop us from using Adapt. Not only that - but the last 3/5 tracking implementations I’ve done recently have asked for more than SCORM and this would also break their tracking system. I don’t believe that we should be limiting users of Adapt because of core functionality.

How I can see this working (as I do believe being able to give users another attempt is vital to Adapt) is to remove all of this _isInteractionsComplete from core and handle it in a extension. This then enables developers to build plugins around tracking data and attempts. When the user wants to reset and redo questions after an assessment it could trigger an event that stores the data as a session which you could do multiple times to allow multiple attempts and track all the data around those sessions - attempts taken, first time scores, second time scores (this could be used to analyse if the learner is doing better a second time or not. For example, when it comes to tracking it could return the highest score across the whole assessment, or all of your attempts. This way we never lie to the user, we don’t lie about the data and we certainly don’t break any expectations that the users data is different in the models to the UI.

When I mentioned this on the developer Skype chat this was said to be a known issue - how can this be a known issue and still the latest implementation (https://github.com/adaptlearning/adapt_framework/pull/493) be pretty much the same as the previous implementation. The concerns above and commented on by core developers on this thread directly question this implementation.

I also offered my time in a recent call to oversee the implementation so we don’t end up breaking expectations of users and UI but this seems to have been pushed ahead with. I’m extremely against this implementation as I believe it breaks Adapt from being a tool for the future, I’m also glad that I’m not the only one who feels like this.

Thanks,

Daryl

Picture of Oliver Foster
Re: Proposed changes to the way that Adapt handles course and component completion
by Oliver Foster - Wednesday, 7 January 2015, 5:11 PM
 

Hi Daryl,

Thanks for your detailed response to the soft/hard reset implementation question. I wanted to address a couple of the specific points that you make about the impact of the proposed changes on completion tracking data:

Rather than misrepresenting component completion, the addition of a new ‘_isInteractionComplete’ variable actually removes a cause of confusion in the current data model which conflates component completion with overall course completion by using the same variable, isComplete, for both purposes. With your example, following a soft reset the component data would actually be:

a.         _isComplete: true,

b.         _isInteractionComplete: false,

c.         _attemptsLeft: 2,

d.         _attempts: 2,

e.         _isEnabled: true

This data is correct – the user has two out of a possible two attempts available because the interaction with the component is no longer complete.

The purpose of page level progress is to provide a visual indication of which course pages require further interaction in order for the user to complete the course. If a user has completed a page on which activities have been ‘soft’ reset they do not need to interact with these components again in order to complete the course as isComplete is still set to true. The page level indicators should therefore continue to show completed in this scenario in order to remain faithful to the underlying data model.

I hope that the above points help to clarify matters with a more inclusive set of variables in the example. 

Kind Regards,

Ollie

Picture of Tom Taylor
Re: Proposed changes to the way that Adapt handles course and component completion
by Tom Taylor - Wednesday, 7 January 2015, 5:12 PM
 

I think the problem you describe here is more with the implementation of the how your theoretical tracking plugin deals with the data, and not with how the question has been reset. I also think that we need to be slightly cautious about using an assessment scenario here, as I'd expect these to have custom functionality when it comes to any resetting which should taken care of within the extension, and not core.

The whole purpose of a soft-reset is to allow the learner additional attempts at a question without this having any affect on the current completion/scoring. I don't see why the new code would break any existing functionality to the extent you describe; Ollie's PR assumes a hard-reset as default, a soft-reset wouldn't be used unless explicitly specified. No events would work differently, as `_isCompleted` would be reset as per the current core, and all other data would remain the same. For all intents and purposes, everything you can do now is still possible. If you don't think this is the case, it'd be useful to have examples of exactly what would go wrong were you to pull in these changes (as with the 3/5 projects you mention).

 

I'd be really interested to see some more concrete examples or pseudocode describing how you think this should be better implemented via an extension, as I've had a look myself, and am not convinced it's feasible using Adapt's current architecture.

Picture of Oliver Foster
Re: Proposed changes to the way that Adapt handles course and component completion
by Oliver Foster - Wednesday, 7 January 2015, 6:31 PM
 

Hi Daryl,

 

I have to fundamentally disagree that my PR is practically identical to the original implementation in a vital number of respects.

 

The differences are such that I personally will have to redo some of our extensions which rely on this behaviour to make them compatible with the framework before giving them to the community.

 

My implementation takes into account all of the very specific user/client requirements gathered and documented in the attached PDF above and I have personally taken in all of the concerns expressed in this discussion, with special regards to regression testing, backwards compatibility, data representation, attribute naming, code size, performance issues, optionality, architectural structure, readability and forward potential issues - including tracking.

 

This implementation is so fundamentally different because it was written to the short term detriment of kineo for the benefit of the community as a highly valued resource and as a huge part of the company's ecosystem and ethos.

 

Ollie.

Picture of Wes Atkinson
Re: Proposed changes to the way that Adapt handles course and component completion
by Wes Atkinson - Tuesday, 6 January 2015, 4:39 PM
 

Hey Matt,

If we are going disagree based on experience, I will give you mine.

In the previous company I worked for, this functionality would have no place in e-learning. The types of E-Learning we used were Data Protection, Legal compliance (Bribery act etc),  Safeguarding and compliance when working with vulnerable people, and assistance with career building.

The very thought of having a product that could allow someone to go back into a legal course and 'have another go' at a question would be a disaster. Especially given that most users would just try until they got the right answer.  It would be difficult at that point to understand if the user had actually understood the course content correctly, or if they were cheating. We as a company would be responsible for vetting that person. Even having a product that had that functionality set as default to reset in its core would be a risk.

For a company with a hundred employees and a few customers, having these types of options in the core of a product is what a noddy "one size fits all" product should have. This is not what I believe the Adapt Learning Framework is aiming for. Flexibility is scaled through plugins. 

For a company like the one I was employed in, with the responsibility of 10,000 employees and 182,000 people's legal compliance, this is a no go. I'd think this would be a plugin I could discard, and i'd be pretty happy knowing there was no way it wasn't going to come near what I was doing. 

Thanks

Wes

 

Picture of Matt Leathes
Re: Proposed changes to the way that Adapt handles course and component completion
by Matt Leathes - Tuesday, 6 January 2015, 5:09 PM
 

I see what you're saying but I can also envisage many instances in which it would be both acceptable and desirable to reset - and I think some of the initial responses to that post show that others feel the same way.

The option to reset or not would be of course up to the course designer.

Please note that you *can* currently reset questions in Adapt (see questionView's checkIfResetOnRevisit() function) - but the only reset option available is the 'hard reset'. We are simply proposing to add a 'soft reset' option alongside this. Neither would be implemented by default, 'no reset' would still be the default.

Daryl, I can see what you're saying about not having notification for something resetting - but surely the changes we're making don't preclude a plugin having something like that?

Picture of Oliver Foster
Soft/hard reset code review
by Oliver Foster - Tuesday, 6 January 2015, 1:51 PM
 

To open the core changes to review I have submitted a pull request of the core changes proposed. Pull request.

All other sections of the Soft/hard reset pdf produced by Peter Smith and Sven Laux etc are to be implemented in subsequent extension amends, such as a rewritten assessment extension, a rewritten spoor extension etc.

I will be responding to the above comments everyone has left over the next few days, for the moment I wanted to concentrate on getting the code right and PR'd in the hope that it may clarify a few things.

Warm regards and a new year's greetings to everyone,

Ollie

 

Picture of Oliver Foster
Re: Proposed changes to the way that Adapt handles course and component completion
by Oliver Foster - Wednesday, 7 January 2015, 5:13 PM
 

Hi Daryl,

I completely agree with the principle that the core of the Adapt Framework should be as small as possible and that changes should be made at the highest practical level in the Adapt Component/Extension/Core architecture.

In this instance the only practical place to make this change is at the core level – attempting to implement the functionality as an extension is not workable because the Adapt architecture is currently a tightly coupled hierarchy which goes from menu through to component and the completion states have to cascade in both directions. 

Unless I am missing something, adding this functionality as an extension would require significantly more code as all model data will need to be duplicated in the extension. This seems to me much more complicated to implement and unnecessarily resource intensive.

As you can see from the pull request I made earlier, adding this functionality via core on the other hand requires only a minor change in behaviour and simply extends the current hard reset system of ‘overwrites’. The impact of making this core code change is further minimised by the fact that the isComplete and isResetonRevisit variables are unchanged, making the soft reset change fully backwards compatible.

This approach also addresses a limitation of the current implementation of activity completion. Currently a component can be hard reset to be incomplete, but this hard reset is not cascaded up to menu and page completion or SCORM completion.

Finally on this point, you state that 'Change of state for individual models should be owned by its model'. Again this is something that I completely agree with. Under the current implementation, the reset on revisit behaviour is contained in the question view only and has no relation to pages, menus, articles, blocks or standard components or their models. With this proposed change the behaviour is moved into the model which is where it belongs.

Please can everyone review the changes in the pull request and provide any specific feedback on the approach. If there are any alternative approaches which come close to the neatness and simplicity of the proposed core code change I would be very keen to hear about them.

Kind regards,

Ollie.

Picture of Peter Smith
Re: Proposed changes to the way that Adapt handles course and component completion
by Peter Smith - Wednesday, 7 January 2015, 5:43 PM
 

Hi all,

I'm pleased to see that my original post has prompted so much robust debate. As the discussion has become slightly fractured, I thought it would be useful to provide a summary.

From the comments above there looks to be a general consensus that soft reset would be a useful feature to add to Adapt - any disagreement has been largely around how this feature should be implemented rather than whether it should be. 

There have however been enough voices raised against this consensus of opinion to make it clear that the soft reset feature must be an optional one, and must be switched-off by default.

What remains is agreement on the most effective and efficient way to implement this change technically. As Ollie suggests, please can people review his pull request and suggest any improvements. CG Kineo have committed to provide the development resource needed to implement this improvement into the next version of the Adapt Framework.

Kind regards,

Peter.