The future of AGS III - The plan

Started by Wyz, Thu 15/03/2012 00:37:51

Previous topic - Next topic

BigMc

Let's not get distracted by details yet. First we need at least to know what sonneveld and JJS think about having a main repository.

Crimson Wizard

Quote from: timofonic on Thu 07/06/2012 01:55:42
I think the main repository should be Git instead of SVN, Subversion is quite outdated and provides many development limitations on merging the efforts of the heterogeneous visions from different developers.
I dont' understand why are you keep saying this. JJS uses Git already (https://gitorious.org/~jjs/ags/ags-for-psp). Sonneveld too, although different service (https://github.com/sonneveld/ags).

Personally, I dont' have any experience using online services for keeping Git repositories, so I have no idea which is better and why.

monkey0506

Quote from: Crimson Wizard on Thu 07/06/2012 07:32:14
Quote from: timofonic on Thu 07/06/2012 01:55:42Git

I dont' understand why are you keep saying this.

Coz the ScummVM team uses Git. He has stated multiple times that unless AGS uses the exact development model of ScummVM that it will fail and die, which is of course nothing more than cross-eyed camel spit.

JJS

I am of course fine with people basing the official repo on my repository. I think merging the changes from the 3.2.2 branch in the SVN would be no big deal since they are solely to the editor side afaik.

A problem I would see with people implementing new features and myself working on the same repository is that retaining backward compatibility will be a big hindrance. But I don't want to give it up because it is the biggest selling point of my fork besides the multiplatform aspect. Either everything that changes the runtime behaviour has to be wrapped in if(loaded_game_file_version > xx) calls or we have to make a clean cut. Such a cut was obviously already present in the 3.2.1 engine since it didn't support the old audio system anymore and I had to hack it in again :)

If people prefer Github over gitorious I see no problem in switching. Gitorious is a bit lacking in some departments, especially the web interface to the repository is hardly usable. E.g. you cannot view diffs for large files, this includes any changes to ac.cpp for example.
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

Crimson Wizard

Anyway, I have started my own refactoring branch, forked from recent JSS's:
https://gitorious.org/~ikmspb/ags/ikmspbs-ags-refactoring

There are couple of txt files in the Documents folder (inside repository) where I tried to make a general explanation of my plans.

As I said earlier, I am open for any proposals for merge/collaborate etc. I chose "gitorious" for one reason: it was simpler for me to arrange things while cloning from JJS.

Crimson Wizard

Quote from: monkey_05_06 on Thu 07/06/2012 13:39:09
Coz the ScummVM team uses Git. He has stated multiple times that unless AGS uses the exact development model of ScummVM that it will fail and die...

Well, anyway, JJS moved his repository to github, and added changes to Editor from dev/3.2.2 branch (something I did not know about...), so I guess it is all coming to github :P
https://github.com/adventuregamestudio


