eMule Light is a mod that removes features I consider non-essential.
I will maintain information about current releases on my
eMule Light page. You'll find more information about the project, my goals, and so on there. I will not maintain changelog as such, but rather each version has it's own page that describes changes to previous version(s).
Current version is
eMule 0.29c-Light.5. I will not post developer releases here, but will post end-user releases. Don't expect end-user releases to be very frequent.. Developer release frequency depends on how much time I have, and which features I work on, as not all of them are for Light mod.
I will link only the full source package and the main executable here. More downloads can be found from the Light pages, sometimes different builds of the mule, sometimes changed files zips, sometimes patches, and so on.
Sourcecode Release build executable
If there is interest for some specific feature sets, I may consider them. Currently I build a version with multiple instances support (not linked here) and one with IP Filter support, as the first I need for myself, and the second has been requested. I won't be building ten different versions, but anyone with the compiler should be able to easily do so.
So, if you think Light would be good if only features x and y weren't removed, please do post in this thread. I'll then try to create one or two more builds to satisfy differing needs.
This time I'm not as confident as I usually am about how well the changes work. It seems to run fine, but there may still be bugs left. More likely though unused code and/or resources were left in the compile, which wouldn't have any effect on users.
The main points in 29c-Light.5 release are:
File Search is removed. It's not really important as there are many good linksites to use instead. The Search dialog pane still exists, becase it has the direct download box where you can paste ed2k-links, as well as being used for when you view some other client's files list.
The main points in 29c-Light.4 release are:
Proxy removed. Because this was pretty large scale surgery, I decided to not make this release an end-user release yet.
Proxy preferences separated to CPreferencesProxy. Well, while removing proxy support, this was a natural extension considering I removed IRC and Webserver prefs already earlier, separated list column states also, and have separated stats from preferences.
Helpfile support removed. Pressing F1 won't help you anymore. Light isn't exactly a beginner-mod, so those using it shouldn't need the help anyway.
Dynamic language support removed. Light is now English only.
Added support for ET_MOD_VERSION tag. It's stored to client as private CString m_strModVersion, and accessible using const CString GetModVersion() const;. It's not handled in any way yet, as I'm not sure what to do with it. The same tag is also sent, with current content being "0.29c-Light.4". You can probably guess what the future content will be..
The main point in 29c-Light.3 release is:
File Comments protocol is removed. This means that the client doesn't send nor does it handle ET_COMMENT tag. In mule info packet it doesn't include comment support tag, so hopefully no other client tries to send comments. Also, when it receives comment support tag, it lets it pass through unhandled.
The main points in 29c-Light.2 release are:
Bugfix: SF:noRefrag packet m_bLastSplitted flag set correctly when splitting packets.
Bugfix: List column info wasn't loaded correctly due to wrong ini category.
File Comments UI is removed. Most of the inner workings as well. Protocol still exists, thus the client will get comment & rating info, but will just discard it all. It won't send any comments or ratings, as there is none to send.
User documentation: How to switch from another client to this mod?
Simple: download the executable, put that to your eMule application directory, and run it. You can rename it to emule.exe if you want to.
IMPORTANT!
As Light removes features, it also removes respective preferences options. It does not read nor write to preferences.ini the options it has removed. Therefore, if you decide to switch to official client or another mod from Light, the options that weren't used by Light will revert to default values.
Features added:
Known files list is checked for duplicate when a file is added to shared files list. Duplicated files' stats are merged, and the duplicate entries removed. Originally from eMule 0.29a[SF-VQB]-v0.33
(Tag: "SLUGFILLER: mergeKnown").
Packet refragmentation was removed, hopefully providing better upload performance. Originally from eMule 0.29a[SF-VQB]-v0.33
(Tag: "SLUGFILLER: noRefrag").
Multiple instances are supported. This is a dangerous feature, as no checkes are added to lock and/or synchronise eg. file access. This is useful if you want to run multiple clients from separate install dirs, with separate temp/incoming dirs. Shared files directories can be shared. If it crashes and corrupts your harddrive, it's not my problem. I do use multiple clients all the time, and needed this badly.
(define: WITH_MULTIPLE_INSTANCES)
Multiple instances client no longer registers, responds to, or sends "AreYouEmule" message. This means that it can't take ED2k links, except (for now still) via clipboard or search-screen ed2k-linkbox. Removed ED2k-links button from General Preferences and "Take links only during runtime" checkbox from Extended Preferences. Removed related preferences items and resources, too. Run single-instance client instead for download purposes - I definitely will continue removing download-related features from multiple instances version.
Multiple instances client now create mutex named by it's application directory. This means that You shouldn't be able to run multiple multiple instances clients from one directory, and that it doesn't interfere with running single-instance clients using the same GUID.
Support for mod version tag. Some mods send mod version string containing the mod's name and version. eMule Light version 0.29c-Light.5 sends "Light 0.29c.5", and the versioning will follow the same rule in the future, too. Yes, I know - I did say that the last time already, and still changed the version string format. This is because assuming the strings are listed in some client, sorting by version now groups all Light's together. The tag is stored to client info when received, but is not handled in any way yet. Perhaps I'll at some point decide where it can easily be added as shown info about client.
Features removed:
Webserver (
define: WITH_WEBSERVER)
Scheduler (
define: WITH_SCHEDULER)
IP Filtering (
define: WITH_IPFILTER)
Webservices (links & webservices menu items) (
define: WITH_WEBSERVICES)
Preview, Archive recovery and open file in shared files list (
define: WITH_PREVIEW)
Splash-screen (
define: WITH_SPLASH)
About-box and menuitem (
define: WITH_CREDITS)
IRC client (
define: WITH_IRC)
First run / Connection Wizard (
define: WITH_WIZARD)
Clipboard watching (
define: WITH_WATCH_CLIPBOARD). Undefined only in WITH_MULTIPLE_INSTANCES build. It's still useful for single instance clients.
Version check (define: WITH_VERSIONCHECK). Undefined only in
WITH_MULTIPLE_INSTANCES build. It's still useful for single instance clients.
File Comments (
define: WITH_FILE_COMMENTS). Actually consists of three separate parts: UI (
define: WITH_FILE_COMMENTS_UI), Engine (
define: WITH_FILE_COMMENTS_ENGINE), and Protocol (define: WITH_FILE_COMMENTS_PROTOCOL).
Proxy support (
define: WITH_PROXY). Actually consists of three separate parts: UI (
define: WITH_FILE_COMMENTS_UI), Engine (
define: WITH_FILE_COMMENTS_ENGINE), and socket layer (
define: NOLAYERS). Socket layer define is straight from existing AsyncSocketEx files, where it's used to define whether the socket layer can or can not have multiple layers.
Dynamicall loaded languages (
define: WITH_LANGUAGES). Thus Light is now officially English only.
Help file (
define: WITH_HELP). Light isn't exactly a beginner mod, so users aren't likely to need the internal help.
File search (
define: WITH_SEARCH). Using server (or even worse, global server) search just produces unnecessary load on servers. Linksites are really a better choice for looking for files.
Developer documentation:
All defines are found in config.h. Using normal eMule Debug/Release build configurations the configuration is as per standard mule, excepting the features I borrowed from SF-VQB (which I consider highly desireable, not excludable). Additional build configurations are Debug Light, Release Light, Release Light MC and Release Light IPF. Debug Light/Release Light build configurations exclude all features. Release Light MC includes multiple instances in addition, and Release Light IPF includes IP Filtering while excluding the rest.
Such resources that were removed using compile time directives have been moved to their own resource files, included into emule.rc using normal resource include directives but wrapped within #ifdef ... #endif to only include it in build configurations where it's needed. It's important to put compile time directives not just in build configuration's compiling options, but also in resource tool options, so that correct resources are used.
Where only parts of a dialog were removed using compile time directives, those dialogs were moved to res/emule.rc2, which is not editable using APS. I regret this, but didn't see other good ways to remove just single buttons or labels from dialog using compile time directives. Respective resource identifier symbols were moved from resource.h to emule_rc2.h.
I really tried to split WITH_SEARCH into UI / Engine / Protocol components, but it was way too mixed. There was absolutely no way to do it well without rewriting it completely, so I ended up clumping the whole search into one define.
Rest of the documentation you can find from
cleanup-tree. It's not much, but the changes aren't really that big.