== Dev Week -- Ubuntu Development for the Youth -- bilal -- Tue, Aug 28th, 2012 == {{{#!irc [17:58] Thanks to you too, ogra, that was an informative session [17:59] if you have any more questions etc, i'm available in #ubuntu-arm around european business hours usually [17:59] and many thanks to the organizers of this event, you guys do an awesome job ! === ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu Development for the Youth - Instructors: bilal [18:00] Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session. [18:00] Hello everyone! Welcome to the session about Ubuntu development for the youth! === ogra is now known as ogra_ [18:01] I'm Bilal Akhtar, and I've been involved in the Ubuntu community for two years now [18:02] As you'll soon learn (or, see), there's a lot more to contributing to Ubuntu than just coding, and there are lots of ways to chip in! [18:03] During the course of this session, if you have any questions, feel free to ask them on #ubuntu-classroom-chat, in this format: [18:03] QUESTION: Why is Ubuntu so awesome? [18:03] and then I'll answer them in this channel [18:04] So, let me start by giving a summary of what Ubuntu development actually is [18:04] Daniel Holbach's session earlier today, titled "Introduction to Ubuntu Development" was a detailed 1-hour session just about this === pundiramit is now known as pundiramit-afk [18:05] I'll only briefly explain it, for more details you can read the IRC logs of that session [18:05] Ubuntu is a complete operating system, but it is built out of small segments called packages [18:07] Every package is written in a particular programming language, then compiled to create a binary package [18:07] the Ubuntu Installer, which you used to install your system, did little more than extract several binary packages [18:08] A frequent question I get from prospective developers, is "Which language is Ubuntu written in? Which language should I learn in order to start developing for Ubuntu?" [18:09] Most core Ubuntu packages, like the kernel (the software that manages hardware/software linkage, manages drivers and hardware, etc), low-level libraries, etc are written in C [18:10] Desktop packages, which form the front-end of Ubuntu, are written in different languages. Most are written in either C, C++ or Python [18:11] Which is why I suggest anyone interested in learning to help in Ubuntu development to learn Python [18:12] Some examples of desktop packages are Software Center (written in Python), Unity (written in C++), Nautilus the file manager (written in C), Gwibber the Twitter client (written in Python), etc [18:12] I choose Python because it's easy to learn from the ground up, and it teaches you the basic fundamentals of programming too, so you can later move on to learning C [18:13] FlowRiser asked: Any tips on where to start looking for python/cpp tutorials ? [18:13] Great question [18:13] For Python, I'd suggest you learn using the official Python docs and tutorials [18:13] http://docs.python.org/ [18:14] The tutorial is at http://docs.python.org/tutorial/index.html [18:15] For C++, there are hundreds of tutorials. cprogramming.com and cplusplus.com are the popular ones [18:15] There are many others a Google away in case you don't like these [18:15] coalitians asked: Is it true java is not favoured(used) in the ubuntu community? [18:16] Java is used quite a bit, but not as much compared to C or Python [18:16] As an example, LibreOffice is written in Java [18:16] There are many examples of Java software in the Ubuntu community [18:18] Another example is Eclipse. But the examples are fewer compared to C or Python, mainly because Java requires a VM to run, like OpenJDK or Sun's Java VM [18:18] If you know Java already, I'd suggest you to learn C too, since Java and C are very similar [18:18] and C is widely used in the Ubuntu community [18:19] CuppaT asked: Could you suggest a python IDE please? [18:19] Personally, I like Vim. But it has a learning curve which many of you might not like [18:20] So I'd suggest Gedit, which comes pre-installed and is easy to use [18:21] Geany is also a great light-weight IDE [18:21] Go with either of the two, and you'll be fine [18:21] coalitians asked: Are python application in Ubuntu(linux) are being migrated to 3.x versions? [18:21] Yes, and no. Python 3.x is backward incompatible with 2.x code, which is why some applications haven't moved over [18:22] If you're starting from scratch, I'd recommend you to learn Python3 [18:23] Very soon, we hope to get everything on the Ubuntu CD moved over to Python 3 so Python 2 can be dropped [18:23] Most libraries have different versions of Python 2 and Python 3 already [18:23] thotp asked: what are the main differences between c/c++ programming on ubuntu and windows? [18:24] Ubuntu has a different software stack. Ubuntu uses GTK+ and QT libraries for graphical applications, to render buttons, text boxes and all. Windows uses WPF and WinForms [18:24] But the base syntax is the same [18:24] and GTK+ and Qt applications can work on Windows to [18:24] *too [18:25] On a side note, if you want to know more about Python 3, attend barry's session right after this [18:25] back on Windows vs Ubuntu c++, if you learn C/c++ on either side, you learn the syntax which means you'll be right at home on the other side [18:26] preferably learn it on Ubuntu, since that's the platform you'll be coding for4 [18:26] kamilnadeem asked: For someone who is starting in CS, where to begin from? [18:27] You'll likely be learning multiple programming languages at college/univ [18:27] They will be teaching you C for sure [18:28] I'll answer the rest of your question later on, as I explain "where to start" [18:28] eklok asked: what makes a good programmer in ubuntu? how many hours per day do you have to invest? [18:28] It has nothing to do with the number of hours [18:28] Quantity != quality [18:29] Many of you have tight schedules [18:29] I myself spend more than half of my day at shcool [18:29] *school [18:29] I, for example, can get many contributions done within an hour [18:29] Others may take longer [18:30] So, to become a good programmer, you just need to find the right thing to do, something which you like. Again, I'll answer this later on, in the "where to begin" part [18:30] on where you should start your journey in the Ubuntu communtiy [18:30] * bilal is really making too many typos today [18:30] thotp asked: so what is the best c/c++ IDE in ubuntu? [18:30] Geany and/or Gedit. [18:31] FlowRiser asked: Regarding to developing cpp applications for ubuntu,do you recommend any good books/tutorials ? (regarding to best practices, GUI, etc) [18:31] Good question [18:31] As for tutorials, you can learn graphical programming from Gtk's online docs [18:31] or bare-bones C++ programming, which you should learn before GTK, from cplusplus.com [18:32] I prefer online tutorials over books [18:32] Many of you will be learning programming in school/college/university [18:32] so that's a good starting point [18:32] However [18:33] in the Ubuntu community, you'll "learn by doing" [18:33] which will be way more helpful than anything school or college can teach you. [18:34] kamilnadeem asked: Not at school or college but learning it by oneself? I am pursuing a course under Hardware and Networking BTW. :-) [18:34] In that case, you can just learn from an online tutorial, like I mentioned above [18:34] kamilnadeem asked: Also how does one progress in languages, general consensus is that Python is the one, one should pickup in CS. How does one scale up the languages. [18:34] If you're starting from scratch, learn Python, then C, then C++ [18:34] then other languages [18:34] if you know one language already, like many high school students and university students learn Java early [18:34] then Java -> C -> Python [18:35] raki1 asked: GTK+ or QT be better in ubuntu? [18:35] Both are equally good, to be honest [18:35] Qt is superior in some ways, GTK+ is easier to learn in my opinion [18:35] pick your favourite [18:35] SamTate asked: Do you think that Vala is the next thing to do after learning some JS and basic PHP? [18:36] Vala is a clean language indeed [18:36] But I'd suggest new programmers to give it lower priority than the others, since Vala simply isn't very commonly used [18:37] After JS and PHP, C would be the logical way forward [18:37] Time to move on [18:37] Now, for the "why" aspect. Why, as youth, should you be interested in Ubuntu development? [18:37] There are numerous reasons [18:38] First, like I mentioned in an answer to a question above, you'll learn by doing [18:38] which will help you in programming way more than any other school/university course will [18:38] You'll learn to solve critical problems [18:39] You'll get the assistance of thousands of talented Ubuntu developers around the world [18:39] You'll learn to collaborate with a team [18:39] and you'll get to meet new people [18:40] As an added bonus, it will look good on your resume, if you're going in the CS/engineering field [18:41] and it will give you experience in programming, and make you a better programmer [18:41] It will set you apart from your peers in school or college [18:41] and contributing to Ubuntu is a really, really good way to spend time [18:42] spare time, that is [18:42] Some of you might think that it might be too much of a time waste [18:42] well, the good thing here is, that it's totally up to you to contribute [18:43] you can spend as much or as little time as you want [18:43] whenever you want [18:43] and if you're stuck, there are people out here to help you [18:44] on IRC (#ubuntu-devel for Ubuntu development, #ubuntu-app-devel for app development, #ubuntu-motu for packaging, etc) [18:44] on community support sites like Ask Ubuntu and Ubuntu Forums [18:44] and on mailing lists like ubuntu-devel@lists.ubuntu.com and ubuntu-motu@lists.ubuntu.com [18:44] raki1 asked: any gtk learning resources or guides? [18:44] The official GTK docs are great [18:45] http://developer.gnome.org/ has tutorials [18:45] helderc asked: Where Ubuntu (I mean Ubuntu not Kubuntu) uses Qt? [18:45] Unity 2d, for example, used Qt [18:45] Quite many applications use Qt [18:45] Ubuntu treats Qt as a first class citizen === raindog is now known as Guest42319 [18:45] http://www.markshuttleworth.com/archives/568 [18:46] mesutcangurle asked: Why Ubuntu doesn't have a junior tasks for new comers or mentors for new comers. [18:46] Which is exactly what I'm getting to [18:46] Now, for the part about where you should start [18:46] Many of you wondered if development will be too hard or boring [18:46] there are multiple ways to help out [18:47] You can contribute to Ubuntu, by helping an upstream project in development. Like in the case of Nautilus the file manager. You can look at the list of bugs on Launchpad: http://launchpad.net/ubuntu/+source/nautilus/+bugs [18:47] download the source code, fix it and submit a patch upstream [18:48] more info on that, on tumbleweed's session tomorrow [18:48] Or you can help triage bug reports. triaging is basically reviewing bug reports from users [18:49] finding duplicates , asking users for more information, etc [18:49] moreinfo on http://wiki.ubuntu.com/Bugs [18:49] or you can help in translation [18:49] you can help in translating Ubuntu to another language [18:50] https://wiki.ubuntu.com/Translations [18:50] Or you can test newer Ubuntu releases in development, report bugs, etc [18:50] There are 10 minutes remaining in the current session. [18:50] You can write documentation too [18:51] or help new users out at Ubuntu, on sites like AskUbuntu, Ubuntu Forums, IRC (#ubuntu), etc [18:51] If you're stuck with anything, the mailing lists and IRC are always on your side [18:51] questions time! [18:52] Okay, so I'll answer some FAQs I often get from prospective young developers [18:53] First one is, do you get paid to contribute to Ubuntu? [18:53] I answer that with: "You get paid, not in money, but in knowledge" [18:53] Second is, how do you get upload rights to Ubuntu [18:54] There are many different types of Ubuntu developers [18:54] https://wiki.ubuntu.com/UbuntuDevelopers [18:54] each have upload rights to a specific part of the Ubuntu archive [18:54] once you have a history of strong contributions, you can apply for upload rights [18:55] one thing which I missed above, in the ways to help Ubuntu, was packaging [18:55] you can help to create packages out of upstream packages [18:55] this was explained in Daniel's session on intro to ubuntu development [18:55] There are 5 minutes remaining in the current session. [18:55] you can learn packaging from developers.ubuntu.com [18:56] FlowRiser asked: How can i develop greeters for Ubuntu ? [18:56] Umm, you mean lightdm greeters? [18:56] Consult the lightdm documentation [18:56] I don't know much about that, sorry [18:56] ajitesh asked: which is better pyhton or c++ for ubuntu dev? [18:56] C/c++ is more powerful, Python is easier to learn [18:57] really depends on what you're writing [18:57] for a user-facing application, Python is usually better [18:57] for low-level drivers, etc, C is better [18:57] _ericcc asked: Do ubuntu loco teams have access to a list of projects they can under take to help out? [18:57] Many LoCo team actively maintain projects [18:58] Some even maintain development [18:58] others just help in translation [18:58] It depends for each LoCo [18:58] so contact your LoCo team. [18:58] As with the case with all open source projects, everyone is allowed to help out [18:58] mesutcangurle asked: why ruby is not used commonly like Python? [18:59] Ruby has picked up more traction on the web [18:59] There's no way to answer "why" it isn't common [18:59] but that's just the way it is [18:59] on Ubuntu, that is [18:59] so, that's it! [18:59] I hope you liked the session [19:00] the logs will be available soon, on irclogs.ubuntu.com [19:00] in case you missed part of this session }}}