Firstly, an apology- I’ve not been updating as often as I should perhaps do. This was mostly down to the mild concussion I suffered fairly early on Wednesday morning, which limited my capacity for clear thinking for quite a while. Now, onwards- with a summary of what we got from the killboard questionnaire.
Most Wanted Features
- API import of losses and kills
- In-detail fitting information/fitting database
- Accurate price data
- Scoring/points
- Standings import
Most Wanted Fixes
- Needs to be quick
- Needs to be easily themed and styled
- Needs good documentation
- Needs a better admin panel than EDK
- Needs easier installation
Medals and ranks were a close runner up, as were better engagement summary tools.
So, let’s go into a little more detail and see how we’re covering each of these for Nexus.
API import of losses and kills
Already done! Works a treat. Does corporate feeds as well as personal.
In-detail fitting information/fitting database
This is built into the killboard. Instead of a kill having associated modules and a ship, we store that as a fitting and reference it from the kill. So we have a fitting database built on the side from the word ‘go’. Of course, kills aren’t the only way to load in fittings.
Accurate price data
We have a simple-to-extend framework implemented in Nexus for price sources. Here’s our EVE Central source.
-
# Author:: Ix Forres
-
# Remote API Version:: 2.0
-
# Example URI:: http://eve-central.com/api/marketstat?typeid={type_id}
-
# Notes:
-
# No key required for this service
-
class Nexus::PriceUpdaters::EVECentral < Nexus::PriceUpdaters::Base
-
def get_price
-
r = Net::HTTP.get(URI.parse(@source.retrieval_url.gsub('{type_id}',@type.id.to_s)))
-
x = Hpricot(r)
-
return (x/"evec_api"/"marketstat"/"type"/"sell"/"median").inner_html.to_f
-
end
-
end
So, there you go. A simple updater. You get a web interface which lets you add sources which use these updaters- setting up the URL, priority, and what that source should be used for. We have this set up in a way which enables you to display different prices to corporation members, alliance members, and so on. If your corporation has in-house shops, those shops can be easily added and used for corporate members.
Scoring/points
Ooer. We’ve not gone near this, yet. It’s always a difficult subject, and plenty of people have plenty of different ideas about how you should do this. Whatever we end up doing, rest assured there will be plenty of flexibility about how the system is configured. Possibly a modular system, though that might be overcomplicating things.
Standings Import
Again, we’ve not gone near this yet. We’re currently using the restful_authentication plugin with some extra filters (fc_required, admin_required, and so on). This isn’t great. One of the things we need to do is to move over to a more flexible framework (we’re looking at Lockdown) for authentication, and set up a proper usergroup/permission system. For example, you might want everyone in certain alliances/corps to have access to reimbursement, but not everyone you’re blue to or your alliance is blue to. It’s a can of worms, programatically, and we’re leaving it till we’ve got the basics sorted.
Needs to be quick
Ok, no problems here. Not only is the system just faster in design, we’re also providing extensive support for action and fragment caching in pages, counter caches in the database, and so on. We’re experiencing great performance for a large number of users on an already overworked server, even without any caching enabled. Caching will support a variety of backends, notably memcached.
There’s no risk of servers being bogged down by large killmails taking ages to parse and be added as can sometimes occur- when a mail is submitted, it gets put on a queue, and a worker will pick it up in the background. It’ll appear on the site when the worker’s done building the kill, checking it’s sane, and retrieving prices/portraits/corp logos associated with the kill and attackers.
Needs to be easily themed/styled
Ok, again, not much work done here. We’re using Haml for our views by and large, but nothing is stopping you writing Erb templates or anything like that. Views are split into partials where it makes sense (the killboard is so far around 20 templates), and there’s a global layout which is easily adjusted. Stylesheets are authored with Sass, which gets automatically compiled into a minified .css file. Javascript extras can be done with the included script.aculo.us library, which comes with a lot of effects and handy tools.
Themes are certainly doable and we might add support for this later if there’s demand for it.
On the same topic of styling/theming, the whole system is written with internationalisation (I18n) support for every aspect of the interface. So if you’ve got a non-English corp or alliance, you’ll be able to have Nexus in French, Dutch, German… whatever people voluntarily translate Nexus into. There’s around the order of 450 strings to translate, though we’ve reused quite a few of those so they might need splitting up in places for other languages.
Needs good documentation
We document all the code inline, and build RDoc from that, so there’s a goodly starting point there. The official site (when it’s up) will include user documentation for all the features, as well as administrator guides and tutorials for installation.
Needs a better admin panel than EDK
Right now I’d say EDK is winning on this in some ways. We’re currently lacking a central admin panel. But it’s a few templates away, and I might get around to it this evening.
Needs easier installation
I can’t promise anything! It all depends on the host, really. If your host will let you install gems for your Ruby setup, and will let you run an always-running rake task in the background, and will let you set up a cronjob (Basically: Any VPS host, most shared hosts, any dedicated host) then it’s a piece of cake. But the always-running Rake task might be a problem for some people, notably those running on shared hosts.
Installation really hasn’t been looked at in any detail whatsoever. We have a ‘developer friendly’ writeup on the Nexus development wiki, but it’s not for the shared hosters amongst us, and goes through building the Nexus database from the EVE database sources, a step which we want to avoid by providing prepackaged starting templates.
So, there you have it- what you want and what we’re doing to accomodate you. Of course, we’re now going to go away and work on what we’re not doing so well on. I’ll be pushing up the MMMetrics website in the next week or so, complete with some Nexus screenshots and so on.
Best of luck for your killboard replacement
Hi there,
I am of moderate skill with servers, mainly PHP, APACHE, MySQL.
Now I have not played with Ruby or anyhting, and I was woundering how easy is it to install and configure?
I run my servers (15) off of a single machine (Windows XP), 5 of which are killboards. Is it going to be something I can quickly set up, say in within 5 hours? Or should I set a entire day aside to get it running?
Sorry I am an utter noob once you put Ruby into the picture.
thanks,
Opiboble Inte (contact me in EVE if it is a in-depth answear please : )
5 hours would be ‘broken’ by my definition.
Once we’re done, the process will look something like this:
Install Ruby
Install Rubygems
Install Rails (a gem)
Install Passenger (mod_rails for Apache)
Download Nexus
Run ‘rake gems:install’ to get dependencies
Run ‘rake nexus:bootstrap’ to load the initial database, create encryption keys, and create temporary directories (Cup of tea goes here)
Configure Apache with a new website pointing at your Nexus folder
Restart Apache
Visit your new Nexus install, which will direct you to a setup page.
I don’t know anyone who uses Windows as a web server- it’s fairly rare these days, and you might want to look into using Linux for hosting websites. The above will work fine on Linux and Mac OSX. I am sure it would be possible to host on Windows (I develop on Win32, though all my deployments are to Linux), but it might require you to use Mongrel or Thin instead of Passenger, which takes a little more work (You need mod_proxy_balancer installed in Apache, and then have to start up some worker servers which Apache directs requests to).
Ok sounds simple,
And I will finaly have a reason to switch my server back over to linux… that or buy a new server machine : P
Thanks!
-Opiboble Inte out.
Heya,
Your project seem very interesting. Specially the killboard – as I have been searching for an alternative for the eve-dev KB for ages.
I hope the upcoming KB you guys are putting together will support Factions a lot better than the eve-dev one.
I’m very interested in trying out our system as it comes out – as long as I manage to install the needed componets for my Debian webserver.
Best Regards,
T2
I can’t wait for a Rails based killboard. I was wondering what license you will be releasing Nexus under? I would like to be able to contribute to it once you have it released.
Not sure on the license yet- probably MIT or GPL.