Minion Beta! - Help us test our new AddOn updater. Get it now!
Download
(127 Kb)
Download
Updated: 10-19-14 03:14 AM
Pictures
File Info
Compatibility:
Warlords of Draenor Pre-Patch (6.0.2)
Siege of Orgrimmar (5.4)
Updated:10-19-14 03:14 AM
Created:03-24-11 08:20 AM
Downloads:8,816
Favorites:131
MD5:
MiniLoot  Popular! (More than 5000 hits)
Version: 6.0.0.141019-2
by: Vladinator [More]
Official repository can be found at GitHub.

Tired of loot spam in the chat? Wish there was a way to reduce the amount of messages generated by the game upon looting, reputation gain, experience gain, and so forth? This addon was created to counter just that!

Features
  • Filter
    Hide reputation, loot, currency, experience and gold messages. You can hide all the junk loot messages generated by the group, yourself or both. You may even set a item quality limit to what is hidden or not.
  • Timing
    You can group up several messages and generate a report of all changes that have happened in a specific time interval or after combat has ended. This helps avoid spam during fights.
  • Extra
    There are several extra features. To name a few: Pet Battle messages can be neatly summarized. Hover tooltips when you mouse over hyperlinks in the chat. Class coloring of names.

Stability
The addon has been tested with several languages, but with each major patch things may break. If you encounter issues please post them or submit a fix yourself.
6.0.0.141019-2
- Updated libraries and hotfixed a bug introduced by Blizzard.
- Hotfixed my own code.

6.0.0.140730
- The start of a new expansion means fresh change log.
Optional Files (0)


Archived Files (58)
File Name
Version
Size
Author
Date
6.0.0.141019
127kB
Vladinator
10-19-14 03:01 AM
6.0.0.140730
132kB
Vladinator
07-29-14 07:41 PM
6.0.0.140730
132kB
Vladinator
07-29-14 07:20 PM
6.0.0.140730
132kB
Vladinator
07-29-14 06:44 PM
1.8.5.7c
122kB
Vladinator
01-22-14 09:43 AM
1.8.5.7b
121kB
Vladinator
01-22-14 08:46 AM
1.8.5.6
121kB
Vladinator
09-15-13 05:50 AM
1.8.5.5
121kB
Vladinator
05-30-13 02:40 PM
1.8.5.4
121kB
Vladinator
05-18-13 08:24 AM
1.8.5.3
121kB
Vladinator
03-25-13 05:59 AM
1.8.5.2
121kB
Vladinator
03-12-13 03:35 PM
1.8.5.1
122kB
Vladinator
12-22-12 10:49 AM
1.8.5
121kB
Vladinator
12-20-12 08:12 AM
1.8.4
121kB
Vladinator
12-08-12 08:39 AM
1.8.2d
121kB
Vladinator
11-06-12 04:04 PM
1.8.2c
120kB
Vladinator
11-03-12 12:21 PM
1.8.2
119kB
Vladinator
11-03-12 10:03 AM
1.8.1
118kB
Vladinator
11-01-12 10:30 AM
1.8.0
32kB
Vladinator
10-09-12 10:29 AM
1.7.9
31kB
Vladinator
09-25-12 01:44 PM
1.7.7
31kB
Vladinator
09-19-12 06:53 AM
1.7.6
31kB
Vladinator
09-03-12 08:51 AM
1.7.5
31kB
Vladinator
09-02-12 06:11 PM
1.7.4.1
31kB
Vladinator
09-02-12 10:34 AM
1.7.4
31kB
Vladinator
09-02-12 07:11 AM
1.7.3
30kB
Vladinator
09-01-12 11:55 AM
1.7.2
28kB
Vladinator
08-18-12 07:27 AM
1.7.1
25kB
Vladinator
07-15-12 07:37 AM
1.7.1
24kB
Vladinator
06-30-12 08:06 AM
1.6d
24kB
Vladinator
01-13-12 07:04 AM
1.6c
24kB
Vladinator
12-10-11 02:47 PM
1.6b
24kB
Vladinator
10-07-11 03:43 AM
1.6
23kB
Vladinator
09-21-11 05:42 AM
1.5s
23kB
Vladinator
09-19-11 06:24 AM
1.5r
23kB
Vladinator
09-15-11 07:07 AM
1.5q
23kB
Vladinator
09-14-11 04:10 PM
1.5p
23kB
Vladinator
09-14-11 04:38 AM
1.5o
22kB
Vladinator
09-12-11 07:48 PM
1.5n
22kB
Vladinator
09-12-11 06:08 AM
1.5m
22kB
Vladinator
09-11-11 07:08 AM
1.5l
21kB
Vladinator
06-29-11 02:29 PM
1.5k
21kB
Vladinator
06-23-11 06:03 AM
1.5j
21kB
Vladinator
06-14-11 04:31 PM
1.5i
21kB
Vladinator
06-14-11 02:32 PM
1.5h
20kB
Vladinator
06-12-11 03:22 AM
1.5g
20kB
Vladinator
06-11-11 12:34 PM
1.5f
19kB
Vladinator
06-10-11 04:40 AM
1.5e
19kB
Vladinator
06-02-11 04:20 AM
1.5d
18kB
Vladinator
06-01-11 03:17 PM
1.5c
18kB
Vladinator
06-01-11 05:18 AM
1.5b
15kB
Vladinator
05-31-11 03:57 PM
1.5
15kB
Vladinator
05-31-11 06:05 AM
1.4d
13kB
Vladinator
05-14-11 01:56 PM
1.4c
13kB
Vladinator
04-27-11 10:06 AM
1.4
12kB
Vladinator
04-08-11 12:47 PM
1.3
12kB
Vladinator
04-04-11 09:17 AM
1.2d
11kB
Vladinator
04-02-11 11:56 AM
1.1
8kB
Vladinator
03-28-11 05:06 AM


