Friday, April 24, 2009

The Road to KDE Contribution

Defining KDE Contribution: work submitted to kde, for the benefit of kde. This can take the form of code, artwork, documentation, translations etc.
Calling it a "road to kde contribution" is really over-stating the matter. It's not so much a road as a sidewalk. For being such a large and complex project KDE has one of the lowest barriers for contributers I have ever seen. If you want to work on an open source project this really is the best place to start. The following is based on my experiences and observations thus far, in hopes that it may serve as a quick guide to those of you considering becoming a part of the kde project.




Step 1: Deciding where you want to contribute to kde:

Determining which opensource project to contribute to is an important matter. Think about it, you are committing time and effort into this project, so choose your investment wisely. You want to pick a project that you are passionate about and that you will use. That way you will be able to consider the application from both viewpoints, developer and user, and in effect help make it that much better.

That said, if you choose kde as your project you have at your disposal numerous applications that you could contribute to as well as quite a few backends. If this is your first time joining a large opensource project I would recommend doing what I did. Find a small application with a simpler codebase that way you can learn the ropes without getting burned. In my experience kjots was an excellent starting application. There are many others, just have a look through the kde.org site for more kde applications that you could help with. In general if it's a simple application, it will likely have a simple codebase (though exceptions probably exist). That said, it's more important to work on an application you enjoy using.



Step 2: Approaching the developers.
Once you have chosen your project it is now time to approach the developers of that project to ask them where your services would be most useful. My preference in this case is email, but email is only useful if the application is small and there is only really one main developer. If you have chosen a larger application then the relevant mailing list would be the place to start. You'll want to subscribe to the mailing list in any case.

This step is "optional" but if you intend to continue contribution on a long-term basis and your not just submitting a single patch then it's probably a good idea to introduce yourself to the people you'll be working with. My experience with this step has been very positive. You'll find that the kde developers/artists etc. are generally very kind and considerate. You'll also quickly learn that they know their stuff and thus working on kde provides you with a very good opportunity to learn from some of the best developers out there. Keep in mind these are people that are doing this because they enjoy it, so it's not just a matter of churning out code, a lot of thought and effort is put into each project. Thus passions will arise, and from that you'll see a lot of good work. (Please, understand that being passionate about something does not equal you being rude to everyone who has a different idea, argue your points respectfully. No one ever changed their opinion on something because someone called them blind or stupid).


Step 3: Miscellaneous Items

Some final items to note when starting your kde journey.
  1. Just because your the greatest developer since RMS doesn't mean you won't make mistakes here or there. When you do, usually some one will likely try and correct you (based on my observations). It's best not to worry about your ego at this point and thank the person for their correction. It's not an ego thing, it's okay to make mistakes it's human (just as long as your not deliberately sabotaging things).
  2. Working on KDE is fun, don't let it get in the way of your life, or your job, or your schoolwork etc. People understand if you have to study for a test.
  3. If your going to be working on code, I highly recommend you spend some time reading the code at websvn.kde.org . This is an excellent way to improve your programming skills and to learn the kde framework. Also, you want to try to stick to the code-conventions of the applications your working on.
  4. One final note for developers: COMMENT YOUR CODE! I don't know what you were thinking at 3 a.m. four months ago. I don't know what I was thinking at 3 a.m. four nights ago! So if your doing something non-trivial please leave a quick comment explaining what this is. I don't mean that every time you declare a variable you should put in a comment stating that you are declaring a variable. But if you just added a function that involves a semi-complex algorithm let us know what that is for and what it does. This is especially useful when debugging or trying to learn new api etc.

Well, I hope you found this helpful and enlightening. If you have any questions feel free to ask me, or ask on irc. If you need help finding something to do, the people on irc are very helpful for that. They helped me a lot in that regard.

Tuesday, April 21, 2009

Thursday, April 16, 2009

Evaluate the Expression

/*below you can find references to why I'm writing this..sorta

http://www.forbes.com/2008/06/18/college-majors-lucrative-lead-cx_kb_0618majors_slide_2.html?thisSpeed=30000

http://www.bls.gov/oco/ocos267.htm
http://www.bls.gov/oco/ocos042.htm

//other important includes

#include < string >

using namespace std;
string main ()
{
string differences = blah.get_text_from_site( http://www.eng.buffalo.edu/compscie_vs_compeng.php );

if (computer_scientist == computer_software_engineer)
{
cout << "they are the same that article is lying";
}
else
{
cout << differences;
}

return your_thoughts_in_binary_please;
}


/* No, this won't compile....the reason being it's not really code. I just did it this way because it's a good way to express yourself. Try it, next time you write a letter to your close friend do it in lisp or MIPS and they will understand you more clearly and yes it's very late I am an insomniac. */


