 Hi. This is Meethams. I work at CRIP-IT, International Institute of Information Technology at Hyderabad. This is all about a project sponsored by Ministry of Human Resource Development. This project is run by the Central Government of India. The project name is Virtual Labs. So, in this talk I would rather tell how we are achieving things to be done. It's about developing several labs and testing them and releasing them. I would like to walk through the process, how we are dealing with it, and I would like to have suggestions from you people how better it can be scaled up and taken forward. So, as I said, Virtual Labs is a project which aims to create a lab space for the student, a virtual lab space, not needing necessarily for the student to go to a physical lab and do the experiments. And this project is run across several institutions, several IITs and tripletes and other institutions. And there are two kinds of labs. I would... So, this is the website of Virtual Labs, vlab.go.in. These are the broad areas of Virtual Labs you have labs in. So, basically there are two kinds of labs known as simulation and computational labs and there are remote triggered labs. If we want to teach a student how generator works or how a robotic arm works, possibly all these IITs facilitate that robot to be used by other students across other colleges and universities. So, what a student needs to do is have a browser in his own computer, goes there and tries to connect to those devices. He writes a program to control the robot and he executes it in the browser and that action is executed by that robot over there. It's all captured in a webcam and streamed to the student later. So, these types of labs are called remote triggered labs. By this several IITs commission their motors, generators, electrical equipments and electronic equipments to be utilized by people across. So, these experiments are called as remote triggered labs. And there are other computational labs known as simulation labs. Whereas, if you want to teach a student how to do C programming, how to do image processing, things like that. These labs are called as simulation and computational labs. So, for this all a student needs is to have a computer with a browser running in it and he goes to the URL, books a slot and does the experiment. So, there are around 180 simulation and computational labs around. So, as I have shown it here, these are the broad areas of the labs people keep on developing. And the developers of these labs are professors across all these universities and people working with them. The research scholars and the programmers working with them. So, this is the community of the developers right now and the motto of this project is to grow this community of developers. The project is trying to increase this community and open this project up. So, that several developers across can come and join and contribute their own experiments, their own labs. And there is sudden workflow for this development process. People just sign up at a portal, get their accounts and start with developing their labs and they touch them and they deploy. And at the end of the day all the normal engineering colleges should get access to these labs. So, there is a private cloud that needs to be deployed in each of the colleges. And there is a central instance running where students can just connect to get connected to that and do the labs. So, this is the architecture of the labs basically. And to show how a computational lab is, I will walk through the lab how things are there. And we are a team of three people who provide the infrastructure and the platform for these developers to develop their labs, test them and distribute them. So, this is the website which we maintain and run at TripleIT Hyderabad. We categorize all the labs and I would like to show how lab works and then deal with how the community gets in contract with this infrastructure provisioning team and how a lab gets started and how it gets developed and all. So, for example, computer science has all these labs, data structures, computer programming, problems solving and all this stuff. I would walk through a lab, a sample lab. So, now I am assuming a roll up for a student going to this URL, reading the introduction about it and there are a list of experiments. Right now each subject is divided as a lab and each lab has 10 experiments in it and there are target audience for each of the subject. The first third year undergrads and first year post grads and courses aligned to these labs are categorized and even published over there. Each of the university has some course aligned with this lab. So, for example, this is an experiment in the image processing, point operations. There is an objective of the experiment and there you have the introduction. Here is the theory which the subject expert in image processing understands. A student is supposed to read all this. It is all about applying linear function, non-linear function and all the stuff to an image and here is the algorithm and formula. Here he reads the procedure of doing this experiment and this is his real experiment space. So, basically here in this example student is supposed to choose an image. He is applying certain slope with certain offset and this slope and this offset is applied in an algorithm and that algorithm is executed in some C++ programming language. So, this is what the resultant image would be if we apply certain slope and offset to that image and if we execute that algorithm in the back end this is what a student achieves. So, basically to teach this there is a professor who conceptualizes all this part. So, we have to do all these experiments in it and all. So, there are people working with him, the programmers, they make all this programming in it and in the back end they are running a C++ program which gets compiled with these values substituted in the algorithm and when they run it the student gets the resultant thing and this is how student is supposed to learn using virtual apps. So, here the contract is between the developer and the infrastructure providing team as in B. So, what we do is we make sure that the developer has a server on which he can compile a C++ program and we provide a test server for him so that he makes all his testing in that test server and then when he wishes to release it as a release of that lab that lab goes and gets deployed in the deployment server and then for every each and every release that gets packaged as a Debian package and put in a local repository and the plan is to have the private cloud set up in each of the colleges and they get updates as long as as soon as the developer commits an update it gets packaged and sent as an update to the private cloud setting in the college. So, for this initially we had so this would be the schematics of integration how a lab developer gets in contract with the infrastructure provider and all. So, every lab developer has a workspace which is his own machine and he has a version control server he has a test server, a deployment server and all these servers are maintained in the backend and now we have a project management portal which basically is redmine with custom built plugins for it and a lab developer when he gets an account he just pushes his such public keys over there and using that interface he creates a version control repository he checks it out and he just fills the server side requirements which he needs in that portal those get installed and a test server will be commissioned with those server side requirements installed in it and then basically he can test in the test virtual machine and then he can release it and it gets released. So, initially we started with the first year this is the second year of the project in the first year we had version control server and a UI toolkit. UI toolkit is basically like a mini content management system. So, if we go to each lab we just took care in such a way that each lab has an interaction section list of experiment section and there is a blue icon something and all. So, what we felt is developers should basically put their efforts in making the lab rather than doing all this interface and stuff. So, we gave a mini content management system which basically is a set of HTML file and CSS files. So, when he creates a version control repository over there when he does a first checkout he gets this UI toolkit with him and there is one single HTML file where he needs to write all this introduction. So, each of this section will become a section tag in the HTML file and he fills in this thing and when he does a commit it gets all this proper shape and stuff. So, in the first version during our first year of this developmental framework we had a version control server and this UI toolkit and we had to deal start with 30 developers across. We had 46 accounts for this SVM server and the test server. I just used to manually create those accounts and ask for their SSH keys, they used to mail me the SSH keys and then we have a test server where they just go and put their code in public and each of the developer has his own home directory and he has a web publishable directory in it. So, when the developer feels that his code is running fine he puts his stuff in a directory called Final Life Unveiled from which we used to pick and just push it onto the deployment server and whatever the software site requirements they need like the C++ compiler or Python compiler all those things they used to mail me and we used to handle manually install them, go and install them in test servers and the deploy servers and if they need a database access all that was in mails and I just we used to do stuff manually and then later we had a kind of platform as a service scheme where we picked up RedMind. RedMind is basically a bug tracking tool where you can submit issues and products. There we have made some custom Ruby plugins, Ruby on Rails plugins to make this process into a smooth way. I have my colleague here, Shweta, she would like to explain how this portal works and all. Hello everyone, this is Shweta and I work for Virtual Labs. As my colleague told you, what is the process we follow and what are the models that we have built in order to make the labable server easier. So I will just explain you how our portal is used in order to deploy a lab. I mean any lab. So first of all this is an open source tool which RedMind which we used to customize in our way so that it is good for our infrastructure. So we have developed some plugins and this is developed in Ruby on Rails and here I will tell you a sample project how to deploy it. Just go to the project. This is an example lab. This is a lab in GNG01 in the lab. And the members for this particular project meet with the lab over the professor and also the persons working under them. I mean whatever in the lab. Maybe it might be a program under them. The main process that we have developed is SSH key. So the main motive of this is to provide a key authentication to the server. We have a RISWIN server which is a development server. So basically this is a means of authentication for that particular server and also in that server we also provide the UI kit where we follow the model to control the architecture. So I will tell you that later when it comes to the versioning. After you update your key here then you get access to the server, SSH server and then later on you move to the SSH admin plugin where you create the repositories and here after just create a new repository here just give a name of the repository and the description of the repository. So let's see what you get with the repository. Then I will explain you what we are providing. So after you create your repository you have to do an SVN checkout of that particular repository sitting on the server. When you checkout this repository you get a local copy of this directory that is sitting on the server and you can work on your local mission. You know how SVN works right? So it's just a commit. Normally whenever you check out an empty repository your revision is one. So here you will get a UI kit sample where basically the components we got from the lab developers who are our processes are like we don't want to worry about the UI part. First we have the content developers. We need to focus on the content. So what we have done is we have provided them the UI kit which is like it will help them not worrying about the new part of it. So if you go to the lab you will have a content.html index.html. So what we do is whatever you need to change the content that is change the content.html and index.html will inevitably load the content when you run a maker. So this is the basic content.html. So content.html is nothing but there are sections and headers. Each and every particular section is like an introduction list of experiments and inside the list of experiments we have the objective procedure and simulation etc. So what the lab developer needs to do in this is they have to just edit the div tags here and just they need to worry about the content. Not any of it. Not the style of it. So after editing some of the content this will show you how these are reflected when you deploy it. So actually in order to improve this because people say that they don't know html also because purposes sometimes they won't understand html. So what we are thinking is we are trying to put this into org mode and convert it to html and then do a build. So that will be more easier for them to work with. So org mode is a basic editing tool. It is a plugin for emacs. So after doing the changes you just do an SVN comment you are a revision tool. So again let's go to the portal and also I want to tell you about the server side requirements here. Normally when a lab is developed you need some server side requirements because whenever you do simulation there is some software back in that is running. So you always give your input to the software and execute and show you the results. So you have to give us the software requirements that need to be run on the test server and the deploy server. So basically we have some restrictions here as we are running a Debian operating system in the back end we are asking for the Debian packages and here if you just request for a package and there is a wrapper in the back end which is doing an app get to install the package in the server. So here this package installation is not fully automated we are just running a Chrome picking the packages which the developers enter here taken into a JSON file and app get is run by a Python script in the back end. We want to improve this maybe by implementing puppet or any configuration management to automate the whole process. Actually we are running a Chrome job in the back end in order to install the packages and next we will go to the releases where the actual part of the deployment is here and basically because there is some Python wrapper that we have written in the back end which is doing an app get installed. So for every 30 minutes we are running a Chrome job. So what is the problem? Yeah I mean that is what our future thing is we just wanted to tell how that is what we need suggestions from you because it is still a developing stage. So here in order to test your lab that you have changed in the local machine first just do a test lab and then here you give the repository name that you have checked out and also the revision number sorry revision number is 2. So now from the devil machine there is a makepile lab which is run and you get the final build and that is asking to the test server and you have all the software requirements on the test server as well as the deploy server. So you can just check the link on the test server first. So we have changed the content here welcome to rootconf and also the rootconf introduction stage in rootconf. So this is how we give the testing platform So normally whenever before when we were not there I mean they were like they used to deploy it without testing so there were a lot of issues from a lot of people the users who are using like people are not liking the lab because there is some connection problem there is some software problem which is not running in the packet so there were a lot of issues and we have come up with the solution of having the test server and then deploy it. So when you think that everything is working in the test server then you make a call and tell your lab developer I mean the professor and then release the lab for the final deployment. So when you do a maker release the lab is automatically deployed I mean whatever is there in the test server you push to the deploy server So you need to actually sign an agreement where you say that your content is licensed and also mostly your software which you are using are not operating and which are open source So it should not be operating software but you have to provide a license for it This is the test server test.match and lab server This is the deploy server So here we are enforcing in a way that they can release only one when they are tested The recently tested lab will be deployed So it's a kind of enforcement for them to definitely test it before releasing And this is the end of this portal And normally obviously the lab development is not like you can't freeze the lab development Obviously the student wants more So obviously we are making sure that whatever feedback the users are giving will be reached to the lab developer in order for the continuous development and the lab is a developer Yeah But I need like once a year so it's not difficult to do that Code coverage Yes you need to append the code which is added this way Do you copy? Yeah in order to Yeah you have to dump the stuff from the test server to the deploy server Yeah Yeah We have it in the future We would like to migrate everything from SP and Google So then maybe like to have this come in I mean once you see that So then you get to keep going Exactly Now we have like this We have picked up RedMind for issue tracking And made this custom plugin on top of it And we have open LDAP which accounts for all the developers And then these are the custom plugins So it's such key-based authentication and SP and admin You have to look at it with two themes And packages request in the RedMind portal It's basically taking them in a JSON file and installing it, running an app There's the lab and the server Relays only if the test is finished And then we are currently making them as Debian packages manually We have written some manuals and running the build So eventually the packages get created And then we are pushing them to a local app repository and making live CDs and per-college installations We are doing that So the plan is to, now we are doing updates to the repository For this, we have the following part We have a 2-IDM X36503 That's 2GB of RAM in it And 5GB hard disk And we have Debian as the base operating system And virtual instances Hybrid virtual instances using OpenVC and KBM for fully virtualization And yeah From the next update onwards Debian is not giving OpenVC It's deprecating it So we are planning to move to LXC It has LXC is there in the kernel itself And then we are using Apache core web server And all mod-regards proxies and stuff to point to all the virtual machines And RedMind as the base We will have RedMind Yeah And the problems we have The kind of problems we have is Actually Right now we don't have Test VM per each lab We have a test server where things are running So So we have a plan of having 1 Test VM per each lab And This bit constantly probably we will go with hybrid virtualization In terms of resources Of course But we had good experience with LXC and OpenVC So this problem of 2 labs requesting different versions of each software could be answered by this And we have invested some time in looking at functional package management And then we came across to a conclusion that it requires a lot of space for storing storage And there is another problem Lab developers are requesting particular version of library or particular version of software And we don't know if we do a system upgrade if their lab works with that software or not So that kind of testing we want to do and automate So if we do a security upgrade and that package gets upgraded We don't know if that lab gets broken or if it still works There is that kind of thing in it So these These are our future plans We want to have a parallel virtual machine And we want to have an auto builder of packages which we are doing manually right now And we want to keep APIs for persistence. Right now we are giving only the UI toolkit to the lab developers So this would make the users there would do 4 experiments, log out, come back and continue from the fifth experiment And we want to do something for the remote triggered labs Right now we are concentrating only on computational labs So labs which deal with remote triggered like controlling robots or electric motors generators, we want to provide some kind of API for them And we want to write an auto builder distro mechanism to ship them for the college and individual use and the thing is to migrate everything from HVET to get And this year we have running the deployment server for disaster management and splitting it And the plan is to make it as a CDN All the mirrors would come under CDN nodes So these are our future plans which we want to plan And we just came here to learn about various automated stuff like puppet ship and other auto builder tools and we want to go back and implement them This is it If you have some suggestions There is a very English VLabs I can download virtual labs for this year And in fact our trials are to increase this developer community We want to have people around to develop their own labs teaching programming languages, databases and all, design experiments There are very good areas like we could teach system programming and basic design skills to the students So we basically provision virtual machines and give some kinds of exercises where people can come and learn basic commands and other stuff How many of you are managing this? How many of you are managing this development? You mean Yes sir The portal stuff We are three of you Yeah, we are three of you Basically one guide is all kinds of support contract with the developers and tries to help them And before to the plugin development So Now we want to go back and implement some kind of configuration management system and tools We want to make the whole process IIT, IIT, IIT We also want to open up this infrastructure development project And we would like to developers to come across and join this So Right now we have posted all the code and configurations and we want to move all this to some GitHub or Vittoria stuff with developer wiki and technical notes We also conduct some workshops in order to educate programmers with SVM and GIF So all the content of each lab is released under creative commands and the software they make all these experiments are created on a GPM This is commanded from the government Anyone could just come and develop labs and do their own sorts of experiments So So So So So So So So So So So So