(I followed: https://github.com/ivan-mogilko/ags-refactoring)

timofonic

#66
Quote from: Crimson Wizard on Sun 10/06/2012 21:58:55
Quote from: monkey_05_06 on Thu 07/06/2012 13:39:09
Coz the ScummVM team uses Git. He has stated multiple times that unless AGS uses the exact development model of ScummVM that it will fail and die...

Well, anyway, JJS moved his repository to github, and added changes to Editor from dev/3.2.2 branch (something I did not know about...), so I guess it is all coming to github :P
https://github.com/adventuregamestudio


(I followed: https://github.com/ivan-mogilko/ags-refactoring)

Nice. It seems there's some merging of your work into JJS repo too :)

I see both repositories lack a proper README file and maybe the history needs to be cleaned (I see your name, but not linked to your GitHub username). But after all, this seems a very good effort!

What about the other forks?

@monkey_05_06

Thanks for your appreciative comments to me :)

I think a distributed Open Source development model is more successful in a project of this nature, for different reasons. Git is one of the best options for it and GitHub is one of the best services these days for many reasons. You can do forks, pull requests, commenting parts of code for further reviewing of the involved developer(s) and a lot more.

I recommend you to read the book Producing Open Source Software (it's free to download) and this page about Git for further information :)

Crimson Wizard

#67
Quote from: timofonic on Mon 11/06/2012 13:28:54
Nice. It seems there's some merging of your work into JJS repo too :)
These are few fixes made before I started refactoring.
Quote from: timofonic on Mon 11/06/2012 13:28:54
What about the other forks?
If you mean my other branches, they are for internal use atm... I can't propose that for a merge right now while I am in the middle of the module splitting process. I want to reach a certain checkpoint when it will be clear that my work actually achieved something.
Then, there's still a need to check that all the platform ports are compiling, since there was a lot of structure changes.

Quote from: timofonic on Mon 11/06/2012 13:28:54
and maybe the history needs to be cleaned (I see your name, but not linked to your GitHub username).
I used to push changes from two computers when I used 'gitorious', and I had not have a chance to register second ssh key at my github account. I guess that could be the reason.

EDIT: nah, that was user email in the GIT settings.

sonneveld

It all looks good.  I won't be able to contribute in the short term as I'm a bit busy with other things at the moment.  You're welcome to use/borrow/ignore my code if you like!  I do think that eventually there needs to be a product manager/benevolent dictator to make some decisions about the direction of AGS.  Possibly someone like CJ but with more time I suppose!

timofonic

@Crimson Wizard

It seems you are doing a GREAT refactoring work, would you like to set up a development blog? So your effort would gain more visibility in the community.

Crimson Wizard

#70
Quote from: timofonic on Tue 19/06/2012 14:29:55
It seems you are doing a GREAT refactoring work, would you like to set up a development blog? So your effort would gain more visibility in the community.
Erm. My results there are quite raw at the moment. I did some mistakes and it ended up in a messy code structure. Right now I am checking Sonneveld's implementation to use his ideas and clear things up a bit.
But, yes, I finally splitted that ~30k line ac.cpp :D (and all other big files there).

I feel reluctant about any kind of "development blog" right now. My work won't affect 99% of AGS users, in other words those who do not work on code themselves.
My branch has yet to be tested under other platforms; and there are some fixes that need to be done prior to that (I mainly focused Windows). Tobias Hansen (aka Tobihan) is fixing Linux compilation right now.
I actually hope I will be able to give my work to JJS and thus make my code useful to community.

monkey0506

timofonic : Coding Project Management :: iceyfresh : RPG Development

It's funny, the GCC uses SVN. Amazing how quickly that project died from not being run by some ScummVM fanboy that knows nothing about programming or project management.

Snarky

Let's keep this thread productive and on topic.

timofonic

Quote from: monkey_05_06 on Tue 19/06/2012 16:17:36
timofonic : Coding Project Management :: iceyfresh : RPG Development

It's funny, the GCC uses SVN. Amazing how quickly that project died from not being run by some ScummVM fanboy that knows nothing about programming or project management.

You are funny, you should be the AGS project leader :)

By the way, there's an unknown project called Linux. It was the main reason of making Git, named after the creator of the project himself (that he likes to say "fsck you!" these days too). There's tons of other of bad examples of unknown projects here.

JJS, Tobihan and Ivan are doing the most interesting work. Most of that work isn't in the official repository. Now JJS's fork becomes an inofficial repository of AGS in GitHub but it seems the SVN repository still coexists.

Can anyone explain about this? :)

monkey0506

Sure, I'd love to explain that.

The source code for AGS has been released under the Artistic License v2.0 because Chris Jones is intelligent enough to understand the underlying implications of using the GNU Public License and the Lesser GNU Public License, and understands that they do not fit his personal requirements for the program which he himself was practically the sole contributing author of (giving note to those who did the Mac and Linux ports) for more than a decade.

Because the source code has been released under the Artistic License v2.0 and not the GNU Public License, Chris Jones is able to retain more control over what changes are persisted into the official trunk of the AGS source code. All other forks (etc.) are explicitly required to be labeled as derivative works.

Chris Jones himself is not highly active around the forums, but he has given rights to a select few (myself included mind you) who are able to use things like discretion to determine when the time would be appropriate to merge code into the official development branch. JJS' code has undergone a fair amount of peer review (at least in terms of the compiled engine), but as he is developing it as a separate fork, it wouldn't make much sense to just commit every change he makes into the development branch.

The refactoring efforts are also a point of concern, primarily as they are extremely likely to cause a break in backwards compatibility. This is a major issue for those who understand AGS. The common regard is that a more stable 3.2.2 should be developed prior to integrating refactoring efforts, and the latter can be implemented in a later version (discussed as a potential AGS 4.0). This would allow the refactoring to break a few things here or there without having to worry about disenfranchising the 3.2.* branch of the program.

Believe it or not, there has been quite a lot of consideration given to these points and they are not simply being ignored. The SVN is, and will for the foreseeable future remain, the official repository used by AGS.

Second runner up by popular vote isn't bad...Besides, I hardly suspect you know enough about AGS culture to have even gotten the reference.

Crimson Wizard

Come on, people....
Quote from: timofonic
By the way, there's an unknown project called Linux. It was the main reason of making Git, named after the creator of the project himself (that he likes to say "fsck you!" these days too). There's tons of other of bad examples of unknown projects here.
What monkey's point was (at least that's how I understand this), - the choice of the source control system won't automatically make project successful or unsuccessful, nor make a difference between life and death. Personally I would not care a little bit if I had to work with SVN (I did for several years before... and nothing bad happened).

