User Ratings

★★★★★
★★★★
★★★
★★
67
1
0
0
4
ease 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 4 / 5
features 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 4 / 5
design 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 4 / 5
support 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 3 / 5
Write a Review

User Reviews

  • faridm
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    OpenGTS offers a lot of features out of box. But as 100yan pointed out, the code is very complicated to change. I suppose the complication is deliberate to prevent users from extending the system! XML files provide many customizations and someone makes the desired change by just modifying the xml files. However if you want to change the code itself, it is a waste of time and effort.

    Posted 05/25/2012
  • minitechme
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    The Java is bloated, as 100yan points out - but what's much worse for me (developing a PHP application to interface with this) is the database. The primary keys are all text-based and the database is... resistant... to changes, making it exceedingly difficult to uniquely identify devices without resorting to heavy-handed escaping and hashing. The entire layout of the tables is frustrating and usually unnecessary if the developer knows their way around SQL - for example, information easily viewed in EventData is duplicated in Device. Also, there are 3 fields consistently slapped on every table, relevant or not. The whole thing is a bit of a nightmare to modify.

    Posted 03/10/2012
  • hwinkelmann
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    i just wanted to share my experiences with the software. but 100yan already did perfectly.

    Posted 01/04/2012
  • yan100
    1 of 5 2 of 5 3 of 5 4 of 5 5 of 5

    OpenGTS is just an amazing example of over-engineering and pathological desire for code bloat and complexity. The worst java code I have seen for ages. The OpenGTS code is like a red book for anti-patterns. Basically the whole framework (or the most important part of it ) is statically coded so that each new server (device handler) should go through the Main class initialization route. Endless chains of call delegations ( loadDevice/loadDeviceBy for e.g ), code coupling, reinventing the wheel - the DB / XML configuration layers are just a marvelous pieces of code redundancy ! Guys, there are things like O/R mapping and XML binding API coming standard in Java, use them - it will benefit the users ! Use an Inversion of Control container (Spring/PicoContainer)- it will make the code modular. Have a look at sites like codinghorror.com more often, or just take a look at java4k.com to see how complete Super Mario/ Wolf3D games with multiple levels, sprites, physics and animations are done in just under 1000 lines of java code. Less is More guys, the KISS principle !!! And yes I can understand why OpenGTS is done like that. Enterprise support :) The more complex it is - the better the chances that nobody will have a clue how to integrate new servers without the help of the authors.

    Posted 12/08/2011