• Welcome to Valhalla Legends Archive.
 

Curious...

Started by IceMan, January 07, 2005, 01:45 PM

Previous topic - Next topic

Grok

Hehe ... Thursday Jan 13 Wow will be down for about the whole day for maintenance.  You might be able to catch them on battle.net then!

As far as the team, I have nothing to do with WebBot, but why not use all your free time to make a newer better faster stronger we-can-rebuild-him webbot, then approach them with not just your time, but with your ideas and your proof of concept?

If someone came to me and said my widely-used program was insufficient for their needs, and that I should let them join my team to make it faster, I might be a little defensive unless they had already proven they could do it better.

Show them.  Then offer to help them.

iago

I like the opensource philosophy better.  You look at the product, find possible ways to improve it, do so, make a patch, and submit it to the author along with a description of why you wrote it and why you think it improves it.  Then it's up to the author to keep or reject the patch.  If the person who submitted the patch does well, he may become part of the development team.  But perhaps opensource programmers are happier about taking critisizm :)
This'll make an interesting test for broken AV:
QuoteX5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*


Grok

There are merits to both camps.  A mathemetician might see closed-source as ridiculous.  If he comes up with a solution to an extremely difficult problem, he must publish the solution to get credit.  The whole world can then use the solution (at least, everyone who understands it).  A whiz programmer who creates an innovative solution to a difficult problem can keep the algorithm "secret" and sell it repeatedly, making lots of money.  Programmers drive Porsches, while mathemeticians drive Pontiacs.  You decide.

iago

I may be too much of a utilitarian sometimes, even if I have to suffer more because of it, but let's put careers aside.

I don't think Spht (or anybody who makes a Battle.net bot) is worried about marketing it and making money off it.  There is no financial motivation to keep a product closed, and discourage people from helping.  In making the bot that I'm currently working on, I keep it 100% opensource public domain (although GPL or L-GPL would have been better, but that's besides the point) and encourage people to help.  And some people do!  The Internet, and interested users, are a fantastic source of cheap labour.
This'll make an interesting test for broken AV:
QuoteX5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*


EpicOfTimeWasted

Along with what iago said, open source also gives people a nice foundation to build off of, rather than having them re-invent the wheel.  On that note though, I'd rather write my own implementation of something if the only other option is to use GPL licensed code.  I much prefer the freedom that the BSD license provides.

Grok

iago, do what you want, I think it does not matter in the end for most problems.  Let each person decide whether to share or not share their own work.  You like sharing, good for you.  All the work I do is "open source" to the company that paid me to do it.  They paid for it, it is their code.  On the other hand, if they did not pay for the development, but purchased only the executable, that is all they get.  If they want source, different price, but I'm equally willing to sell it to any buyer.

Mephisto

#21
Quote from: Grok on January 12, 2005, 06:46 AM
Hehe ... Thursday Jan 13 Wow will be down for about the whole day for maintenance.  You might be able to catch them on battle.net then!

As far as the team, I have nothing to do with WebBot, but why not use all your free time to make a newer better faster stronger we-can-rebuild-him webbot, then approach them with not just your time, but with your ideas and your proof of concept?

If someone came to me and said my widely-used program was insufficient for their needs, and that I should let them join my team to make it faster, I might be a little defensive unless they had already proven they could do it better.

Show them.  Then offer to help them.

The Durotan server won't be down for the extended 16 hour maintenance, instead only the set 4 hours.  So now you'll have an even smaller window to catch them.  :)

iago

Quote from: Grok on January 12, 2005, 01:45 PM
iago, do what you want, I think it does not matter in the end for most problems.  Let each person decide whether to share or not share their own work.  You like sharing, good for you.  All the work I do is "open source" to the company that paid me to do it.  They paid for it, it is their code.  On the other hand, if they did not pay for the development, but purchased only the executable, that is all they get.  If they want source, different price, but I'm equally willing to sell it to any buyer.

We aren't talking about a commercial project or anybody trying to sell their work, though.  People need to make money and survive, and if their only marketable skill is programming, that's fine.  That's not the point I'm discussing in this thread.

And about licenses, the MIT (X) license is the freeist.  It provides unrestricted rights to copy, use, modify, and redistribute modified copies as long as a copy of hte copyright and license terms is retained.  BSD is basically the same, except that they used to have a clause about "advertising" the original product.  They later realized that nobody knew what "advertise" really meant, so they dropped it and it's basically the same thing now.
</history lesson>
This'll make an interesting test for broken AV:
QuoteX5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*