Quote from: timofonic
JJS, Tobihan and Ivan are doing the most interesting work. Most of that work isn't in the official repository. Now JJS's fork becomes an inofficial repository of AGS in GitHub but it seems the SVN repository still coexists.
Seriously, so what? It is always nice to have a separate branch or repository with stable version. It is in other rep, under different source control system? I see no problem in that too.

Quote from: monkey_05_06
The refactoring efforts are also a point of concern, primarily as they are extremely likely to cause a break in backwards compatibility. This is a major issue for those who understand AGS. The common regard is that a more stable 3.2.2 should be developed prior to integrating refactoring efforts, and the latter can be implemented in a later version (discussed as a potential AGS 4.0). This would allow the refactoring to break a few things here or there without having to worry about disenfranchising the 3.2.* branch of the program.
Hmm, that was in my primary concern to not break anything whether it is compatibility or anything :).
I seriously believe that 3.2.* branch should be made cleaner by refactoring - this would allow it to remain up-to-date even further and with lesser effort. Or maybe it should be some AGS 3.3.

JJS

Is there a planned release date for 3.2.2? Or is there some sort of "to do" list for it so that other people could help getting it finished?

Quote from: monkey_05_06 on Wed 20/06/2012 04:25:43JJS' code has undergone a fair amount of peer review (at least in terms of the compiled engine), but as he is developing it as a separate fork, it wouldn't make much sense to just commit every change he makes into the development branch.
Fact is that nothing from my fork has made it into the official repo and nobody with access to it has ever contacted me about merging code. Just wanted to clarify on this.
Ask me about AGS on PSP, Android and iOS! Source, Daily builds

Crimson Wizard

I have a question: was there anywhere a discussion or any attempt to make a list of core features AGS engine needs? I do not mean suggestions like new script function or different editor look, but more general ones?
This is too early for actual implementation, but it would be probably nice to begin composing such list for future reference. I believe that is actually important, since adding random features without having principal direction in mind would eventually clutter both engine and editor.

I would list some here to show an example of what I am talking about.

1. I'll start with something ProgZmax mentioned in other thread:
Quote
Reformatting game saves so that they continue functioning after game re-compiles, patches, and work regardless of resolution.
In fact that isn't only about savegames. Literally everything in AGS is being serialized in such a way that it would be impossible to change a data structure (like add new variable) without breaking compatibility with the game made in previous version, let alone saved game.
Thus, I believe, primary concern should be to change the way ASG writes and reads data (game data and in-game saves) and make each data struct (or at least each main data struct) to detect what is the version and/or format of data it is loading and store it appropriately, with corresponding conversion if needed.

2. Removing static limits.
AGS uses static-size arrays for many things, and there's practically no more real sense in that. I don't mean these limits aren't enough, I mean there's no need in them since we may use dynamic arrays (classes), so that no one would ever bump into such limit.

3. Class system.
This is not only about rewriting existing sets of global functions and variables into classes (Character, Room, Hotspot, etc). There could be things that are better managed by classes to provide extensibility.
Think of Speech Style class, for instance, or Room Transition class, with possibility to add corresponding items to game project tree in the editor and customize them as you wish.

4. Engine plugin interface.
Apparently plugin system is made a bit awkwardly; there is a bunch of data structs, that mimic internal engine data structs, accompanied by commentary telling not to change anything in them (otherwise game will crash). Basically when a plugin uses IAGSEngine interface to get game data, plugin system plainly reinterprets internal data address as a pointer to corresponding plugin struct. I understand CJ had certain considerations when he was writing it this way, but if we are to improve the engine, this system should be probably enhanced as well.


Please, tell your thoughts.

PS. And can anyone please explain me at last, are there any development coordinators in charge here? Speaking of plans while there's no one to approve them is like standing at the town square yelling and hoping someone will listen  :undecided:

BigMc

Quote from: Crimson Wizard on Fri 29/06/2012 21:38:50
And can anyone please explain me at last, are there any development coordinators in charge here? Speaking of plans while there's no one to approve them is like standing at the town square yelling and hoping someone will listen  :undecided:

You are the coordinator of engine refactoring (and if you want also of new features). :) Until a majority of commenting people tells you otherwise.

You could start a list in the AGS Wiki or the github Wiki.

AGA

Use the Project pages!  There are both 'Issues' (bugs) and Features listing options.  I'll set up a sub project for the refactoring, giving CW rights, if you like?

SMF spam blocked by CleanTalk