Jump to content

What about mangos refactoring?


Guest eoxilarium

Recommended Posts

Mangos is a big, unique project that has been developed for years.

There are a lot of things have been done,

and there are a lot of thigs that just stomping the project,

First of all it is a leak of documentation, there are no development diagrams, schemes and so on. I don't mean UML, but it would be nice to use it. To my opinion first newbie who wants to join mangos dev team is scared with ACE statements, a lot of unrealized development patterns, and just of codding style.

Mangos need refactoring to implement new features, engines and first of all select the best way of developing,

to bring new fresh views, to bring new fresh people, to make things that working better...

I don't want to make a holy war about ACE, As for me there are a lot of advantages and disadvantages of using it. And I'm familiar with Boost...

So I wanted to form a discussing team, with new codders who want to join the dev's team and to learn on developing the mangos server. And veterans who can help to organize all this mess.

Thanks for attention.

And sorry for bad english.

Link to comment
Share on other sites

we always do refactoring some parts as part normal development. So you not made hint ;)

And i agree with Schmoozerd: ofc, need see globale picture for seelction way of development but attempt "rewrite all to better" is best way to nowhere... proved by many porjects many time.

Big changes bettr always do small steps, and look around after each.

Link to comment
Share on other sites

Act local, think global - i.e start refactoring small parts of the code, a complete rewrite is not practical.

I agree with this statement, but we need to start doing something

I've used Intel TBB, boost and openmp to do all the paralelization in my projects.

ACE is a great library, but I think that it might be some another way to do all the asynchronous stuff.

I suppose that all the ACE memory managment and ACE threat synchronization can't be treated by an ordinary newbie.

And there is no other way to create an successful project, exept to choose the KISS developing style.

We need to simplify and document all the stuff to bring new people to the project.

We need a simple inveronment, we need tools to test it and to provide simple testing units.

So we can provide some aditional testers in such way, and multiply our production speed.

Last mangos milestone has proved that mangos mission is important for the people.

But can we put all the newbies to the right stream of mangos development?

Can we provide such environment? Yes we can...

Maybe it is a big priсe for such situation, I mean the current project status. But it worth it.

I think it is the best way to bring new life and people to the project.

Link to comment
Share on other sites

Some stuff is going to be inherently complicated. ACE is inherently complicated, but it works, and it works well, and that's why it's used. I've found that a lot of things in mangos are actually written well and can be picked up easily by new developers (the database stuff, for example.)

Link to comment
Share on other sites

I've found that a lot of things in mangos are actually written well and can be picked up easily by new developers (the database stuff, for example.)

Yes I agree that a lot of things working very well.

The DB stuff is actualy quite simple, and what about maping, grids, pathfinding, scripting, spell system and so on?...

I can't say that there is a huge lack of documentation, but also I can't say that it's very small.

Many mangos internal things that I've wanted to understood seemed quite unusual and undocumented to me when I've got a "first look" at the code.

and I don't want to bother community with stupid questions: what does this stuff do, and so on...

So we need refactoring of mangos project first of all to make thing simplier and provide full documentation.

Also it would be nice to create some UML charts, and provide some aditional testing environment.

Link to comment
Share on other sites

Yep. And there's also utilities that can generate very pretty flowcharts from that same UML.

I've noticed a lot of people posting recently, rattling the cages about having "good" documentation.

So far, not a single one has actually done anything to help create said documentation.

Link to comment
Share on other sites

Yep. And there's also utilities that can generate very pretty flowcharts from that same UML.

I've noticed a lot of people posting recently, rattling the cages about having "good" documentation.

So far, not a single one has actually done anything to help create said documentation.

I recall 1 person documenting the mail class, will see if I can comment some other files but I don't have a good understanding of how MaNGOS works yet, only some rudimentary things.

Link to comment
Share on other sites

For such a big project one would expect more developers. There's been and are hundreds of people contributing but not many have that fancy green nickname. But mangos is not lacking manpower but something is just holding it back.

It's the care Vladimir puts in testing things that's holding us back (definitely not saying that it's a wrong thing :))

but if we'd implement Dual-Spec when it first came out we would've been thinking about other things right now (same goes for vehicles although that did need big improvements)

Vladimir just tests things untill he's sure that it won't affect the core in a negative way

Link to comment
Share on other sites

It's the care Vladimir puts in testing things that's holding us back (definitely not saying that it's a wrong thing :))

but if we'd implement Dual-Spec when it first came out we would've been thinking about other things right now (same goes for vehicles although that did need big improvements)

Vladimir just tests things until he's sure that it won't affect the core in a negative way

Yep, and he and everyone else does a wonderful job, this project is about doing it the _right_ way, which in turn is also a learning process. They could just smack all hacks and everything into it but that won't do the core any good.

Link to comment
Share on other sites

Yep, and he and everyone else does a wonderful job, this project is about doing it the _right_ way, which in turn is also a learning process. They could just smack all hacks and everything into it but that won't do the core any good.

we would become like TC :)

smacking hacks into it untill nothing works anymore...

Link to comment
Share on other sites

we would become like TC :)

