Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [che-dev] Is it possible with Eclipse Che?

Hi Hamilton,

I believe you will be able to start to get what you need by using Che in Multiuser mode (For an overview of this setting, see: https://www.eclipse.org/che/docs/single-multi-user.html and for how this is done with Docker, see: https://www.eclipse.org/che/docs/docker-multi-user.html). Once this is set up, users will be able to go in and create their own workspaces. 
Additionally to prescribe students with a specifically configured workspace, you may create a 'Factory' for them (See: https://www.eclipse.org/che/docs/factories-getting-started.html). A factory provides you a link that, when followed, will create a new clone of the workspace the factory is based on (including commands, projects/code, env vars, configuration, tooling, etc.) under the user's account.
With the above in mind, you should be able to get a Che server up where users can login and create custom pre-configured workspaces based on assigned Factories.

For your authentication requirements. Che Multiuser uses Keycloak (https://www.keycloak.org/) for authentication and while I haven't used this myself, I do know that Keycloak has some support for bringing your own authentication so I am optimistic that you will be able to find what you need on this front.

Now to address your hardware restrictions: Che can be configured to put certain restrictions on how much RAM each user can use/ how many workspaces they can run, etc. (See config options here: https://github.com/eclipse/che/blob/master/dockerfiles/init/manifests/che.env#L613). Additionally, Che provides some control over permissions so perhaps you would be able to limit users from making new workspaces other than the ones assigned to them, and then limit their ability to scale up their own workspaces, etc. (To see some of the permissions supported, see: https://www.eclipse.org/che/docs/permissions.html). As well as this, you should be able to configure the amount of RAM each workspace runs on down to 0.5GB (this is included in the workspace definition).
 
However, in terms of a queue, I do not think Che would provide that out of box (since it blurs the line between user workspaces which Che tries to draw). This is beyond my experience, but there may be a way you can build a separate service that can take source and return back compiled executables and then configure commands (https://www.eclipse.org/che/docs/commands-ide-macro.html) to trigger a call to this external service.

I would like to add that using Che education is a use case that I believe is very well suited to what Che provides. With Che, you should be able to create dev environments once and share them for many students to quickly and seamlessly reproduce so they can focus on their course content. It's great to see work being done on this!

Let me know if any of this is unclear/ if you have any more questions after reading this.

Best,

Zak

On Wed, Jun 20, 2018 at 5:12 PM, Hamilton Chevez <hchev001@xxxxxxxxx> wrote:
Hey everyone,

I've been placed in charge of getting Eclipse Che working with an online learning environment called STEM-CyLE. It's part of a NSF Research Grant to enhance Computer Science education with online learning engagement strategies and learning objects. I have a few questions regarding Che and how I can modify it to meet the requirements I have been given, in no way am I asking to make these changes to Che. I'm just in need of help and feel overwhelmed.

So I understand that the way Che works is that it provides a shared workspace for multiple developers to access. Contrary to how it works, the requirements that I have is to created a separate workspace for each individual user(student) that accesses Che, that is to say that student A should not be allowed to touch any files created by Student B. Can this be implemented? How? Where should I start looking?

Assuming I get the exclusive workspaces for Student to work, I also need it to scale with a finite amount of ram (about 72 GB, private server at a Uni with no intention of moving to the cloud due to FERPA regulations). So I was thinking that if each workspace instance would have its own JAVA jvm at most I could do would be about 30 students using Che at the same time, which is not realistic considering the platform is already being used at multiple institutions by about 500 students per semester. So my proposed solution was to somehow modify Che so that there is a queue that receives code to compile using a jvm. So instead of having one JVM running per student I have a set of 5 to begin with waiting for jobs(code to compile). As the queue fills up faster than it empties or if a specific jvm is taking longer than expected to be free for the next job, a new jvm will be started and added to the set in order to scale to the increased workload. Is this possible? If yes, where should I start looking?

My last requirement is that I make the authentication of the student into Che possible from the current authentication method which is through a JWT token that gets passed from client to backend on every request. Where should I look into so I can possibly create a solution for this?

--
Yours truly,
Hamilton Chevez

_______________________________________________
che-dev mailing list
che-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/che-dev



Back to the top