Posts Tagged ‘development’

Libraries Should Use Liberal Licenses

Monday, January 25th, 2010

One of the biggest concerns I have working on WordPress and developing libraries is that any library I develop is going to fall into the GPLv2 license and I’d rather people use my code anywhere for any purpose. Quite frankly, if someone wanted to take the code and develop a commercial product, then so as long as they don’t say they wrote it, then I’m happy. When writing libraries and code for WordPress, you don’t have that choice or power.

The advantages of having your library as part of WordPress is the support. If there is a bug in the library, then a fix is going to be patched for WordPress and hopefully sent upstream. Plus, the amount of people working on WordPress and fixing problems is going to be more than your project and the number of users is going to be greater as well. This has benefits in that bugs will be found and fixed sooner leading to a faster development cycle that isn’t completely dependent on your work schedule.

That said, a library can be another license just fine and work within WordPress. Any library code I develop for WordPress (controller) is going to be New-BSD and whether it is included or not is up to the developers with commit access and the community. There are others developing a solution that will be more GPLv2, so it is unlikely that within the next few months that I finish my project and port it to WordPress that it will be needed.

The point is, is that applications should be restricted, because they take longer to develop and thus developers using the project have more incentive to follow the rules of the license. A library can probably be recreated within a reasonable amount of time depending on the developers skill and experience.

I think given that fact is why I keep weighing the benefits of using WordPress verses not using WordPress for a current project. Sure, if I focused on just the project elements I could have the project completed relatively soon, but contained within the confines of WordPress and the way it does things, the project wouldn’t stand on its own well enough. The license of WordPress itself is compatible or will be compatible with my project. I’d be using GPLv2 for the application HTML and administration code. It is just simply that I can get away with coding the framework quickly on my own without all of the so called bloat of WordPress.

I can build much of the WordPress core for what I’m needing, the news and content feeds. Really, I think I can probably just strip down what WordPress has and just have a even more limited subset. If I did this, then the code base would be smaller. I could also build a bridge that would take advantage of WordPress, if the application had DB access to the tables. Alas, I could even just go with RSS and ATOM standards to allow for the news to be pulled, but that doesn’t complete the content portions.

Really, that is what drove me to using WordPress in the first place, but I’m thinking that writing a library that is New-BSD would serve my purposes better. I could always use another class library or framework that used a liberal license. That is really the beauty of using such a non-restrictive license, in that you are open to do and enjoy a larger amount of freedoms.

I don’t really mind someone creating a commercial component for the application, because really if there ever grows a community that draws upon the project, then I did something right. Serving a purpose and not limiting people based on some perceived notion of fairness for users totally ignores the real problem. I wouldn’t want someone stealing my code and making money off of my back and off of others, but most programmers don’t sell libraries, they sell solutions and products. A library is not a product and its usage serves only to help create a product, if it helps to create one quicker and better than the programmers using it could have otherwise, then I believe both parties were well served.

Another problem I have with WordPress is that you’re required to work around its flaws to create a product. What does WordPress do well? It does content and administration well, so plugins and applications are built around WordPress that extend these areas. What it doesn’t do well is allow itself to be without neither content nor administration. If you use the administration, then you must use the content portions, there is just no other reason to use WordPress. Alas, you either must use the content portions or you must hack your way around them.

WordPress doesn’t lend itself to applications that aren’t related to content in some way. I do think that WordPress will become better and I believe that most people look beyond the license, because it really is an okay one. For those that wish to do without, there are other projects and frameworks that exist and recreating WordPress wouldn’t take very long.

Well, I say that and really I think people might miss the point with the statement. What I mean to say is that a programmer can develop a theming system pretty easily, it may not have all of the features of WordPress, but it would work fine. WordPress theming and plugin system is simple for most competent programmers to reproduce and even hopefully do better. The bulk of what gives WordPress its size and what would take the longest to reproduce is the Administration and convenience APIs. What I mean really, is that you can do without them. I’m not really saying it would be simple to rewrite WordPress, but to take what it is and recreate it.

Which is what I’m doing, all I need is the content management (pages) and the news (posts). Everything else about WordPress, I can either do without or recreate fairly quickly myself. Still, it seems I would have been better served if bits of the API were liberal licensed. I don’t believe BackPress has a liberal license and I believe that is a shame. Even more so, because most of BackPress could be quickly rewritten with a liberal license and would make it obsolete. Not to say anything about bugs and documentation. However, generally, once you’ve written the API that obsoletes one in BackPress it becomes relatively simple to maintain it and match any improvements made to BackPress.

