MLDonkey Downloads Import Module Development
Development in progress.
Thursday, June 29, 2006
Bounty-based development model...
...a viable solution for funding open source development?
As I mentioned about a week ago, I'm taking on a medium-sized database project for development to generate some income; this naturally drops Hydranode development to near the bottom of my activity listings; however, this gave me an idea.
There has been discussions about "donate-based bounties" since last summer already, and the topic has raised on a monthly basis. About a week ago a bounty was set to implement mldonkey files import support to Hydranode; price was determined and currently money is being gathered for implementing it. The price was fixed at 80 EUR, out of which 20 eur has been donated so far. If you want to support this effort, send a donation via the Make a Donation button on the right; make sure to note in the comment that this is for "mldonkey import support" development. Once 80 eur has been raised, development will begin on the support and it will be released publically once completed.
All this gave me an idea. Why not implement this functionality in a semi-automated manner, publically available. The details of the system as the idea develops follow.
There are three parties involved in the system - Client, Implementer and Bounty Manager. Client makes a request (via a web-form or email) for a bounty; say '4+gb support for edonkey module'. Bounty Manager reviews the bounty, adds implementation details/comments, and determines the price for this work. For this sample, let's say 100 EUR. The bounty is then published (along with the price) on Hydranode website. Any Hydranode user can become a Client by donating to that bounty. Once the required money has been donated, an Implementer accepts the bounty and begins implementing it. Once completed, the module, patches or updates will be published.
Any developer (either official Hydranode developer, or 3rd-party developer) can take bounties and implement them. Since it cannot be expected that the Client(s) perform quality assurance, the Bounty Manager will perform quality assurance on the resulting patches or modules. Only if they pass the quality assurance will the bounty be considered 'completed' and the donated money to be payed to the Implementer.
This method would allow users to directly affect the development process and would motivate 3rd-party developers to code (since they get money for it).
Potential caveats: Refund policy? Implementors accepting a half-funded bounty (hungry coders needing food? :P) Implementors accepting bounty but not delivering on time or not passing QA? Implementing partially (important pre-work for some bounty)?
The idea obviously needs more work before all kinks can be ironed out. But the idea in general - what do you think?
Friday, June 23, 2006
First of all, I finally got internet at home again, so I'm online 24/7 again, which means development can resume properly now.
One thing that got done during past few days was an experimental installer. After a lengthy search for the 'best installer system', I finally settled on NSIS (Nullsoft installer system) for the time being. An experimental installer is available for previewing/testing purposes here
It seems I've been overloaded with work already; my checklist for the short-term future includes the following:
- Files and Settings Import Wizard (graphical)
- Port manager and port tester (core-side, single TCP/UDP listener for all networks, integration with UPnP support)
- Version check and (semi)automatic updates (graphical)
- Plugin manager user interface (user interface component; integration with online plugin database, automatic downloading and installing, version and updates checking)
- Skinning support for user interface (integration with online skin database; automatic downloading and installing; version and updates checking)
- User interface languages and localizations
- Web server and JSON-RPC-based core/gui communication support/wrapper (requires protocol specification draft; for the web interface concept discussed in previous blog post)
In addition to that I have about three websites to build (Hydranode website and two unrelated side-projects), and I got offered a PHP/SQL database job for a pretty nice amount of money; I'm undecided yet whether to take the latter, since it'd take 4-6 weeks to implement; however, on the other hand I need the money, so I probably should take it...
The user interface documentation is nearing completition as well, any comments / thoughts are welcome.
Sunday, June 18, 2006
Discussions about Hydranode Web Interface
There has been some very interesting discussion
in our forums regarding Hydranode Web Interface. From the looks of it, we'll develop a cutting-edge web interface based on cutting-edge technologies - JSON-RPC
-based protocol over HTTP, Dojo Toolkit
for the actual interface and eventually COMET
for real-time updates. Estimated time of completition - autumn/winter 2006. Current status is drafting ideas and discussing implementation/technology choices.
Writing help/documentation for the user interface is going slowly but steadily; I realized you cannot write documentation for more than 2-3 hours in a row - the quality drops rapidly after that; this is pretty similar to coding, where quality drops rapidly after 12-14 hours. Anyway, I've finished Home, Server List and Search pages documentation, and am half-way done with Transfer (the most complex) page. I expect to finish the GUI documentation in 2-3 days.
On code side, I've managed to discover and fix my development setup and tray code for Windows. The tray code needed linking against few more libraries; and there seems to be a bug or two in either Qt 4.1.3 or the MSVC patch for Qt 4.1.3 which causes two incompatible libraries to be linked in, resulting in conflict during application linkage. Right now the problem is getting "Hide when minimized
" setting to work - for some reason Qt seems to re-create the taskbar icon after I attempt to hide the GUI (which should remove the icon).
Monday, June 12, 2006
Drafting new website; fighting with dev-system
I checked in the tray-icon code to SVN repository yesterday; tested on Windows and Linux (Ubuntu/Gnome) and seems to be working well. Currently only the 'icon' with a minimal menu is implemented, for testing purposes. It "seems" to be working on Windows as well, but there seems to be something heavily wrong with my Windows development setup currently - as I mentioned before, Mingw GUI builds are crashing after startup (and since GDB doesn't work on windows, I cannot determine the cause), and VS2005 builds fail to link with mysterious "multiply-defined std::allocator" symbol. I confirmed that this problem is in my development system rather than code as the released 0.3 source code exhibited the same problem. I'll try to re-install my dev-tools tonight and see if it fixes the issues; if not I have to go for a full system reinstall which can take 2-3 days (since I don't have internet at home yet).
Being stuck with code, I started drafting up the new website. The main direction that I'm aiming is light-weight, easy-to-navigate but content-rich. I have base layouts finished, and now starts the most time-consuming part - content creation. The trouble is that the launch of the graphical user interface obsoleted 90% of the existing content on current website (look at FAQ for example). And there's no usage help or documentation of the user interface at all right now; protocol documentations need to be reviewed (and Bittorrent documentation written up properly), and so on. In total, I expect that I have to generate 50-100 pages of new content for the website, which can take up to 2-3 weeks. I'll post the docs in the blog as they are created.
Friday, June 09, 2006
Working on installer and tray icon
I've been further experimenting with different ad placements on the website and different configurations. I'm trying to determine the best non-intrusive locations and styles for the ads, so when we start building the new website (expected second half of this month), I have a knowledge base on the subject to work with.
Another thing that was done over the past few days was finally enabling PayPal donations. You can see the button at the right side of this blog as well; first donation arrived just about a hour after enabling the button, thanks for that :)
On the code side, I've been fighting with the tray icon code and re-establishing my development setup. Somehow, newly-compiled GUI versions simply exit after startup (mingw version), or fail to link (vs2005 version). Since gdb doesn't work on windows, I have almost no way to track why the mingw version simply exits, and vs2005 version mysteriously fails to link, so I'm kind of stuck.
Being stuck in one area, I moved to next - the installer. The installer is actually aready existing - WinRAR is pretty powerful. The missing piece of the puzzle is a small app called 'install.exe' which will 1. write few registry keys to register the app in Control Panel, and 2. remove all Hydranode files when -uninstall option is passed to it (e.g. when user clicks 'Remove' in control panel or selects Uninstall in start menu). All in all, it's pretty simple (I've done few of these before), so this should be finished by tomorrow as well.
I don't think there will be a new network plugin developed during this development session; instead, I'll focus on improving existing components (ed2k, bt, gui), which will lead up to 0.3.1 release. The rationale is (as I already mentioned in the pre-vacation blog posts) that we've introduced multiple new big components during last 6 months (bt, gui), and they need further stabilization and improvements before we can move on. If we introduce too much new modules, I'll end up with a ton of half-working modules, which is a Bad Thing.
Tuesday, June 06, 2006
Getting started with coding again
After such a long break, it takes a while to get into proper development-routine again. As I don't have internet at my new place yet, I'm using net-cafe, which further hinders development somewhat (the tendency to drink too much beer, that is :P).
Anyway, I made a small update yesterday which allows reloading / updating ipfilter during runtime (via hnsh, "config set IPFilter newpath" only currently). GUI will have support for it shortly as well.
After lengthy searches, I finally found proper (and seemingly working) Tray Icon code for Qt4. I'm still experimenting with it, but it looks good and we should have tray icon support within few days.
The topics of what "big thing" to develop next is still open. Many request anonymous networks, but I don't think Hydranode is quite ready for that yet. Anonymous networks don't contribute content to the "hydranode mix" really, so in current stage, I still believe it would be better to improve existing plugins (4+gb file support in ed2k, unicode, proper BT support), and go forth with the original plan of implementing G1 network (2.2m users, yummy!) in foreseeable future.
Saturday, June 03, 2006
Back from vacation
As scheduled, I'm returning from my scheduled vacation today and resuming Hydranode project development. However, since I moved to a new location during this vacation, there are some technical difficulties getting a broadband connection to my new place, which should take 1-2 weeks at most, so I'm somewhat limited in what I can do currently. There's an internet cafe near my new place, so using this one for the time being.
I've given a lot of thought for Hydranode future during this vacation. One of the features of this blog has always been transparency and honesty about Hydranode development directions, so in that light, I will be honest. Either I find a way to make Hydranode project generate sufficient income for me, or I will have to find some other project to develop, since bills need paying and food needs to be consumed. During recent days, I have somewhat increased the advertising on this website (ads were added to forums, as well as the GetFireFox button to this blog). I'm also working towards getting Paypal donations operational (again some technical difficulties there).
There are several directions towards which I intend to move this project during the following months in hope of increasing website hits (main income source) as well as the project's popularity. A new website will be developed, starting around 16th June (when designer returns from school), and is expected to be launched mid-July. I also intend to introduce new standalone applications based on Hydranode codebase - FTP client and binary news client; while there are existing solutions for both (especially for FTP), I believe we can innovate on the user interface and features of those applications.
Based on referer link statistics from Slyck, I can see that interest about Bittorrent is more than triple of that of eDonkey - during May 2006, 1413 website visits came from http://www.slyck.com/bt.php, and mere 453 from http://www.slyck.com/edonkey2k.php; this means Bittorrent support in Hydranode needs further work. Based on feedback during the vacation from testers it seems edonkey plugin is working above expectations (except for the missing 4gb file support), so I can focus on BT and other things and forget about ed2k for the time being.
If you have ideas or thoughts how to promote Hydranode or what directions to take to improve Hydranode's popularity, please leave a comment here. All suggestions will be considered equally.
September 2006 Current Posts