In the world of software development, applications pass through many phases before being released, some of which include designing, planning, coding, testing, Alpha Release, Beta Release, Release Candidate, and finally Release. This guide is intended to help the people involved in public/private beta tests that do not have experience programming, but would like to give valuable feedback to the developer.
Disclaimer
This guide is specific to programming for the Windows Mobile Operating System, specifically for the .net Compact Framework 3.5. However, the main concepts should translate over to other platforms and frameworks.
In the beginning...
First off, programming is hard. Building applications that run smoothly and are bug free require considerable amounts of time and energy. In short, software development is an emotional investment on behalf of the developer.
Because software development is an emotional investment, developers will easily take offense to criticism. This is where rule number one of giving constructive feedback comes in:
Rule number #1, When Giving feedback, be polite!
During my time on XDA-Developers I've been very happy with level of professionalism demonstrated by its members, but every once in a while I'll see a comment like, "This app sux!" or "Eff Dat shiz!".
Always remember, rude comments only distract other users, cause contention, and cause the developer to become less motivated (less emotionally involved) to produce software. If the application is not working on your device, remember the developer is the first person who will be able and willing to help you resolve your problem, so they should be the last person you want to offend. [1]
This is where the term Troll comes from. A troll is not the ugly monster that lives under the bridge, but is someone who is like the fisherman that "trolls" the river for fish (or heated response in the case of internet trolls)
Rule number #2, be constructive!
What's interesting about this rule is that the phrase "be constructive" in itself is not constructive. So how do you "be constructive"? Labeling a comment as constructive is not deterministic, or in other words there is no formula to test whether or not your comment is constructive. The rules in this guide will attempt to give you some pointers to giving constructive comments, but in the end, only a mix of common sense and human reasoning can determine if a comment is constructive.
Some examples of non-constructive comments
The app is broken
"It" crashes all the time!
I get an error message, plz help!
When will the app be finished?
etc
Rule number #3, if the app crashes include details about the crash
Let's be honest. Programmers aren't perfect. In a list of common excuses given by programmers in response to different bugs, the number one response was "Well, it works on my machine!". If you are a developer you know this is true! I catch myself using this phrase all the time! But, what can we learn from this? Well, first, the crash/bug you are having might not have ever been seen by the developer (if it had, chances are they would have fixed it!). Because of this, you must include as much relevant information about the bug as possible.
What is considered relevant? That is the million dollar question. I will attempt to give some guide-lines on how to determine what is and what isn't relevant.
Rule of thumb: When in doubt if info is relevant, include it.
It is hard to include too much information (hard, not impossible), but it is very easy to provide insufficient information to the developer.
What did you do?! Is it reproducible? What did you expect to see?
The crash isn't your fault. But if the developer doesn't have the steps to take to reproduce your error, they can't find the bug!
When you get a crash, first thing you need to do is try and remember as many steps as you can to reproduce the bug. Then, restart the app and follow the same steps to try and get the crash screen again.
You need to tell the developer if the crash is Always reproducible or only sometimes reproducible. Then you need to create a list of steps to get the crash. Try and always use an ordered list when doing this. It makes it easier to read and follow.
Finally, tell the dev what you were expecting to see and what you actually saw. Some bugs don't crash but instead produce results that aren't exactly what was expected. For example, "I clicked on the 'Read' button, it won't let me read the page!" Well, the bug in this case could be that the word "Read" is ambiguous and really means "have Read" as in "I have read the page already, so mark the page as 'Read'". This is a "What I expected and what I got" error. All the info that is required is the steps to reproduce, what you were expecting and what you got.
What is your device/ROM/Windows version?
Sometimes this is necessary, so if your device is not in your signature, include it! If it is in your signature, include it anyways!
The Crash Screen
If you are lucky enough to get a crash screen, most likely you will be able to supply enough information from the error message to the developer for them to figure out what went wrong.
If you receive the following message (or a translation there of), you must take an additional step in order to get the real crash message:
"An error message is available for this exception but cannot be displayed because these messages are optional and are not currently installed on this device. Please install ‘NETCFv35.Messages.EN.wm.cab’ for Windows Mobile 5.0 and above or ‘NETCFv35.Messages.EN.cab’ for other platforms. Restart the application to see the message."
Click to expand...
Click to collapse
This error message means you don't have the right software installed to display the crash message. To fix this, load the appropriate cab onto your device. Message cabs are located at: C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\Diagnostics
If that directory does not exist, install the Power Toys for .NET Compact Framework 3.5 and check again.
Anatomy of the Crash screen.
Here is a crash details report from my XDAFacebook application. I will describe each part and what they mean, what's important and what the programmer is looking for:
XDAFacebook.exe
ObjectDisposedException
at Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
at System.Drawing.Graphics.DrawImage(Image image, Int32 x, Int32 y)
at XFControls.XFPanels.XFPanelList.PanelPaint(Graphics g)
at XFControls.XFPanels.XFPanelBase.OnPaint(PaintEvent Args e)
at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterModalDialog(IntPtr hwnModal)
at System.Windows.Forms.Form.ShowDialog()
at XDAFacebook.SplashScreen.SplashTimer_Tick(Object sender, EventArgs e)
at System.Windows.Forms.Timer._WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.ApplicationThreadContext._Int ernalContextMessages(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at XDAFacebook.Program.Main()
Click to expand...
Click to collapse
The first line: XDAFacebook.exe is the application that crashed. This is important, because if the application relies on multiple .exe files, the one that crashed needs to be known. Always include which .exe crashes.
The next line is the type of exception that was unhandled: ObjectDisposedException. This is also very important. Always include this in your report. If anything, this is the most important piece of information.
The next part is called the Stack Trace. In 2 sentences, the stack trace is an ordered list of methods (or functions) that pin-point where the in the code the crash happened. Think of it as turn-by-turn directions to the line that caused the crash.
The stack trace lines have 2 parts, the NameSpace and the Method. The NameSpace is the series of "Strange word followed by a Period". The method is the "Strange word followed by parenthesis that might have strange words inside". In XFControls.XFPanels.XFPanelList.PanelPaint(Graphics g), the NameSpace is XFControls.XFPanels.XFPanelList and the Method is PanelPaint(Graphics g)
Some of the lines aren't important. Most of the lines are. The most important lines are usually at the top and will have NameSpaces that looks like the application that crashed (or don't look like they come from Microsoft). The best thing to do is include all of the stack trace, but it is also good to know what exactly you are telling the programmer.
Here is basically how I would read the stack trace above:
Hey, your application XDAFacebook.exe had an ObjectDisposedException exception that was thrown by the System.Drawing.Graphics.DrawImage(Image image, Int32 x, Int32 y) method, which was called by FControls.XFPanels.XFPanelList.PanelPaint(Graphics g) inside the XFControls.XFPanels.XFPanelBase.OnPaint(PaintEvent Args e) method.
Click to expand...
Click to collapse
If any of those lines weren't in the report, I wouldn't be able to get the full picture. So, unless you have a good understanding of the application's source, include the full report!
Developer Defined Messages
Developers try to handle as many errors as possible. In the case that you get a Message from the application signifying some kind of error has occurred, supply the message the occurred, the steps you took to get the error and your "What I expected and what I got". If the message isn't enough information, the developer needs to change his message.
Also, check for any debugging options which the developer may have included, such as a log file. These either tend to be automatically generated files in the install directory, or they exist as a viewable panel within the application. Check with the documentation or ask the developer where these log files exist [1]
Rule number #4, be smart.
I should put this higher in the list, because it really should be the first thing you need to do.
First thing you need to do is make sure you have the latest version of the software installed. Also do a quick search of the thread to make sure that the bug hasn't already been reported. If it has been reported, I personally don't mind a quick "I have the same problem, here are the steps I had to reproduce..." with a link or quote of the original error.
This guide will be updated as I come up with new observations and as people respond with questions/suggestions. Please tell me what you think of the guide and always try and be constructive when you are beta testing software!
Thank you
**updates**
[1] 12/7/2010 (Thanks meltwater!)
This is one of the best guides I have seen on any forum. This holds not only true for feedback about a program or your program, but jsut about any post or feedback on an Internet forum. Thank you very much for posting this, and I hope more folks read it.
Rule number #1, When Giving feedback, be polite!
Click to expand...
Click to collapse
this is one of the things most people forget to observe when commenting.
Thanks for the comments. Yeah, I hope that this list can help with the beta testing process.
If I were a Mod, I would so Sticky this for all to reference in the future.
[Hint Hint]
Hungarian
I did a Hungarian translation quickly. I am checking errors and all, I will upload a version without accents, unless someone tells me how to conver áéöő etc etc.
For this great Feedback Hint - Topic I can only give my Feedback: "EXCELLENT" !!!
Thanx for this work - I directly linked it to the CHTS FAQs
Keep up your great work!
Micha
MichelDiamond said:
For this great Feedback Hint - Topic I can only give my Feedback: "EXCELLENT" !!!
Thanx for this work - I directly linked it to the CHTS FAQs
Keep up your great work!
Micha
Click to expand...
Click to collapse
Thanks! I hope that other devs can benefit from this guide I've seen the quality of comments rise a little in XDAFB thread since I've posted and link to this. Hopefully as more people learn what we need and look for, we can improve our software faster
Great one!
joe_coolish said:
Thanks! I hope that other devs can benefit from this guide I've seen the quality of comments rise a little in XDAFB thread since I've posted and link to this. Hopefully as more people learn what we need and look for, we can improve our software faster
Click to expand...
Click to collapse
Nice one!
Sometimes it is easy to forget that the user does not know your software inside out like the developer does.
I would also add to: Developer Defined Messages
Check for any debugging options which the developer may have included, such as a log file.
For instance, your XDAFacebookDebug.xml file.
Also you could add to Rule1:
If the application has causing some serious problems on your device, remember the developer is the 1st person who will be able and willing to help you resolve your problem.
here is Slovenian translation for XDA Facebook:
rapidshare.com/files/434748120/Slovenscina.rar
Best regards
meltwater said:
Nice one!
Sometimes it is easy to forget that the user does not know your software inside out like the developer does.
I would also add to: Developer Defined Messages
Check for any debugging options which the developer may have included, such as a log file.
For instance, your XDAFacebookDebug.xml file.
Also you could add to Rule1:
If the application has causing some serious problems on your device, remember the developer is the 1st person who will be able and willing to help you resolve your problem.
Click to expand...
Click to collapse
Thanks! I made the updates Great suggestions
beta 4.1.1
downloaded this yesterday & gotta say I like it, like the presentation & the nice big buttons, very finger friendly.
I've attached an error log file for you, I'm running this on a TP2 with win mo 6.1 upgraded to compact framework 3.5.
The only issues I've noticed are that the messages shown in the inbox are actually my sent messages but other than that no problems.
If I may make a suggestion it would be nice if the blue banner at the top that contains the title of the page you are on could be clickable to take you back to the home page shortcuts.
Thank you very much for your work creating this app, great.
Jon
As a developer myself I cannot stress enough the importance of the original post of this thread.
This information should be passed on to everybody at this site. I mean this is xda-DEVELOPERS. So, the formation of good testers is what also allows us to be good developers.
I have also suffered my fair share of badly constructed feedback from time to time. And most cases the users don't do it on purpose, they simply have no idea of what information they should provide, and you have to constantly tell them what and how to do it.
To summarize, please oh please, make this sticky in a visible forum. It would really mean a lot, as it would help form the next generation of users and testers
Kudos,
João Jacob
Thanks this was a great guide, idk what Id do without it.
To bad I don't criticize (often), maybe report a bug or two lol.
jontp2 said:
downloaded this yesterday & gotta say I like it, like the presentation & the nice big buttons, very finger friendly.
I've attached an error log file for you, I'm running this on a TP2 with win mo 6.1 upgraded to compact framework 3.5.
The only issues I've noticed are that the messages shown in the inbox are actually my sent messages but other than that no problems.
If I may make a suggestion it would be nice if the blue banner at the top that contains the title of the page you are on could be clickable to take you back to the home page shortcuts.
Thank you very much for your work creating this app, great.
Jon
Click to expand...
Click to collapse
Shouldn't you be posting this in the XDA FaceBook App thread?
quite right Bob, followed wrong link
Super guide, thanks a lot.
People forget so easy how important it's to leave feedback.
Only with feedback applications/roms can be improved.
Besides that a thank you is indeed also nice and keeps you going developing as that's why you develop to see how happy people are with the work you share.
If nobody leaves feedback or a thank you what's the use to share isn't?
Laurentius26 said:
Super guide, thanks a lot.
People forget so easy how important it's to leave feedback.
Only with feedback applications/roms can be improved.
Besides that a thank you is indeed also nice and keeps you going developing as that's why you develop to see how happy people are with the work you share.
If nobody leaves feedback or a thank you what's the use to share isn't?
Click to expand...
Click to collapse
I totally agree. I also really like your signature! That is one of the reasons I open source most of my projects. I learned how to program from a lot of open source projects, so I like to give back and hope someone learns from my work
Thank you for your comment!
Hello my friends. Thanks for this great app... Well... I've being testing in my touch pro 2. When I've tryng to open a picture from the "feeds", and error message is shown and the app was closed. I look in the file directory and found the "ErrorLog.txt", and says this:
NullReferenceException-en XFControls.XFPanels.XFPanelBase.prepSlideLeft()
en XFControls.XFPanels.XFPanelBase.OnMouseUp(MouseEventArgs e)
en XFControls.XFPanels.XFPanelList.OnMouseUp(MouseEventArgs e)
en System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
en System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
en Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
en System.Windows.Forms.Application.Run(Form fm)
en XDAFacebook.Program.Main()
Sorry by my english... Is very poor. Saludos desde Venezuela...
Sorry guys for the newbie question.
i have searched google and downloaded some examples of using WebView
but i don't think that is what i want because webview still uses the Search Bar..
What i want to do is:
:
1. i have a mobile site made up already to fit most android devices.
2. I want to wrap it i guess and create an APK..
what would be the best approach?
This isn't goign to be commercial, just an apk that i will share with some friends.
- I thought i could simply wrap it, but i am a bit lost.
maybe i am lookign for the wrong thing.. on google
I've never seen a web view that uses a search bar..
you should be able to do something like
Code:
WebView wb = new WebView(this);
wb.loadUrl("http://www.yourpage.com");
setContentView(wb);
and don't forget to set the right permissions.
It might help if you told what the webpage is that you're trying to show.
I have a website I'd like to this with.
http://www.rottweilertoday.net
I'd like to have a downloadable app that does nothing but take the user to the url.
Any thoughts greatly appreciated as always.
Are you still looking for this? If so send me an IM, I'm currently creating exact that!
to convert webpage as apk use appgeyser
If you want fullscreen app just use this on your Activity with webview:
Code:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Ok guys, i think im ready to go to the journey of building my app. With the basic knowledge I have and Google by my side, I'd say I'm ready... or am I?
Ok, basically my app is basically like a planner, the user is presented with a calendar and the user clicks on a date on the calendar and a message comes up asking what to note down on that date. Thing is I have no idea how to do that. Well, I do, there seems to be a calendarview on the palette in the sdk but thats only for android 4.0 and upwards. Im trying to target to 2.3+ so I dont miss a chunk of people. Any ideas?
I think the problem with this question is your asking how to write an app, if you asked more specifics, your would get answers.
For something like this, all you need is the Calendar class, and then to assemble info and data in maybe a viewPager with GridView(s)
deanwray said:
I think the problem with this question is your asking how to write an app, if you asked more specifics, your would get answers.
For something like this, all you need is the Calendar class, and then to assemble info and data in maybe a viewPager with GridView(s)
Click to expand...
Click to collapse
That's true. A more specific question would be better. However, my suggestion:
I'd use a table layout for that. And for switching between months a ViewPager would be best.
For getting the Calendar data: There is a ContentProvider for that.
Knowledge
Do you have any Java coding knowledge? Have you tried making at least a test app before?
iCantEven said:
Do you have any Java coding knowledge? Have you tried making at least a test app before?
Click to expand...
Click to collapse
He has:
With the basic knowledge I have
Click to expand...
Click to collapse
He also has a thread in which he described his learning process: http://forum.xda-developers.com/showthread.php?t=2330767
hello everyone
i need help with making a Listview to show the menu of student names and once clicked on one of the student names, it should show the results of the application, i have got my buttons working that take me to the next screenshots ....a pm can be send to me to provide help and guidance...thank you
Please provide more details.
For the ListView: Have a look at the ArrayAdapter class and the ListActivity. The latter has got a onListItemClick method.
nikwen said:
Please provide more details.
For the ListView: Have a look at the ArrayAdapter class and the ListActivity. The latter has got a onListItemClick method.
Click to expand...
Click to collapse
Thanks for the response, i need to design a listview showing list of student names and results, when a student clicks their names , it should show the student results.
The purpose of this app is to show a student result on an android phone when the user logins to their account.
tralser clothes
MallowGirl12 said:
Thanks for the response, i need to design a listview showing list of student names and results, when a student clicks their names , it should show the student results.
The purpose of this app is to show a student result on an android phone when the user logins to their account.
Click to expand...
Click to collapse
Perhaps try following a good tutorial? E.g. http://www.vogella.com/articles/AndroidListView/