Les has been very quiet lately, but that's because he's been heads down working on his Personal Proxy he's dubbed "Agent Frank" (it's got a little logo and everything). He just set up an Agent Frank ?WikiPage with download and install instructions.

I'm downloading now (it's pretty huge - like 11 megs), but the Wiki page has lots of good info, including Les' new acronym, PIIC. ... Very cool. I'm going to start playing right now.
Later... Urgh! It's GPLed! Bleh!

So Russell noticed my late night release of AgentFrank. Cool! Hope it actually works for him.

Currently it's very big, because it's got everything in it, all the JARs and the kitchen sink from everything I thought I'd start using at some point. My actual original code is likely less than 100k so far, if that. Suggestions are more than welcome.

The same goes for the license - all I want out of this thing is to share it and get interested tinkerers tinkering. It'd be nice if anyone who tinkers with it gets credit for said tinkering, but that's about all I care about. Hell, if it gets incorporated into a commercial product, I'd like some credit, and some cash would be nice, but otherwise I'd just be flattered. Is there a license to cover that? Maybe I should research a ShareAndEnjoy license.

This first code dump is very much premature - I'm not even pretending that this deserves a version number. It's more a conversation piece and an a tangible starting point to play with things I've been thinking. It's 99% crap code that apparently works, at this point. I fully expect it to get rewritten before it rates a version number.

So... have at it. Play with it, make fun of it, send me patches and abuse.


Archived Comments

  • Cool! I can't seem to get searching to work, though. If I go to the "archiver" plug-in link, enter something in search box and hit Search, it says: "ERROR opening the Index - contact sysadmin!" At first it was complaining that /Users/stevenf/Desktop/AgentFrank/data/Archiver/_index didn't exist, so I tried creating it. But now it's complaining about: /Users/stevenf/Desktop/AgentFrank/data/Archiver/_index/segments (No such file or directory) Hmm, I just noticed this in the log which could have something to do with it: 1561978 [Handler(] ERROR stderr - java.lang.NoClassDefFoundError: com/decafbad/agent/plugin/archiver/ArchiverIndexQueue$ArchiverIndexTask
  • Aha, it looks like a filename got truncated somewhere along the way... here's the contents of AgentFrank/plugins/Archiver/classes/com/decafbad/agent/plugin/archiver: [lovehound:agent/plugin/archiver] stevenf% ls -l total 80 -rw-r--r-- 1 stevenf staff 1035 Feb 12 14:30 ArchiverFilter$1.class -rw-r--r-- 1 stevenf staff 6332 Feb 12 14:30 ArchiverFilter.class -rw-r--r-- 1 stevenf staff 3737 Feb 10 20:56 ArchiverFilterFactory.class -rw-r--r-- 1 stevenf staff 4690 Feb 6 19:25 ArchiverFilterFrame.class -rw-r--r-- 1 stevenf staff 1560 Feb 12 14:33 ArchiverIndexQueue$ArchiverI -rw-r--r-- 1 stevenf staff 6336 Feb 12 14:33 ArchiverIndexQueue.class -rw-r--r-- 1 stevenf staff 1454 Feb 10 21:30 HTMLDocument.class This is on Mac OS X, archive extracted with tar xzvf
  • Yep, renaming "ArchiverIndexQueue$ArchiverI" to "ArchiverIndexQueue$ArchiverIndexTask.class" fixes it. Sorry about the comment spam!
  • Oddly enough, I got that same error the first time I used the Archiver, but I didn't create the directory and two minutes later when I tried it again, meaning to jot the exact message down for feedback, it worked fine. The results are not matching what I intuitively believe they should return, but I'm chalking that up to my limited understanding of the program.
  • the apache licence is designed to do exactly what you say you're after: allow people to play with it, open or closed, and do what they want with it -- but they must give you credit perpetually. see here for the current licence; make appropriate adjustments and you're set.
  • Les! Sorry to cause you so much strife. I wrongly assumed that you had chose GPL because of political reasons. Here's my post in January on GPL: http://www.russellbeattie.com/notebook/20030102.html#095658 Basically, I give my code away without strings, and I like the code I use to be the same, just in case there's a way some day for me to commercialize it. I stay away from all GPLed code as a general rule. I like GPL, but I don't want to break any licenses. IMHO, the internet was built on BSD, not the GPL. BSD allows commercial use and many times that's what's needed to get to that next technical level. But to each his own, if you go with GPL I totally support that decision. :-) -Russ
  • I do not understand people like Russ that do not understand the GPL but attack it when they get the chance. The only people that i met that do not like the GPL are people who want to use open source software to make a profit without doing any contribution.
  • Tony! Who's attacking? I said "I like the GPL" and "I support your decision to use the GPL". And I stated quite clearly that I give my source code out under a non-restrictive license because I hope that myself or someone else can commercialize it (which is a GOOD thing). Yet you somehow ignore the word "give" and say that people who don't like the GPL don't want to contribute? Don't be a GPL zealot, okay? -Russ
  • Very cool stuff, Les. Thanks for sharing. By the way, are you familiar with Privoxy (http://www.privoxy.org)? I installed it on my OS X machine about a week ago, and am still digging into the config, but I think it shares many of your goals. Worth a look if you're not already familiar with it.
  • I like it! I've been attempting to dig into the code in little bits and spurts for the last week. I'm not quite sure that I've grokked it all -- I'll probably start trying to strip things out to see if I've got the basics down (already got a project set up in Eclipse for it), but that's still dependent on my work load (in other words, it'll happen in the fifteen minutes of spare time I have between eating my lunch and getting back to work). I've been thinking about building something of a similar nature for some time, but never had gotten around to actually doing it. I'm pretty impressed so far. One thing, though, that I might do differently (though you seem to be headed down the right track already) would be to strip the core down to the most minimal basics. In fact, I would even consider (I know this is stepping out a bit) making the proxy piece itself a plugin/module/whatever you want to call it. Also, it would be nice (and I'm not sure this isn't already in there) if plugins could modify the settings of the rest of the system. One thing I would like to see is the ability to point the proxy at another proxy, but I'd like this to be configurable. At our office, they use the Microsoft ISA proxy server, but only have the NTLM based authentication enabled, so non-MS products can't get through it. However, I use a local app that acts as an HTTP proxy and rewrites everything for the ISA server. It works well, but it's a pain to keep all my apps setup for this since I work on a laptop and often switch networks. If I could write some java code to detect whether the outside network is reachable, I could tell the AgentFrank proxy whether to hit the HTTP-ISA proxy or not. Just my $0.02. Great start. I'll have to see what I can dig out of it.
  • If you care about someone else's developments to your code to be freely available, LGPL is perhaps the best option. The Apache license will allow companies to develop it internally and not share those enhancements with you. With LGPL those enhancements would have to be contributed back to you for incorporation in the original code.