 Good morning and welcome to this special session. I will not take much time, but I would like to tell you in a few minutes why this documentation is important and why through this documentation and through interactive communication we should be able to contribute much better to the global open source community. I realize this when as a part of the major project National Virtual Library of India, one of the partner institutions had uploaded a whole lot of code, but the code did not mention what part of the code was picked up from open source or open source libraries. It did not attribute the correct reference to that code. It did not mention who had written the code which was written separately from the open source code. It did not mention even the organization's name. In short it was a very pathetic documentation. I was told that the team was busy developing software, so therefore they will now be documenting it. And then I realized that perhaps the problem is in the kind of education that we give to our students where we teach them programming, but we do not explicitly tell them that any program without attendant documentation is absolutely useless in the larger framework of use of such programs by large number of people. Now all of you would have done a course in software engineering sometime or the other. Am I right? Anybody who has not studied software engineering has a course? Okay, a few people. Well, that is sad, but not so sad because those who have studied software engineering only remember the analysis methodology, the design methodology and everything else which is technical except that software engineering fundamentally says that you have to document everything that you do, including analysis, including design, including coding, including testing, and that part is not taken care of. Another syndrome that needs to be blamed here is a syndrome associated with all of us Indians. As I often say, we speak a lot, we read a little and we rarely write. Now as software professionals, we do write code, but our attention is limited to writing code. We don't even write a few English sentences in the English code that we write otherwise. We rarely mention our name. We rarely mention the name of the organization or institution on which we offer doing it. There is no mention of the project for which this is being done. These plain English sentences in inline coding, which are considered a must in practically every organization in the developed world, is completely missing from our cycle. And the assumption that let me write the code, let me get my functionality right, and later on I'll document it, does not happen. If the documentation is not something that you start with, you will never end with. Now I realize that there are about 100 interns who are coming from various places and most of them are not accustomed to the idea of building documentation as coding proceeds. In fact, building documentation before any line of code is written is a fundamental requirement of any professional software engineer. Now that is rarely done. See that as it may, going forward every one of us interns, professional software engineers and others who are required to develop any technology artifacts which works and provides functionality in the form of software must necessarily write accompanying documentation. Now realizing what was happening, not only here but everywhere else, I thought of requesting our project coordinating office to structure a beginning session. This one hour session is not all that is there to documentation, but this is something which will tell you what is, what must be minimally done. After all you all write your reports on wikis, am I right? Most of you would have wikis of some kind and on that wikis you will be writing some reports. Similarly can you correlate any paragraph that is written by you on a wiki talking about a program that you are developing to the program itself because the program whether it is cc++, java, python code would be sitting pretty in some other directory of yours in some sub directory of yours along with other code. Its description in the wiki is being written by you because you are being forced to write a report on wiki. It has perhaps never occurred to you that there is no chance in the world for anybody to connect whatever you write in your wiki to the code that exists in your sub directory. As a result when the code goes out as an open source code which will be proudly releasing nobody in the world can figure out what that code is doing, why it is doing, what it is doing, who wrote it, when it was written absolutely nothing, absolutely nothing. For the interns I am announcing some harsh measures. If inline coding as appropriately decided by your teams and combined team here is not there no intern is going to get a certification of completion of internship period and there will be no confusion, no argument on this. As far as software professionals working on various projects in IIT Bombay I give them one month's time. At the end of one month I will personally investigate whether they have brought up their documentation to the minimum desired level or not. If they are not they will not be given their salaries from that month onwards. This might appear very harsh but there is nothing short of a harsh treatment that is required to cajole our mindset to change. As we change this mindset we shall not be able to call ourselves professionals of 21st century. In fact we are not even professionals of 20th century which is possible because the professionals always documented everything properly, they were templates of documentation. I understand that interns have not developed any templates because their mentors who are guiding them they themselves have not developed any templates for them. So obviously if I am your mentor and I say write code you write code. If I had said write on day one that this is the template with which you start. You first fill in which project you are working in, what is your name, what is the name of the team, what functionality you are doing, what is the reference to Vicky. Unless you write that you will not write a single line of code. No mentor has ever said this to you I suppose. And you did not say it to yourselves because it did not occur to you that writing that is at least as important as writing the code itself. Without it the code loses its value particularly when it is intended to be used by larger community across the globe. All of you use some open source software or the other. You must have analyzed thousands of lines of code for its functionality and so on. How many of you have paid attention to the minimal documentation that accompanies such code? More importantly, how many times you would have cursed the original author of that code saying kya likhaya kuch sabaj mein hai ata hai, there is no documentation. Now you have every right to be critical about others but are you self-critical to the same extent? Are you not doing the same thing by producing code which somebody else will say kya likhaya hai hai imel ugan? So that is not all. And that is the reason why I am suggesting these harsh measures. This will apply to all of us, including me. Fortunately, I don't write much code. I only write documentation. But it is very, very important. Now, the team of Yugansh and Rihar, can you raise your hands please? Under the leadership of Parag, Parag, he is the program coordinating office chief here. They actually do project management for many large projects and they are the ones who are required to set up such standards. Actually I must fire them that anticipating hundred odd interns would be descending in IIT, which they do every year, you should have proactively decided to do this and release this, but better let them never. So please listen to whatever they are suggesting. They have prepared some kind of a framework that you should follow. Arguably, this is not the last word, there could be many variations or something. But one thing is without any doubt that you will not write a single line of code from today onwards unless some basic minimum documentation is written, you will not write, period. No matter whatever is the urgency of delivering that functionality. And believe me, writing simple documentation, filling up templates does not really take more than 15 minutes in a day. But if you don't spend those 15 minutes, then there is a problem. Of course a proper documentation requires iterative reviews and corrections. I've learned this from some of great teachers here, my own guru, late Professor Kekre and Professor Sukhatmeh, when I was dean of resources, I would write a later overnight, a rather wrong later, to some group of alumni regarding discussions about some donation and I will send it to him as a courtesy as the director saying, Prasukhatmeh, I wish to write this and they will say thank you, I'll get back to you. And for two days he will not get back to me. And when this happened twice or thrice, I went to him and I said, what's the problem? He says, no, I have circulated it to three other colleagues. Then those three colleagues look at that, add their own thoughts, correct sentences, change phrases and get with that back. Then Professor Sukhatmeh would personally sit across and edit that. One page later would take three days or effort by three senior professors to write. That is the importance given at the highest level for proper documentation, particularly when the documentation is either going to some very critically important people or is going to a large number of people who will individually read it and interpret whatever you are. So that is the precaution that we need to take. And this is part of professor communication. So I'll not spend more time elaborating this, I hope you understand this. For the people who have come late, I will repeat my harsh decisions. They're not really harsh, they are for your own benefit. Number one, any intern who from now onwards does not first write minimum documentation that is required for whatever you have done. And going forward does not complete such documentation for every line of code that is written and delivered, will not get the internship completion certificate. For all programmers and software engineers who are working in IIT Bombay, they are actually being paid monthly salaries. Reasonable good, I would say not very good, but reasonably good. They are being given one month to correct the situation, first and foremost, to write the template-based documentation and connect it with whatever code they have written so far, at least in last one year, let us say. This may take about a few days of time. Going forward, they must ensure that they and their teams write appropriate documentation such that the code, as and when it is released to open source community, we should not become a laughing stock of the community. But rather, we should feel proud because people will say, huh, IIT Bombay has done reasonable document. Otherwise, just like interns will not get their certificate of internship, my staff members will not get their salary after one month. And that I don't, those who know me know that I don't generally give threats which I cannot execute. So this is actually a threat because we need to move ourselves, shake ourselves out of a slumber which we have gone into. It's called the zone of complacence. We are very comfortable. IIT environment is good. Food, as people reportedly said, is reasonably good. People are used to it. The staff members who stay here, they've got quarters here or nearby. They're all happy doing whatever they're doing, which is how it should be. And of course, they're doing a lot of creative work. All of you, I admit that and I admire that. But don't do it because all that you do amounts only to 50%. The remaining 50% decides the quality and acceptance of whatever you in the global community. So please pay attention to this. I'll repeat again that whatever they are showing today is not the final word. This is the first attempt that they themselves have made in giving you illustrations of some documentation and suggesting some documentation framework. It is perfectly fine that individuals or teams amongst you come up with suggestions for such templates. For example, if you are working on some peculiar problem, which requires some additional documentation or different documentation. Or if you feel that the framework that is being given could be augmented or corrected or modified further to make it better. You're most welcome to put your ideas. I would suggest you start a idea contest. In fact, we'll even honor individuals and teams who come up with better ideas of documentation, particularly simplifying it such that if there is a readymade template, then by editing it simply within a very small amount of time invested, they should be able to get a comprehensive. So that's all I had to say. Thank you so much.