Hi all. Just starting to learn about Renku and its features. I’m looking for a way to integrate things like JupyterLab or other full applications into a new, open-source LMS we’re building. I’ve created an LTIv1.3 connection mechanism, such that I can launch a notebook from JupyterHub (when using the LTIAuthenticator plugin).
But I’m looking for something more comprehensive and wondering if Renku might provide that. Are there any configurations or plugins that allow Renku to act as an LTIv1.3 “tool”, such that e.g. a resource on Renku such as a particular Jupyter notebook could be launched from the LMS for a particular course for a particular student?
Or would this type of feature be the responsibility of the tool activated through Renku (e.g. I’d need to continue using LTIAuthenticator if trying to spin up JupyterHub and use it from my LMS).
Thanks for any thoughts.
1 Like
Hi @danielmcquillen Renku does not support LTI and I do not really know much about it. So if you can give me a bit more info about your use case and how LTI helps it would be really useful.
We use Keycloak to store our users and for authentication. So this gives admins some flexibility on how to authenticate users. Keycloak supports OIDC, OAuth2 and a few other standards - are these not acceptable for you? I dont fully understand your use case, but if you could authenticate with Renku then you could use our API to launch user workloads. Is this what you envision?
Furthermore, in Renku we do not use Jupyterhub. So the LTIAuthenticator
Jupyterhub plugin will be of no use in Renku.
Renku is an open-source project so if you want to contribute this LTI functionality to Renku that is also definitely a possibility.
A bit more info on Renku… We use our own Kubernetes operator called Amalthea to create and manage user workloads. So an alternative over using Renku is to use only this component. I am not sure if this is an option for you? We are just wrapping up a rewrite of the operator in Go and we have removed all dependence on Jupyter - so that any image (with or without Jupyter) can run on it.
Let me know what you think. If any of this is interesting or promising to you it may be easier to have a quick call and discuss things.
Hi @tolevski thanks for the info! A call would be great you can reach me at daniel@mcquilleninteractive.com or let me know how to reach you to discuss a time for a quick chat.
Ok I will reach out via email.
Thanks @tolevski! Just noting here an outcome from our convo: it seems that Renku does not yet have an LTIv1.3 connection but that might happen in the future if your team researches and decides it’s relevant (or someone contributes a PR!).
In the meantime, regarding Renku v2.0: if a course author in some LMS wanted to include a project from an instructor and make it available for a bunch of students, I think you mentioned one potential approach is to use the API to facilitate a connection to a Renku project from a course.
I can see the Renku v1 API here Swagger UI, but is there a similar page for the v2 API?
And are there any suggestions for a basic workflow via the API that would make an instructor’s project available to a particular student, perhaps involving a step that copied the project before spawning?
( Seems like there’s a roadmap note about this, so perhaps some thinking on this particular usecase is still ongoing? )
On that swagger page you can look at the API for the following services:
- core service
- knowledge graph
- notebooks service
- data service
- search service
The “v2” when we talk about renku “v2” does not show up in our backend really. Our API versioning could be better but we will probably end up versioning each of these services separately (when the need arises).
So all services are currently being used in Renku v1. For v2 we will use a subset of the services in v1 above and we will add new endpoints in the data service
. So for launching user sessions in v1 we use the notebooks service
, for Renku v2
we will use endpoints on the data service
. These endpoints for launching sessions for Renku v2 on the data service are still under development however. The plan is that they will be released in the next 2-3 weeks. So if you go back to Swagger UI towards the end of the month you will see them.
1 Like
This is a very good question. And I will answer this only in the context of Renku v2.
There are a few ways to do this with the way things currently are or will be in the next few weeks for Renku v2.
- Copy the instructors project into the students namespace. Then launch sessions for this student in the copied project. For this you would use the
/projects
endpoint from the data service
. I.e. a GET to /projects/{project_id}
to get the project and then a call to POST /project
with the result from the GET call slightly modified - so that the new project is in the student’s namespace.
- Make the instructor project public. This way any student may launch a session from this project but they will not be able to save their work.
Hopefully this answers your questions. But we definitely want to make teaching with Renku easier. And yeah as you mention we will work on this in the future as indicated by our roadmap. And yes we are trying to come up with a basic user flow that we want to support first and foremost for teaching. But I think we are still not 100% sure what it is. It is close to what you describe I think. But there are always lots of details and edge cases to consider and iron out.
1 Like