Post A Reply Comment Options
Unread 10-09-12, 08:46 AM  
Tonyleila
An Onyxian Warder
 
Tonyleila's Avatar
AddOn Author - Click to view AddOns

Forum posts: 379
File comments: 1384
Uploads: 33
Originally Posted by Vladinator
Originally Posted by Tonyleila
New problem with trading is that you get items shown also if you don't get them. e.g. if someone trades you with something and than abort it or if you enchant something the chat says that you just got that epic bop boots that you enchanted inside the no-trade window for someone.
I will look into it, as you may have figured, I don't trade that often, hehe. I'll try find someone to trade with to fix this. :P
if you are online now we can trade

btw 09-25-12 01:44 PM was last update on wow interface so i guess you havent uploaded R: 1.7.9 release for 5.0.5 Oct 05, 2012 I found here http://wow.curseforge.com/addons/miniloot/
__________________
Author of: LeilaUI and Aurora: Missing Textures
__________________
Last edited by Tonyleila : 10-09-12 at 08:57 AM.
Tonyleila is offline Report comment to moderator  
Reply With Quote
Unread 10-09-12, 08:22 AM  
Vlad
A Molten Giant
 
Vlad's Avatar
AddOn Author - Click to view AddOns

Forum posts: 765
File comments: 391
Uploads: 39
Originally Posted by Tonyleila
New problem with trading is that you get items shown also if you don't get them. e.g. if someone trades you with something and than abort it or if you enchant something the chat says that you just got that epic bop boots that you enchanted inside the no-trade window for someone.
I will look into it, as you may have figured, I don't trade that often, hehe. I'll try find someone to trade with to fix this. :P

Originally Posted by Tonyleila
Also do you know that your addon side says we are at Version: 1.7.9 but you can only download a zip file called MiniLoot-1.7.8_release with a toc file in it that says Version: 1.7.7 X-Curse-Packaged-Version: 1.7.8 release
It's a bit hard to keep focus all the time, when using two sites, in this case I use curse to help with translations (if someone wants to) then it packages for me and I upload on wowinterface, I can mess up the numbering sometimes. It's not a biggie, the files uploaded are the latest at least, next upload will fix the numbering issue.
__________________
Profile: Curse | Wowhead
Vlad is offline Report comment to moderator  
Reply With Quote
Unread 10-09-12, 07:26 AM  
Tonyleila
An Onyxian Warder
 