MyndFyre

Quote from: EpicOfTimeWasted on January 12, 2005, 01:09 PM
Along with what iago said, open source also gives people a nice foundation to build off of, rather than having them re-invent the wheel.  On that note though, I'd rather write my own implementation of something if the only other option is to use GPL licensed code.  I much prefer the freedom that the BSD license provides.

That's true in some cases, although I think that generally, those of us who do produce work such as bots want to encourage people to reinvent the wheel so that they know what they're doing later.

When I first started working on my bot, I did a lot of interface development work, and to see the original code would probably embarass me now.  Not only that, but I went through builds before I had anything that would even connect to Battle.net.  What's the point of producing software if it won't do what it's supposed to do?  It took me roughly four months to wrap my mind around the internet transport functionality of the technology I'd chosen.

Now on my next project, which *is* open-source, is already generating questions from people.  For example:


#if MS_1
#region bncs tcp fields (Milestone 1)
private Socket m_sckBncs;
private NetworkStream m_nsBncs;
private byte[] m_bufBncs;
#endregion
#region bnls tcp fields (Milestone 1)
private Socket m_sckBnls;
private NetworkStream m_nsBnls;
private byte[] m_bufBnls;
#endregion
#endif
#if MS_2
#region rcrs tcp fields (Milestone 2)
private Socket m_sckRcrs;
private NetworkStream m_nsRcrs;
private StreamReader m_srRcrs;
private StreamWriter m_swRcrs;
#endregion
#region bncs udp fields (Milestone 2)
private Socket m_sckUdp;
private byte[] m_bufUdp;
#endregion
#endif


This section of code has already started getting people to ask me questions.  What does the NetworkStream do?  What about StreamReader/StreamWriter?  The #if/#else/#endif?

The library that this code from is also designed to support language interoperability.  So I get questions about:

case 0x0201:
EventHost.OnConnectionError(
String.Format(
#if MULTILANGUAGE
Language.Get("fmt-primary-key-inuse"),
#else
"The primary CD-key you supplied is currently in use by {0}.",
#endif
info),
true, null);
Disconnect();
break;


The library contains several data objects accessible by anyone who uses the library, including objects that represent users inside of a channel, the binary friend data, a clan member, etc.  Trying to convert my code into another language or build it into another library is rather futile, because so much is so intertwined  For example:

// from the BNCS parsing:
#region SID_ChatEvent (0x0f)
case BncsPackets.SID_ChatEvent:
// n_1 = chat event id
n_1 = str.ReadDword();
// n_2 = flags
n_2 = str.ReadDword();
// n_3 = ping
n_3 = str.ReadDword();
str.Seek(12);
// s_1 = username
s_1 = str.ReadNTString();
// s_2 = event text
s_2 = str.ReadNTString();

ParseChatEvent((ChatEventId)n_1, n_2, n_3, s_1, s_2);

processed = true;
break;
#endregion

// then from the ParseChatEvent function:
case ChatEventId.ShowUser:
if ((text != null) && (text.Length >= 4))
{
if ((text.Substring(0, 4) == "3RAW") || (text.Substring(0, 4) == "PX3W"))
user = new WarcraftUser(username, ping, flags, text, this);
}
if (user == null) 
{
user = new UserBase(username, ping, flags, text, this);
}
if (this.m_uniqueUsername == username)
{
m_user = user;
}
lock (m_htChannel)
{
this.m_htChannel[username] = user;
}
(EventHost as OpenEventHost).OnUserShown(user);
break;

To someone who isn't working with me on the project, it's probably unclear that I'm using a Hashtable to store the users currently in the channel.  Why am I using the EventHost property instead of using the class's field?  Etcetera.

I don't need to be supporting these guys.  It's also beside the point for why I'm making this open-source.

Anyway....  Just some points for thought.  :)
QuoteEvery generation of humans believed it had all the answers it needed, except for a few mysteries they assumed would be solved at any moment. And they all believed their ancestors were simplistic and deluded. What are the odds that you are the first generation of humans who will understand reality?

After 3 years, it's on the horizon.  The new JinxBot, and BN#, the managed Battle.net Client library.

Quote from: chyea on January 16, 2009, 05:05 PM
You've just located global warming.

dxoigmn

Myndfire: Do you use FxCop?