smacking hacks into it untill nothing works anymore...

It is just the totally other side.

TC devs really often produce crap code. Not all of them, but their source code is really ugly. That's the most important reason which could be heard by someone, who wants you not to touch TC.

But there's something else. Their willpower is the key. They don't seperate the project to a million parts, which is really nice. I mean look around here: if you want to set up something playable, you should get the code, apply a lot of patches to it, maybe write your own patches, get a database, get scripts (which should be patched too because the lack of any two way developer communication between the script and the core writers).

That problem is like a public secret. There are a lot of numbers in the core, which are meaningless alone, for example spell ids. Then where are we getting them from? Are they in some newspapers? And what about DBCs? Are they coming from our toilets? Everybody knows the real world usage of this project, but nobody is allowed to write that here.

We should really find the balance between the two sides. TC devs are more open about changes, and that is the way to follow. The only bad part of their project is their coding skills.

Things really should get changed. Although there were several commits which broke compiling, a lot of patches get refused (or even ignored) with empty reasons. Is the patch crashing, or causing any problem? Leave it in development status for a little time, but ignoring something great for months is not the correct option.

There are 380 threads in the under review patch section, but are they really under review? There are 2 years old patches too.

Code isn't the only thing which should get changed, mentality should change too. Denying the existence of any really existing problem is a really big fault, just look back to the medieval age.

Link to comment
Share on other sites

mangos separate everything due to legal reasons, and to improve modularity

It is just the typical empty reason.

First look around legality: I didn't want anybody to pack any World of YouCantWriteItHere files with the project. My problem is that we can't write a direct word about it, because it's "illegal". What's illegal in it? Also if it would be even illegal, then where are the DBC and map files from which are obviously used by devs too.

Then what about screenshots? What is illegal in posting a screenshot here from "the" client? Just google around, and you can find a lot of screenshots and videos it which are totally legal. I know your problem is with the server, but how can you judge by simply looking at any picture? There isn't any obvious clue: emulator motd? you can do it with an addon; custom-looking things? what about PTR/beta then?

Modularity is just an other false reason. Script writers, and database builders often needed some new features in the core. Did they get it? Yes, they got the most after a lot of delay which is just a clue about ignoring these parts of the project. And yes, these also belong to the project, because they have no real usage without eachother.

And there are also a lot of still open questions from my previous post.

Link to comment
Share on other sites

what use would it to put all together?

you mention a DB Dev who needs a feature

then there are two cases:

i) he is able to do it well himself, then he will do it for mangos and submit it there

ii) hi is not able to do it himself, then

iia) he will ask and wait for someone to do it proper (mangos)

iib) he can hack it in himself resulting in bad code (not mangos)

I for myself also would love to get features for other parts done way faster, but it is as mentioned - if I would be able to do it myself, I would do it myself in the separated style and in the one-for-all style.

But as I am not able to do it alright, I have to wait anyways for someother part to do it.

Another thing about modularity:

As the DB has a well defined interface (which is also documented somehow) it is very easy to start doing DB fixes without knowing about depths of core design.

This is for scripts also true, and I think the modular way to do things is a little bit more effort to set it up - and has only temporarily problems till the parts work together again, yet everybode new to the "project" has easier access to the independent parts.

Of course the Review section could need (more) cleanup, but you know, code has to be reviewed, tested, patched, this all takes time.

Link to comment
Share on other sites

Modularity is just an other false reason. Script writers, and database builders often needed some new features in the core. Did they get it? Yes, they got the most after a lot of delay which is just a clue about ignoring these parts of the project. And yes, these also belong to the project, because they have no real usage without eachother.

who cares about the delay? if it's done in the right way its ok. This is a educational project, no need to do things fast.

Link to comment
Share on other sites

First look around legality: I didn't want anybody to pack any World of YouCantWriteItHere files with the project. My problem is that we can't write a direct word about it, because it's "illegal". What's illegal in it? Also if it would be even illegal, then where are the DBC and map files from which are obviously used by devs too.

Then what about screenshots? What is illegal in posting a screenshot here from "the" client? Just google around, and you can find a lot of screenshots and videos it which are totally legal. I know your problem is with the server, but how can you judge by simply looking at any picture? There isn't any obvious clue: emulator motd? you can do it with an addon; custom-looking things? what about PTR/beta then?

This is will not changed. And this not related like it you or not. Ignore rules will end up in ban state. That is simple.

Link to comment
Share on other sites

Independent state of projects will not changed. And how i am can discuss what must do independent project team? This will be too strange for mangos devs talk about anothe projects future.

I also note that original topic about CODE refactoring. So i considering last Linencloth's posts as spam and flame. I warning you from continue posts in this way

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use