//comming soon: my "article" on the road to becoming a kde contriubutor/developer (things you should expect/do)

Monday, April 13, 2009

Developer's Ethical Responsibilities

What responsibilities do developers have to the consumers of their software. That is a question I have been pondering lately. I'll use myspace as an example. This is a "social networking site" where people put up lots of information about themselves that is then basically available to anyone who happens to stumble upon it (Ok so the developers put an option for private accounts but still). This website has been in a bit of controversy in the past over the way that some of their users where using it to "abuse" other users. On the one hand, the site in so far as we know, was designed to allow people to connect with each other. However at this point it's original intent is being subverterd and it's now potentially posing a risk for it's users.

Well what does that have to do with developers? Well obviously they had to build the site and it was they who made it possible for example for you to search for other people using advanced searching criteria. Without the developers there is no website. On the other hand it is the users who put up all that information about themselves and allow others to view and comment on it.

So what my question really boils down to is this, do developers have the responsibility to consider the possible malevolent uses of their projects? Or is something like myspace really just a tool and misuse of it is really the fault of the users and not the developers. Furthermore, as members of a community, if the developers realize that this misuse is taking place what is their responsibility to the community with regards to their handiwork. This is probably a more "innocent" example but it still holds. This is really just something I like to think about as I think it poses an interesting dileema and ofcourse we can explore other types of software not just social networking, the latter is just an easy target.

I don't really know what the correct "answer" is or if there can even be one but I'd be interested in hearing people's opinions on this. I think this is an important question going forward with KDE as the desktop is seemingly becoming more and more intertwined with the internet. Thus it seems looking at these kinds of "ethics" questions is a sensible thing to do.


In other news, finals are comming, after which I will have more time; so I plan to go back to the orignial intent of this blog, which is to follow my "journey" into kde contribution. I'll try to keep this blog more "code" based as opposed to random musings such as these since I find those blogs more interesting to read anyways. I've been really interested in C# support in qt/kde so I may have a look at that in my next post.

Building KDE Svn

I am thinking of going ahead and switching to kde svn . Up till now I've only compiled the parts that I felt I needed. So I'm a bit "green" in this aspect.

My option now seem to be:
1. switch to a distro that has kde-svn packages.
2. Build it myself.

1. Pros: I don't have to recompile all the time etc.
Cons: For a lot of those distros I would be forced to use svn as my default which would not always be ideal this early on.


2. The pros and cons are just the inverse of the first option.


My preference right now is option 2 as it is less limiting. However I worry about compile times.
How long does it take you to compile a basic kde svn setup?

Right now I have a 2gb ram Core2Duo 1.66ghz anyone with a similar setup?

Any advice? Anyone know a good distro that might circumvent all this?

Tuesday, April 7, 2009

Temporary-Post-Used-For-Style-Detection-Title-225966169

Temporary-Post-Used-For-Style-Detection-Content-225966169

=-=-=-=-=
Powered by Bilbo Blogger

Sunday, April 5, 2009

Crazy Drivers

I remember four years ago, getting a wireless card to work took an act of congress. So bad an experience was it for me to get my drivers to work, that when I set out to buy my laptop I took drivers into account. I even opted for an Intel video card as opposed to the more powerful nvidia one due to the available OSS drivers (all but demolishing my gaming experience). I did a pretty good job with my selection and all but one thing worked out of box on nearly every distribution, my wireless card. Yep, I totally overlooked that it was a broadcom card, thinking all I needed was firmware. So why is it then that 2 years later my wireless driver keeps dropping the connection on jaunty? My windows partition does not have this problem at all (errm... which I keep for the sole purpose of testing kde on windows of course!).

Speaking of crazy drivers, the other day some fool with a car started turning INTO me. Yes, as in we are driving side by side, and they had no room in front of them to pass me, so they started turning INTO me. It took me 3 seconds of pure shock before I slowed down, let them pass and began furiously pressing the horn. By that time half of his car was in my lane.

So people, fix your driving. Broadcom, fix your drivers to WORK PROPERLY on Linux, because you see like that foolish driver almost turned my car into a paper weight, your drivers are turning your product into a paper weight. All that effort planing and designing your chipsets and all of it is WORTHLESS if it doesn't hold a connection. How about, if I worked at the power station near your factories, and told you that if you didn't use production models designed by my friends, I couldn't guarantee full support. Then when you used your own models because presumably you found them better. I decided that I would cut your power ever 45 minutes, for 1 minute. Then when you complained about me hurting your productivity and ruining your products I told you just where I thought you should put your "ruined product". Of course you could then move your factory, but it would cost you quite a bit wouldn't it? See my point?

Having said that, does anyone know of a cheap wireless card for a laptop, that would "just work" and work well on Linux? I have a dell inspiron 640m (same as e1405).