Tonyleila's Avatar
AddOn Author - Click to view AddOns

Forum posts: 379
File comments: 1384
Uploads: 33
Originally Posted by Vladinator
There is also an issue with group rolls, need to fix this and the trade feature. I'll prioritize rolls first, since it's a basic function that is broken since WoW 5, and my fix was only half fix.
New problem with trading is that you get items shown also if you don't get them. e.g. if someone trades you with something and than abort it or if you enchant something the chat says that you just got that epic bop boots that you enchanted inside the no-trade window for someone.

Also do you know that your addon side says we are at Version: 1.7.9 but you can only download a zip file called MiniLoot-1.7.8_release with a toc file in it that says Version: 1.7.7 X-Curse-Packaged-Version: 1.7.8 release
__________________
Author of: LeilaUI and Aurora: Missing Textures
__________________
Last edited by Tonyleila : 10-09-12 at 07:28 AM.
Tonyleila is offline Report comment to moderator  
Reply With Quote
Unread 09-03-12, 04:39 AM  
Vlad
A Molten Giant
 
Vlad's Avatar
AddOn Author - Click to view AddOns

Forum posts: 765
File comments: 391
Uploads: 39
There is also an issue with group rolls, need to fix this and the trade feature. I'll prioritize rolls first, since it's a basic function that is broken since WoW 5, and my fix was only half fix.
__________________
Profile: Curse | Wowhead
Vlad is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 08:30 PM  
Tonyleila
An Onyxian Warder
 
Tonyleila's Avatar
AddOn Author - Click to view AddOns

Forum posts: 379
File comments: 1384
Uploads: 33
Originally Posted by Vladinator
Keep in mind this only works when you receive items and money, not when you "loose".
Yes i know Its not working when i receive items that i have in my bag too... this is bad if i get items for enchanting and i can't check if i got everything because i had some of the same items in my bag mony works fine btw
__________________
Author of: LeilaUI and Aurora: Missing Textures
__________________
Last edited by Tonyleila : 09-02-12 at 08:30 PM.
Tonyleila is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 08:25 PM  
Vlad
A Molten Giant
 
Vlad's Avatar
AddOn Author - Click to view AddOns

Forum posts: 765
File comments: 391
Uploads: 39
Originally Posted by Tonyleila
Ok its not realy working fine if you have the item that you are trading in your bag eg i have 2 [Kühles Fleisch] on bothe chars and I'm trading 1 [Kühles Fleisch] its not showing up in chat
Odd, I gotta look into this later. Keep in mind this only works when you receive items and money, not when you "loose".
__________________
Profile: Curse | Wowhead
Vlad is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 06:29 PM  
Tonyleila
An Onyxian Warder
 
Tonyleila's Avatar
AddOn Author - Click to view AddOns

Forum posts: 379
File comments: 1384
Uploads: 33
Ok its not realy working fine if you have the item that you are trading in your bag eg i have 2 [Kühles Fleisch] on bothe chars and I'm trading 1 [Kühles Fleisch] its not showing up in chat
__________________
Author of: LeilaUI and Aurora: Missing Textures
__________________
Tonyleila is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 06:24 PM  
Tonyleila
An Onyxian Warder
 
Tonyleila's Avatar
AddOn Author - Click to view AddOns

Forum posts: 379
File comments: 1384
Uploads: 33
Originally Posted by Vladinator
Originally Posted by Tonyleila
Fuuuuuu I PMed you first! Only because I'm on EU server -.-
I tried to find you but you were off, then later in the night Stanzilla was online (helped me fix another addon earlier) so I used him to help me figure out how trading events work so I could add this before I went to bed. :P
For your information I am EU as well.
Ahh ok I'm testing trading with my sec acc right now
__________________
Author of: LeilaUI and Aurora: Missing Textures
__________________
Tonyleila is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 06:22 PM  
Vlad
A Molten Giant
 
Vlad's Avatar
AddOn Author - Click to view AddOns

Forum posts: 765
File comments: 391
Uploads: 39
Originally Posted by Tonyleila
Fuuuuuu I PMed you first! Only because I'm on EU server -.-
I tried to find you but you were off, then later in the night Stanzilla was online (helped me fix another addon earlier) so I used him to help me figure out how trading events work so I could add this before I went to bed. :P