The point that I’m trying to get across is that applications, if they are done well, are harder to reproduce than libraries. And really when I say fairly quickly, I generally mean someone or a group with a lot of time of their hands with three months to kill.

Possibly Related Posts:


Panel Progress Report

Sunday, December 19th, 2004

Admin Access to Disabled Game: FIXED

I had forgotten about the fact that I disabled a game sign in, I had disabled it for the admin also. I fixed that and it wasn’t that hard to do so. Well, it won’t be that hard to add new people to the list, even if the list is hard coded. I can always make the list dynamic later but for now there are only a few people that need access.

Registering: Completed!

I have the error checking part finished and now I need to put the text information in so that people can read the errors. After that I need to add the register information and send the email to activate the account.

Profile: On Hold

I’m going to wait on the profile until after I’m done with the DBZ game. I don’t have the time to create it like I thought I did and it isn’t important right now. I hate having to cut back on my plans like this but I really need to start the DBZ game and finish most of the parts of it before I start school again. Once I start school again, I’m not going to have that much time to work on the games again and will have to do most of the work in the summer time.

Mecha Asylum Alpha 3: Planning Phase

Mecha Asylum will be built in pieces and I plan on adding some premium features that people pay for but not that much. I will need to plan some worth while features that people will actually want to pay a little bit of money for or it isn’t going to be worth it. I figure I need a little bit of money that the game may or may not draw in. With the current member base, that isn’t going to happen but it will eventually.

Possibly Related Posts:


Profile Roadmap

Friday, December 10th, 2004

Finished: 0%

Introduction

The profile is where the player goes to change his preferences or edit their contact information. The whole design advantage behind the Absidon Games Panel is that I won’t have to change each feature on all of the games and only have one place to edit. Some features, I will have to add support to but the interface is going to be at the panel. Another reason for the Panel is to get more people coming to the Absidon Games web site and to promote the other games depending on which one the person is playing.


Status

The profile will show the overall status of all the player games so that they will be able to manage all of their games better and perhaps join new ones. If the player hasn’t joined a game then there will be an option for them to join it. I’m not going to automatically join the player to all of the games, that would be wrong and cause bloat to the tables. The player will also have the option to delete the game and stop playing it or start over.

Manage Account

  • Change Password
  • Account Deletion (and removal from all games currently in)
  • Security: IP Sign In log.

Contact Information

  • Change E-Mail address.
  • Add IM information.
  • Future Information that I may add.

Preferences

