would like to contribute

Asked by vSC

Hi,

I am a software developer and a newbie in open source programming -- just configured my launchpad account.

I would like to contribute with development of beeseek. Went through your Wiki and found the concept interesting.

would like to know if I can help in some way.

Regards,
Vijit Chauhan

email: <email address hidden>

Question information

Language:
English Edit question
Status:
Solved
For:
BeeSeek Edit question
Assignee:
No assignee Edit question
Solved by:
Andrea Corbellini
Solved:
Last query:
Last reply:
Revision history for this message
Andrea Corbellini (andrea.corbellini) said :
#1

Hi Vijit,

Sorry for the delay in the response. It's nice to know you are interested in the project: we are always looking for new contributors.

I'm from the development team, and I'll help you discovering the infrastructure of BeeSeek. Here's an overview of it: there are two kinds of components that make up BeeSeek. These are the "node" and the "trackers". The first component is the one that stores and exchanges data with the other peers of the network, the trackers instead are applications that anonymously "spy" the user in order to find new pages. There are many kinds of trackers (some of them not yet implemented): a TCP/IP traffic sniffer, a HTTP proxy and web browser extensions.

For our applications, we try to use Python whenever possible, although C and JavaScript is also used. Also, the "node" uses the framework Django. Our version control system is Bazaar and our code is hosted here, on Launchpad. To get the latest code, run this command: bzr branch lp:beeseek

To help you better, I need to know a few things: do you have experience with Bazaar, Python and Django? Do you already have an idea of what would you like to work on?

You see, BeeSeek is rather a complex project, and the information on the wiki aren't complete, so don't hesitate asking questions whenever you need to.

That's all for now. Thanks for your interest!

Revision history for this message
vSC (vijit.chauhan) said :
#2

Hi Andrea,

Thanks for your encouraging response.

Here are my answers to your queries:

1) I have taken the latest code of beeseek.

2) I have no experience with Bazaar, or for that matter with any DVCS. I am more used to working on Clearcase/CVS.

3) I don't have any experience with Python and Django.

4) And lastly, don't really know exactly what part I would like to work on.

Well, I might have sounded a bit clueless above. :(

- But, I think I can learn fast --> Python and Django
- I have good experience in C in linux environment.

Thanks again,
Vijit

Revision history for this message
Andrea Corbellini (andrea.corbellini) said :
#3

Hi,

Of course it's not a problem if you have no experience with our tools/frameworks. I've asked you such questions just to know how to help you better.

I think a good starting point would be this bug: https://bugs.launchpad.net/beeseek/+bug/603119
It's about the TCP/IP sniffer, which is written in C. The bug itself shouldn't be much difficult to fix, but it will help you taking confidence with Bazaar and Launchpad (later, we can discuss on Python and Django).

So, first of all I suggest you to read this page: <http://www.beeseek.org/get-involved/hack>, you should find some useful information there. Then you should be able to hack. :-) The code you are going to modify is into trackers/sniffer, specifically the file src/sender.c (BfSender_SendRaw). If send() fails, instead of displaying an error it should try to reconnect using BfSender_Connect(). If Connect() fails too, then it should wait some seconds/minutes and then retry.

The sniffer works in this way: it looks for HTTP requests in any caught packet, then sends them to an external analyser. Since the analyser hasn't been written yet, you need a testing script. You can find one here: http://wiki.beeseek.org/AnalyserTestingScript

Feel free to ask questions for any problem you have.
Thanks,
Andrea

Revision history for this message
vSC (vijit.chauhan) said :
#4

Hi Andrea,

Thanks for giving me starting point. I went through the bug page and description and then the code.

I have done the changes in code, compiled it and tested it for the positive case i.e when error not happens and connection and sending is successful. But I think that was not what was supposed to be tested with this fix.

The testing script is not for the negative case. For testing this fix the scenario should be such that connection is made but the sending of message fails and then the connection also fails for sometime.

It can also be kept in mind that when should the sniffer try to reconnect. Should it retry even if the error thrown by connect() suggests that sniffer would not be able to connect ever again. In that case maybe a verbose error message is better.

How should I get this code reviewed? Can I just print the output of "bzr diff" here on the launchpad for starters?

thanks,
Vijit

Revision history for this message
Best Andrea Corbellini (andrea.corbellini) said :
#5

Many thanks for your work! I've assigned the bug to you and marked it
'In progress' to notify other that there's already somebody working on
it.

On Mon, 2010-07-12 at 18:32 +0000, vSC wrote:
> Thanks for giving me starting point. I went through the bug page and
> description and then the code.
>
> I have done the changes in code, compiled it and tested it for the
> positive case i.e when error not happens and connection and sending is
> successful. But I think that was not what was supposed to be tested with
> this fix.
>
> The testing script is not for the negative case. For testing this fix
> the scenario should be such that connection is made but the sending of
> message fails and then the connection also fails for sometime.

Yeah. You can reproduce this situation by simply stopping the testing
script for some time and then restart it.

> It can also be kept in mind that when should the sniffer try to
> reconnect. Should it retry even if the error thrown by connect()
> suggests that sniffer would not be able to connect ever again. In that
> case maybe a verbose error message is better.

Think the following scenario: the sniffer and the analyzer are running
on two different machines. The computer where the analyzer is running is
restarted. What should the sniffer do? It will try to send some data,
but send() will fail. It will try to connect(), but it will fail too (a
restart can take up to a minute or two). In this case, I think that the
sniffer should stop for 30 seconds or something and then retry the
connect(), looping until a connection is established.

About the verbose message: I agree that system administrators should be
warned about such errors. Unfortunately most of the time the sniffer
runs in the background. The only way to notify an administrator would be
to use a log file, but the code for this isn't in place. You are welcome
to work on it if you want to.

> How should I get this code reviewed? Can I just print the output of "bzr
> diff" here on the launchpad for starters?

Launchpad offers a great review system. In order to use it, you should
first:

0. If you haven't already done so, you should tell Bazaar your name and
   e-mail. They will be used for the changelog:
     bzr whoami "Name Surname <email@address>"
   Also, in order to use Bazaar with Launchpad, you should also tell
   your nick:
     bzr launchpad-login vijit.chauhan

1. Commit your code. A commit is a snapshot of your changes and if you
   don't make it, your changes won't show up anywhere.
     bzr commit -m "Short description of the changes."
   If you run `bzr log` now you'll see your revision at the top. You can
   also make more than a commit if you wish.

2. Upload your code branch on Launchpad:
     bzr push lp:~vijit.chauhan/beeseek/fix-603119
   "lp:" is a shortcut for Launchpad code hosting, "~vijit.chauhan"
   means that the branch is yours, "beeseek" is the project name and
   "fix-603119" is the branch name (it can be whatever you want, nobody
   looks at it, but must be unique).
   If you make some more changes in the future, you can use `bzr push`
   without an argument (Bazaar will remember the push location of the
   branch).

3. Go to <https://code.launchpad.net/beeseek>, select your branch and
   click on "Propose for merging" (the target branch is lp:beeseek).

And that's all, if you need any help, feel free to ask. Thank you!

--
Ubuntu member | http://www.ubuntu.com/
BeeSeek member | http://www.beeseek.org/

Revision history for this message
vSC (vijit.chauhan) said :
#6

Problem solved :)

Revision history for this message
vSC (vijit.chauhan) said :
#7

Thanks Andrea Corbellini, that solved my question.