For your information I am EU as well.
__________________
Profile: Curse | Wowhead
Last edited by Vlad : 09-02-12 at 06:22 PM.
Vlad is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 06:19 PM  
Tonyleila
An Onyxian Warder
 
Tonyleila's Avatar
AddOn Author - Click to view AddOns

Forum posts: 379
File comments: 1384
Uploads: 33
Originally Posted by Vladinator
Originally Posted by spiralofhope
PMed
Awesome, noted and added.
*Edit*
Released 1.7.5 with experimental trade loot handling, check changelog for details.
Fuuuuuu I PMed you first! Only because I'm on EU server -.-
__________________
Author of: LeilaUI and Aurora: Missing Textures
__________________
Tonyleila is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 04:17 PM  
Vlad
A Molten Giant
 
Vlad's Avatar
AddOn Author - Click to view AddOns

Forum posts: 765
File comments: 391
Uploads: 39
Originally Posted by spiralofhope
PMed
Awesome, noted and added.

*Edit*

Released 1.7.5 with experimental trade loot handling, check changelog for details.
__________________
Profile: Curse | Wowhead
Last edited by Vlad : 09-02-12 at 06:12 PM.
Vlad is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 12:43 PM  
spiralofhope
A Deviate Faerie Dragon
 
spiralofhope's Avatar

Forum posts: 11
File comments: 207
Uploads: 0
* I may add trading loot (like mailbox loot) if I can find someone to trade with back and forth and see what events fire at when.
PMed
__________________
spiralofhope.com
spiralofhope is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 11:32 AM  
Namtab
A Kobold Labourer

Forum posts: 0
File comments: 71
Uploads: 0
workin fine now
Namtab is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 10:31 AM  
Vlad
A Molten Giant
 
Vlad's Avatar
AddOn Author - Click to view AddOns

Forum posts: 765
File comments: 391
Uploads: 39
Silly me, got to fix my script from not adding the saved variables as a local value.

Anyway I upload a fix, it's a tiny patch that removes one line, 1.7.4.1 will work this time around. Pending approval.

Also I DEEPLY appreciate if you want to and can, to help localize MiniLoot at curseforge:
http://wow.curseforge.com/addons/miniloot/localization/
It's a good system, a lot have changed since the old versions so I can't just copy paste either, I need new translations.
__________________
Profile: Curse | Wowhead
Last edited by Vlad : 09-02-12 at 10:35 AM.
Vlad is offline Report comment to moderator  
Reply With Quote
Unread 09-02-12, 10:11 AM  
Namtab
A Kobold Labourer

Forum posts: 0
File comments: 71
Uploads: 0
Originally Posted by Tonyleila
Thanks for updating but the options of "Extra" are not saved after logout if i login again is uncheck. also if i check the options ingame and test the mail thing its not working
if u remove the savedvariables from miniloot v.1.7.3 u'll be able to save options... but errors start to pop

Code:
3x MiniLoot-1.7.4 release\core.lua:967: attempt to index global "MiniLootDB" (a nil value)
MiniLoot-1.7.4 release\core.lua:967: in function "?"
MiniLoot-1.7.4 release\core.lua:1244: in function <MiniLoot\core.lua:1243>
<in C code>
<string>:"TURNORACTION":4: in function <string>:"TURNORACTION":1