<0l>

  • Automatically redirect to Site.
  • Security: Restrict access to games by IP.
  • #1

    If the user doesn’t want to have to click the link every time then they will have the option of checking the box that allows them to do so. If the Sign In fails for some reason, then they will get the error message. The less steps for them to get into the game, the better.

    #2

    This a security feature that allows the player to restrict access to only a set number of IP addresses. I think I will wait on this feature because I will have to have a backdoor in case the users IP changes and they need to reset the feature. I was going to have it just for the games sign in but if they can get in to the profile then they can add their IP and then get in. I could make a password for the IP configuration but the user may also lose that. It would be nice to have this feature and I will try to implement it if I have time or later when I have nothing better to do.

    Possibly Related Posts:


    Register Account Roadmap

    Tuesday, December 7th, 2004

    COPPA Policy

    Completed!

    The policy will have to be updated so that it will be somewhat legal. I don’t know, I will email the parent and have them click on another link to activate the account. The child could use their own email and click the link themselves but that isn’t really my problem as long as I follow the policy. Well, I really need to update all of my policies so that they are understandable.

    Form

    Completed!

    There isn’t much to the register form, just the basic information. I don’t think I’m going to update the register after I create it. If I add something new, I will add to the profile instead and allow them to update it there. Registering is already a two step process of registering first at Absidon Games and again at the game to add their name to the tables. This form also has validation for the input values so that the user doesn’t give something that is unacceptable.

    The second part is different depending on the game and I will have to develop each second step for each version of each game so I’m not going to worry about that here. All this form is going to do is add their name to the list of users who can play the games. Since there is one “complete” game (Mecha Asylum is still in Alpha but is playable) and another one in development but I still want to use the new register and sign in for that game.

    Activate

    Completed!

    This is part of the registering and the user will need to click the link in their email to activate their account. The page will give the email address and username and ask the user if they really want to activate their account. If they say yes, the account will be set and if the user says no, then the account will be deleted. Really, I think this script is too

    Recover Account

    Completed!

    Allows the user to get a new password if they lost their old password. This script randomly assigns an eight character password and emails it to the user’s email address.

    Conclusion

    Really, the only reason why I’m putting Activate and Recover Account in with register is because these script aren’t all that big or difficult to make and I don’t want to make a new post for them. They really do belong with registering because they have to do with the user’s account.

    I think complying with the COPPA policy and making it more accurate is going to the most difficult part of this and take the longest because of all the research and thought that is going to go into it. Most sites just don’t allow players under the age of 13 but they really don’t need to do that if they comply with the rules and try their best to allow the parents to deny their children permission to play the game would be a better path to follow. I think if I can afford it later and get more traffic that I will hire a lawyer to help me make a better one but for now I think I will need to make due with what research I uncover and go with that.

    Possibly Related Posts:


    Sign In Roadmap

    Sunday, December 5th, 2004

    Referer Check

    Finished: 100%

    I want to make sure that the sites that are trying to sign in are trusted sites and not some guy trying to access the databases and cheat. I should try to do everything I can to protect the people that are signing up to play the games that they are as fair as possible.


    Feature 1: Finding the Right Site to Redirect

    Complete!

    One feature that I still have yet to implement but I am close to finishing it soon. Well, the feature isn’t really that important but would be nice to have since all other sites implement the same feature as well. The feature I am talking about is redirecting to the start of the game site. I can already tell which site the player signed in from and can guess where they are trying to go from there.

    The reason for this feature is, when the member signs in from when the previous sign in fails, the redirect will bring them back to the sign in page. This is a problem because they are already signed in and have no purpose being at that page. Where they should go is the start of the web site, whether the game or the control panel. This should be easy if I just redirect to the first page of the site the user signed in from. Shouldn’t be that hard at all and I should be able to implement it in a few minutes.

    Feature 2: Profile Set for Automatic Redirect

    Not Complete!

    I was going to just redirect the player directly to the site they signed in from if the sign in process succeeded but I figure they may want to access the Control Panel from any site instead. I should probably set up the profile to where they can automatically redirect back to the game site when they sign in. I could do that too, after I complete the previous feature. I will also have to create the Profile page and update the database for this feature. I will have to come back to this feature later.

    Account Check

    Finished: 100%

    This comes with the need of error checking and helping the member find the reason or problem of why they can’t sign in. The problems that could occur are many and I, the developer, should help the member as much as possible to figure out if the mistake is their problem or mine. If it is their problem, then I should give the solution to the problem or if it is mine then I should correct it.

    Account Problems:

    1. Invalid Email/Password Check.
    2. Banned User.
    3. Vacation Mode.
    4. Not Activated.
    5. Game Sign In Disabled.

    Possible Solutions:

    #1

    Complete!

    If the account isn’t found then it could be the result of the member inputting the wrong data. If that is the case then I should tell the user what part is wrong. I hate trying to Sign In and failing only to get the message, “Username or password maybe inoorrect!” Which part is it? It isn’t hard for them to tell me, or are they not telling me for security reasons? No matter the purpose, I should know, and so I will tell the person which part of the Sign In failed. If the username or email part failed then of course the password failed but I should tell the person if the username or password failed because it doesn’t exist or because the password is wrong.

    #2

    Complete!

    If the user was banned, then the reason and the time will be given when the user tried to sign in. Contact information will given to the former member to make a claim to rejoin. If the member is bad enough then that user may never be able to register with their email or IP address. It is difficult banning IP address if the computer is public because it would block ‘good’ members trying to register.

    #3

    Complete!

    Vacation mode is set when the player is going to be away for a long time and doesn’t want to be attacked and killed by everyone while his money gets higher. I can’t decide if I’m going to allow the income and attack points while the user is away.

    #4

    Complete!

    The user must have a valid email account because of spammers and for people trying to set up multiple accounts. Also, account information will be sent to the user. We must also find out if the email is correct and that the owner of the email actually wants to play the game. If the account isn’t activated then the user can’t play and needs to be told that they need to activate their account.

    #5

    Complete!

    Another feature I’m going to implement, is for when I change versions and I don’t want people signing in and finding out that they can’t play at that moment. Or if there is a bug and I don’t want people to see my debugging code.

    Other Problems

    If the script fails for some reason and it isn’t the user fault then I should be told but I haven’t figured out how that will happen.

    Sessions

    Not Complete!

    Setting up the Session is also going to be a big deal and will require me to restructure all my pages (not as big as I make it seem) to keep the member from signing in all the time. This shouldn’t take long and all I need to do is copy and paste the old code to this script and I’ll be done.

    Anti-cheating and Logging

    Complete!

    I’m trying to attempt to stop people from taking out two or more accounts and logging of the Signing In. Really, all I’m doing is logging information and then after I do this I will create some scripts to run against the table. I’m sure that any player can create something to fool the system but will catch most players. Right now I feel this basic system is good enough until I can find a better system.

    Conclusion

    That is all there is, really. The Sign In script isn’t a big project but requires some features that I wish I had put in the previous system. One major screw up I did was with the Registering script. Ah, damn, I’m still kicking myself for that screw up.

    Possibly Related Posts:


    Absidon Games Panel

    Saturday, December 4th, 2004

    When I created Mecha Asylum, which was January of 2004, I was creating the design of the game. Finally, in the summer I decided that I would never get a good enough design and started to actually create the game. The problem was that I need to get the basic game up before I did any of the game, which was:

    • Sign In
    • Register
    • Activate Account
    • Anti-hacking System

    I had to get these up pretty fast and so they were mainly incomplete. I think I should have used my old code for this site from the ‘Mecha RPG’ development days. When I realized that I was going to create more than one game, eventually, I started Absidon Games.


    What I’m facing now is a game that has a lot of members who would be extremely pissed off if the register was deleted (again), so I can’t just drop the users when I change systems. The new system has to work with many different games and web sites. Making it work with different games isn’t going to be hard but converting Mecha Asylum over to the new system is going to be a pain in the ass. I don’t have to worry about that until I start making the third alpha version, but that is another topic for later.

    The new system is going to have a lot more features and have errors messages given back to the user when something goes wrong. Another nice thing about the new system is that I won’t have copies of the scripts on all of my game web sites. When I make changes to the script or something is wrong then all I need to change is one script. When I add more features or make changes, it will speed the process up. I won’t have to find all of the old scripts and make them work with the new system and debug them all.

    Forgot Password

    This script has been needed for a long time. The reason I haven’t made it is because I didn’t think it was that important and couldn’t think of a good way to make the script work. I am going to add the script to the new system so that people will be able to get a new password if they lost their old one.

    Control Panel

    New ‘Manage Account’ scripts:

    • Change Password
    • Delete Account
    • Vacation Mode

    I want the user to be able to change their password after they make it for when they get a new one in their email or for when they dislike their old one. It is always good to have the option to change ones password every so often for security reasons.

    If the person doesn’t want to play any more and would rather save us the trouble of storing the users account information then they should have the option of deleting their account. A lot more sites are implementing a vacation mode where the user can’t be attacked but also can’t play or sign in for an extend period of time. This mode will be game wide so one place if the player plays more than one game.

    Profile

    There will be times when I will add to the profile for the members. If would be up to them to add the information when I add it. It would help me and other members, if the user wants to open his information up to those members. If the person is in a group, the IM information will be open for the owner to get in touch of the user.

    Other Plans

    I thought that would be good idea to have some game options in the Control Panel, like seeing the status and entering the planets from the control panel. I may still have that but then again, I think having the same script in two places would still be a bad idea. I will display some information, like status for all the games so they will be able to get an overview of the games they are in. Another plan I have is allowing the player to opt-in and out of the other games from the Control Panel. Again, one area for quick administrative tasks.

    Conclusion

    I’m sure I will eventually add more to the Control Panel from comments from the players and from my own ideas. The Control Panel will start out pretty basic from the lack of there isn’t a lot of games for them to play but it will grow into something that I want the player to use at least once or twice a month. I believe that the game should have game controls for maintaining the game only. The stuff that doesn’t really have to do with controlling the character and managing the game areas should have a separate place for it.

    There are only two games right now, well, there is really only one game that is complete enough to add to the cpanel but during the development of the DBZ RPG 2 game, I will add to the cpanel with management features similar to what is going to be in the Mecha Asylum game. Well, the DBZ RPG 2 game is going to have a hand up on Mecha Asylum because I’m working on the Control Panel after I complete the second alpha and I’m not going to go back and edit the code to work with the new system. Alpha 3 of Mecha Asylum is going to use the new system and Control Panel. I’m still going to add some features of Mecha Asylum before I start Alpha 3. It is just that since I will be done with the new system while I develop the DBZ RPG 2 game, it will have the features first and then Alpha 3 will have the same.

    Possibly Related Posts: