I actually don't like debate as much as healthy discourse that leads somewhere productive.
No, I think you're correct. This is more fun too.
RE: RawGit, I had noticed that as well, and just tested to confirm. It is something I want to address in a future release.https://raw.githubusercontent.com/robert-carroll/ccsd-canvas/master/admintray-subaccmenu/admintray-s...
It was a quick fix to make it easily available, without signing up for some service.
I think that if you're going to do major hacks to Canvas...They are wanting to move to InstUI and React and not make everything based on classes that people can modify...
But I do feel that there's a happy middle ground somewhere that hasn't been reached yet, but I'm not a React developer.
I take statements like "If there is any other way besides custom JavaScript to do it, I would go that way" as active discouragement. That was surrounded by "If we need to add more to the custom theme editor, let us know." There was a hinge of hope with "If you need custom classes, make your case." All of those are paraphrased, of course.
I think the reasoning is more of a (again, reading my own experiences into this) case of "We're not guaranteeing that we'll keep the classes or whatever else it is that you're hooking into, so there's a good chance it will break at some point. It would be better if you would look for a different way to start with." You know, the standard, "You're on your won if you do this in a non-standard, non-supported way." This is a change from when I started when the answer to all of the individual needs was custom JavaScript.
Agreed here too. I remember when adding custom JS/CSS meant emailing it to the CSM.
I also don't want to be responsible for hindering Canvas' decision to develop and use new technologies to improve the product.
I think the middle ground would be having a discussion about what they would be willing to support or enable something that allows theme modification 'at your own risk'. Right now we are trying to build workarounds that are a little less predictable.
Regarding the list of questions, I think you overestimate the usage of Canvancements. Or maybe I underestimate them?
Maybe, maybe not. Do you consider the exponential effect of 1 institution enabling 1 Canvancement for all users? We have 2 in our JS, Dashboard and Rubric Sorting, and Adjust All Assignment Dates on One Page is pretty popular with the 40+ teachers in the room next to me. I'm not sure how to pull metrics on who has sorted their dashboard cards or rubrics, but we had 39,000 students (~1/10) and 10,000 employees (1/4) use Canvas in the past 12 months.
One of the things I had to decide when I was doing Canvancements is how much benefit is there to this? Is it a hack for one person? Will others be able to benefit? How much time is it going to take for me to do? Do I have that time available?
We have to make the same assessments, with two full time developers.
...Unfortunately people like admins, instructional designers, and math/science teachers fall outside that middle 60%...
...That causes frustration for those who use the Style Guide to style user content -- a purpose it was never intended for but many people discovered it worked...
Probably the best use of the Theme Editor would be allowing templating/styling/interactive components for content.
I'm starting to work with our instructors and designers to figure out how we can use HTML elements without huge injected libraries or external/expensive LTI tools. Several of us are enrolled in the Canvas Hacks Classroom now, so we can start looking at and getting some play time with HTML in Canvas, with the goal that if we get acquainted with HTML I can style the components globally, and instructors would only need to support the html... trying to make HTML more readable in Canvas... that's a hack. https://community.canvaslms.com/message/111843-re-canvashacks-classroom?commentID=111843#comment-111...
The problem with LTIs is that they are outside of Canvas, so tweaking the UI is not their role. But then how many of the tweaks that we make to the UI are designed for the vast majority of the users? How many of them are designed to take away functionality from people (e.g., let's remove the course reset button because one of my faculty accidentally clicked it). Many times the solution is education, but we're getting a lot of people who don't have that, or feel that they are trained in Canvas because they went through what their college offered three years ago. Come on folks, Canvas changes every three weeks.
Some modifications require less overhead, some schools have no technical staff or budget.
Create a Sandbox Course via Web Application/API?
There's a handful of solutions in that thread... how many people can support ruby, spin up a server to get this working in a day. Adding a button with JS is portable. Additionally, another situation where this could be solved in Admin Settings.
I agree, removing features is probably not the best solution, and education/training is helpful.
Then again, sometimes, no amount of education will keep a teacher from running their own class room.
Keeping students out of the teacher role is a huge deal for FERPA, when the student has access to other students grades. Customizing Add People Dialog with Custom Javascript
For this, I don't even stop there. Using Canvas Data, I delete them nightly.
SELECT
CAST(course_sis_source_id AS NVARCHAR(20)) AS course_id,
sis_user_id AS user_id,
CASE
WHEN enrollment_type = 'teacheraid' THEN 'ta'
WHEN enrollment_type = 'teacher' THEN 'teacher'
WHEN enrollment_type = 'designer' THEN 'designer'
END AS role,
'' AS section_id,
'deleted' AS status
FROM CANVASLMS.dbo.user_enrollment_type_vw uet
JOIN CANVASLMS.dbo.pseudonym_dim pd ON uet.user_id = pd.user_id AND pd.workflow_state = 'active'
JOIN CANVASLMS.dbo.enrollment_term_dim et ON uet.enrollment_term_id = et.canvas_id
WHERE
enrollment_type IN ('teacher', 'teacheraid', 'designer')
AND GETDATE() BETWEEN et.date_start AND et.date_end
AND ISNUMERIC(sis_user_id) = 1
AND enrollment_status = 'active'
Been at this one for awhile, and have been interrupted too many times to stay focused on all the points.
Last thoughts.
Our sandbox instance could make collaboration fun. Create a new fiddle - JSFiddle has a collab mode.
I'm down for figuring out virtual hack nights. Maybe just a decent chatroom, maybe audio? Google Hangouts? Slack? Discord?
I find my most productive coding time is coming into the office, getting coffee, putting on my headphones and being reminded it's time for lunch. On the other hand, if I start with email, community, meetings, assisting, or trouble shooting my day is gone before I opened the IDE. I try to give myself time for both. Some days I focus on 1 or the other, while others I can mix it up a bit when tasks are smaller. Starting a new school year isn't so hard with our code, we maybe adjust some term numbers, update the databases, purge unused courses. I also really enjoy hacking away into the middle of the night, or tinkering while watching TV.