Locals:
worker = <unnamed> {
 0 = <userdata>
 PetBattlesToggle = <func> @MiniLoot\core.lua:849
}
event = "MAIL_SHOW"
addon = <table> {
 sub4 = MiniLootsub4 {}
 grayColorTag = "|cff9d9d9d"
 name2 = "MiniLoot"
 print = <func> @MiniLoot\opts.lua:100
 name3 = "ML"
 itemQualityColorNames = <table> {}
 loadCfgUI = <func> @MiniLoot\opts.lua:923
 getItemQualityName = <func> @MiniLoot\opts.lua:206
 itemQualityColorTags = <table> {}
 hoverTip = MiniLootHoveringTooltip {}
 sub0 = MiniLootsub0 {}
 init = <func> @MiniLoot\core.lua:1192
 queue = <table> {}
 ClassColor = <func> @MiniLoot\opts.lua:185
 version = "1.7.4"
 lootwintypes = <table> {}
 tipScan = MiniLootTooltipScanner {}
 petBattles = <func> @MiniLoot\opts.lua:730
 currencies = <table> {}
 sub1 = MiniLootsub1 {}
 locale = "enUS"
 sub3 = MiniLootsub3 {}
 sub2 = MiniLootsub2 {}
 isItemQuestStarter = <func> @MiniLoot\opts.lua:217
 lootwin = "Loot"
 GetItemCount = <func> @MiniLoot\opts.lua:164
 cfgrefresh = <func> @MiniLoot\opts.lua:927
 itemQualityListWithNames = "0 = |cff9d9d9dPoor|r
1 = |cffffffffCommon|r
2 = |cff1eff00Uncommon|r
3 = |cff0070ddRare|r
4 = |cffa335eeEpic|r
5 = |cffff8000Legendary|r
6 = |cffe6cc80Artifact|r
7 = |cffe6cc80Heirloom|r
8 = |cffFFFF00Hide all|r"
 variablecheck = <func> @MiniLoot\opts.lua:122
 LootWindowCreate = <func> @MiniLoot\core.lua:556
 build = "174"
 matches = <table> {}
 _print = <func> @MiniLoot\opts.lua:111
 GetCurrencyCount = <func> @MiniLoot\opts.lua:172
 mouseoverLinks = <func> @MiniLoot\opts.lua:723
 defaults = <table> {}
 GetIconWithLink = <func> @MiniLoot\core.lua:641
 isItemClassQuest = <func> @MiniLoot\opts.lua:216
 events = <table> {}
 L = <table> {}
 petBattle = <table> {}
 bool = <func> @MiniLoot\opts.lua:155
 getColorRankByTag = <func> @MiniLoot\opts.lua:198
 name = "MiniLoot"
}
Code:
3x MiniLoot-1.7.4 release\core.lua:772: attempt to index global "MiniLootDB" (a nil value)
MiniLoot-1.7.4 release\core.lua:772: in function "?"
MiniLoot-1.7.4 release\core.lua:1244: in function <MiniLoot\core.lua:1243>

Locals:
worker = <unnamed> {
 0 = <userdata>
 PetBattlesToggle = <func> @MiniLoot\core.lua:849
}
event = "CHAT_MSG_LOOT"
addon = <table> {
 sub4 = MiniLootsub4 {}
 grayColorTag = "|cff9d9d9d"
 lastevent = 19525.254
 name2 = "MiniLoot"
 print = <func> @MiniLoot\opts.lua:100
 name3 = "ML"
 itemQualityColorNames = <table> {}
 loadCfgUI = <func> @MiniLoot\opts.lua:923
 getItemQualityName = <func> @MiniLoot\opts.lua:206
 itemQualityColorTags = <table> {}
 hoverTip = MiniLootHoveringTooltip {}
 sub0 = MiniLootsub0 {}
 init = <func> @MiniLoot\core.lua:1192
 queue = <table> {}
 ClassColor = <func> @MiniLoot\opts.lua:185
 version = "1.7.4"
 lootwintypes = <table> {}
 tipScan = MiniLootTooltipScanner {}
 petBattles = <func> @MiniLoot\opts.lua:730
 sub3 = MiniLootsub3 {}
 sub1 = MiniLootsub1 {}
 locale = "enUS"
 sub2 = MiniLootsub2 {}
 isItemQuestStarter = <func> @MiniLoot\opts.lua:217
 currencies = <table> {}
 lootwin = "Loot"
 GetItemCount = <func> @MiniLoot\opts.lua:164
 cfgrefresh = <func> @MiniLoot\opts.lua:927
 itemQualityListWithNames = "0 = |cff9d9d9dPoor|r
1 = |cffffffffCommon|r
2 = |cff1eff00Uncommon|r
3 = |cff0070ddRare|r
4 = |cffa335eeEpic|r
5 = |cffff8000Legendary|r
6 = |cffe6cc80Artifact|r
7 = |cffe6cc80Heirloom|r
8 = |cffFFFF00Hide all|r"
 variablecheck = <func> @MiniLoot\opts.lua:122
 LootWindowCreate = <func> @MiniLoot\core.lua:556
 build = "174"
 matches = <table> {}
 _print = <func> @MiniLoot\opts.lua:111
 GetCurrencyCount = <func> @MiniLoot\opts.lua:172
 mouseoverLinks = <func> @MiniLoot\opts.lua:723
 defaults = <table> {}
 GetIconWithLink = <func> @MiniLoot\core.lua:641
 isItemClassQuest = <func> @MiniLoot\opts.lua:216
 events = <table> {}
 L = <table> {}
 petBattle = <table> {}
 bool = <func> @MiniLoot\opts.lua:155
 getColorRankByTag = <func> @MiniLoot\opts.lua:198
 name = "MiniLoot"
}
Code:
11x MiniLoot-1.7.4 release\core.lua:634: attempt to index global "MiniLootDB" (a nil value)
MiniLoot-1.7.4 release\core.lua:634: in function <MiniLoot\core.lua:633>
MiniLoot-1.7.4 release\core.lua:978: in function "filterFunc"
FrameXML\ChatFrame.lua:2939: in function <FrameXML\ChatFrame.lua:2929>
(tail call): ?
(tail call): ?
(tail call): ?
FrameXML\ChatFrame.lua:2741: in function "ChatFrame_OnEvent"
<string>:"*:OnEvent":1: in function <string>:"*:OnEvent":1

Locals:
chatFrame = ChatFrame1 {
 0 = <userdata>
 isInitialized = 1
 ScrollUp = <func> @Bartender4\libs\..\AceHook-3.0.lua:87
 tellTimer = 19269.503
 resizeBottomLeft = ChatFrame1ResizeBottomLeft {}
 resizeButton = ChatFrame1ResizeButton {}
 oldAlpha = 0.15686275064945
 channelList = <table> {}
 ScrollToBottom = <func> @Bartender4\libs\..\AceHook-3.0.lua:87
 name = "General"
 ScrollToTop = <func> @Bartender4\libs\..\AceHook-3.0.lua:87
 AddMessage = <func> @Bartender4\libs\..\AceHook-3.0.lua:100
 messageTypeList = <table> {}
 checkedGMOTD = true
 flashTimer = 0.052003944292665
 PageUp = <func> @Bartender4\libs\..\AceHook-3.0.lua:87
 resizeTopRight = ChatFrame1ResizeTopRight {}
 mouseInTime = 0
 mouseOutTime = 0.02000000141561
 defaultLanguage = "Orcish"
 PageDown = <func> @Bartender4\libs\..\AceHook-3.0.lua:87
 buttonFrame = ChatFrame1ButtonFrame {}
 ScrollDown = <func> @Bartender4\libs\..\AceHook-3.0.lua:87
 downButton = <unnamed> {}
 copyButton = <unnamed> {}
 resizeTopLeft = ChatFrame1ResizeTopLeft {}
 resizeBottom = ChatFrame1ResizeBottom {}
 clickAnywhereButton = ChatFrame1ClickAnywhereButton {}
 isDocked = 1
 resizeTop = ChatFrame1ResizeTop {}
 editBox = ChatFrame1EditBox {}
 resizeLeft = ChatFrame1ResizeLeft {}
 isLocked = 1
 resizeBottomRight = ChatFrame1ResizeBottomRight {}
 buttonSide = "left"
 background = ChatFrame1Background {}
 zoneChannelList = <table> {}
 isStaticDocked = true
 resizeRight = ChatFrame1ResizeRight {}
}
event = "CHAT_MSG_LOOT"
GetSelectedWindow = <func> @MiniLoot\core.lua:633
bool = <func> @MiniLoot\opts.lua:155
Code:
73x MiniLoot-1.7.4 release\core.lua:1183: attempt to index global "MiniLootDB" (a nil value)
MiniLoot-1.7.4 release\core.lua:1183: in function <MiniLoot\core.lua:1179>

Locals:
Namtab is offline Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.