![]() |
What i need to know to start developing apps for N900?
What i need to know to start developing apps for N900 and where can i learn it? I know that all programers went to school to learn it. I'm also going to the programing school. Although i'm 15 and we don't learn programing yet. And we're learning windows, not linux. So guys, if you know where i can learn all that stuff that i need to know to start making apps for N900, please post it.
|
Re: What i need to know to start developing apps for N900?
First you'll need to learn a programming language. N900 comes with a bunch of languages installed (c, c++, python, perl, and prob a few others) For a powerful language which is not difficult to learn, take a look at Python.
If you want to do User Interface programming, things get a little more difficult. You'll also need to learn a GUI library (either GTK which is currently the official, or Qt which will be the official library going forward) Since both of these libraries are meant to be used by C & C++ languages respectively, you'll need to use a third component which is called a Python binding. This binding allows Python to use the libraries easily. For the GTK libraries, take a look at PyGTK. For the Qt libraries, look at PyQt and PySide. Research all of these and find out what makes the most sense for you. The latest version of Qt (4.6) isn't quite ready for Maemo yet (in testing, planned for release by end of 1st quarter) but I think it's worth waiting for as it will be the standard library for Maemo going forward, is very well designed, and can be used on other devices other than the N900. |
Re: What i need to know to start developing apps for N900?
Oki, nice information.
So, what do I need to install in order to start coding in c++ and python? easy step-by-step would be great pls. |
Re: What i need to know to start developing apps for N900?
After learning the very basics of Python (you can do this on Windows too) get the Maemo SDK and dive in, the learning curve can be a bit steep but don't be discouraged. Previous Linux knowledge certainly helps but is not an absolute requirement.
When you have the SDK running you can (in the scratchbox) "apt-get install python-gtk" to install Python and GTK bindings for it. I don't use Windows at all (Linux and OSX and a bit of OpenSolaris :) so can't help with that. But I have heard rumours that there is some way to run the SDK on windows as well (probably virtualized) |
Re: What i need to know to start developing apps for N900?
ty. Don't think python is a problem, I used to code in visualbasic, perl, delphi, c++ builder and, magik :)
1 main issue could be spear time to try it and keep trying it. How about enable c++? I should use VMWare + linux, but donīt know what linux version to download and install. Help here too pls! TIA. |
Re: What i need to know to start developing apps for N900?
Quote:
|
Re: What i need to know to start developing apps for N900?
The Maemo SDK can be downloaded as a VMware VM image, pre-installed with some old version of Ubuntu and the SDK fully configured. It's a great way to get started quickly!
|
Re: What i need to know to start developing apps for N900?
Quote:
if you run the sdk in a VMware machine, just install gcc/gcc+ inside that machine, that'll take care of all your compiling for c/c++, just feed the source code file in and direct it to compile to another file. questions on gcc can be answered with "gcc --help", "man gcc" or google gcc. |
Re: What i need to know to start developing apps for N900?
The Python website has great documentation and a simple tutorial to get you started.
Make sure you understand the fundementals of programming in general and practise, practise, practise. Start off with very simple programs and experiment with the code. Don't be afraid to ask questions and more importantly have fun with it. |
Re: What i need to know to start developing apps for N900?
if you're just starting out I would honestly stay away from c/c++. Get good with python first.
You can code python in anything you like, and just scp it to the device to test, no need for development SDKs or any of that stuff. esbox is a good place to start for an eclipse development environment with python support. winSCP is a windows prog that would let you send the files to your device. Start with the hello world examples out of the development pages. I put the first draft of my app witter on my blog http://danielwould.wordpress.com/200...ent-for-maemo/ which I think is agood place to look once you are beyond the helloworld and want to learn a bit more about basic ui. and calling out to the web for stuff. Not sure what you are thinking of developing but that lot should keep you busy and get you a good start. ;-) |
Re: What i need to know to start developing apps for N900?
I learned programming as a hobby.
I got a home computer when I was 13 years old (back in 1983) and taught myself. I learned to program in BASIC moved to assembly, then C, C++, Visual Basic, Perl and Python. I now do it for a living! I would recommend you start with a high-level language like Python and when you are confident enough try some C and C++. |
Re: What i need to know to start developing apps for N900?
LoL never gave so many thanks in the same post :P
Thank you very much, very very useful information. And yes I saw the complete image to get started easily http://maemovmware.garage.maemo.org/2nd_edition/ So I will start from here, while I get ubuntu 9.10. |
Re: What i need to know to start developing apps for N900?
White_Ranger, I was once EXACTLY like you. I was 15 and I was heavily into custom ROMS for emulators and I was ready to program up a storm. I ended up going to my local college. You see, you don't have an age limit to go to college!!!
I was 15, in 9th grade, and I signed up at my local jr college. I had my mom take me / drop me off. I took Intro To Programming. I stuck with it, and when I graduated I went to college, and had a basic understanding of Visual Basic. anyways after 4 years of college, I now have my Bachelors in Computer Science, and I am a software developer as my profession. I have been doing it for 4 years now and I love every day!! unfortunately, the SNES custom ROM I wanted to make, and Sega VMU version of OutRun I wanted to make never came, and someone else ended up making an OutRun for the VMU. I never learned assembler anyways to do such a thing. the point of the story is this: if you have an interest in programming, persue it, you may not make your N900 app you wanted to make, but maybe, 10 years from now (I am actually 25 right now), you will be in a spot where you say "you know what, I'm gonna make an app" and you will. I myself am still trying to get the IDE to work on my Maemo virtual machine. Good Luck and don't forget my story! |
Re: What i need to know to start developing apps for N900?
Ok guys, those r new post from you. And ok, you r right. I will try first with python. whish delphi support but in my dreams i know^^
hehe me too learnt in that way and it was good, also i cracked some application hoho using lit of assembly :) now I grow up have a kid and no time to do what I really love. cya around. Have enough to start with maemo apps. |
Re: What i need to know to start developing apps for N900?
if this thread does nothing else it'll inspire people to get on with some programming.
I have been looking into developing for maemo but the documentation is little help. I haven't tried the proper SDK yet because I haven't got round to sorting out a virtual machine, but I have had a quick little play with MADDE in which I managed to create a simple hello world program that worked on my mac, but not on my phone. You guys think python is an easier way into maemo dev? Also, UI creation, can I use QT creator? |
Re: What i need to know to start developing apps for N900?
Quote:
|
Re: What i need to know to start developing apps for N900?
There seems to be a thought that C (rather than C++) is a hard language to learn. Once you have learnt one procedural language then the next becomes easier to learnas you have learnt the basics of how to beak a problem down already.
C is a totally portable language, to even more platforms than Python and in keeping with the original Unix thinking as that was what it was designed for: to write Unix in. Syntax for Pyhton, Java and C++ are al based on the C language so you won't be wasting your tme there either. The other big advantage is that C is not an object based language like the others so that is one less thing to get your head around. Once you have C down pat then you can tackle the object orientated concept with a small extension to syntax. |
Re: What i need to know to start developing apps for N900?
Quote:
Python (according to most people, to my shame I haven't tried) is an easier language to start with than C++, but Qt does make the learning curve easy. In some things C++ is faster as it is compiled, but for smaller projects, I don't really see much difference. Qt Creator works for Qt/C++, not Python. |
Re: What i need to know to start developing apps for N900?
Well, Qt Designer (which could be seen as part of Qt Creator) to design a GUI, can be used together with python. There are already some howtos here, which explain that.
I suggest to look into python, when you want quick success. Read the tuorials/howtos and look at the source of other python apps for Maemo 5. Sure there are also good reasons to learn C/C++. In the end it's even more portable when used in the right way. And for games which needs good performance (like 3D games) there is no real way arround C/C++. But: Not only is C/C++ harder to learn, because you have to deal with, Pointers, memory allocation and freeing and so. But even worse you also have to learn about cross compiling and using the quite complex vm. For a new programmer who want just create smaller apps for the N900 and have some fun, C/C++ for a cross compile source of an other OS than one is using, will most likely very frustrating and I believe 95% of those who are going down that road, will never get some usefull application working. Go for Python: - its easier to learn and use - with less code you can archieve more - no compiling, and even better: No cross compiling - You don't even need Linux at all on your PC. - Get some Python editor, code, copy files over to N900. - Maybe use WinSCP+Putty on Windows to quick up that. - That way you can try all lot more, can make misstakes. Anyone with or without previous programing experience has a real chance to get some small usefull app/widget running in a few weeks (putting a hour or two into it each day). Maybe even faster. With C++ one may get there with a lot of copy and pasting without really understanding what one is doing in SDK and code. In most cases that will only leed to frustration. Well, that is only my opinion, as you see others have a different look at things. I am programing in C++ for a living and see quite a lot of computer science students with Java experince and so on, struggle on C++ when working here part time. Someone without previous programing experience, without Linux experience will have very hard time learning alls this in his free time. So: go python. |
Re: What i need to know to start developing apps for N900?
Quote:
Please remember that C and C++ are distinct languages. Basic C programmes can be achieved easily without explicit malloc and free and also there is no need to worry about OOP either. A lot of us that use OOP and OOD for a living forget that this can be a weird concept for new comers where as a series of steps in basic procedural languages are simple. |
Re: What i need to know to start developing apps for N900?
Quote:
sorry for going kinda offtopic, but this article fits just perfectly into this discussion IMO :) |
Re: What i need to know to start developing apps for N900?
Quote:
The absolute best place to start is with this tutorial: http://www.forum.nokia.com/info/sw.n...h_Maemo_5.html it'll get you up & running with a Maemo development environment that you can already use to build existing applications and deploy them to a device. Good luck! Dave. |
Re: What i need to know to start developing apps for N900?
Look at it this way.
If you have never programmed before then use Python to get you familiar with the basic concepts - loops, decisions, variables, etc.. When you feel a bit more comfortable and confident then try some simple C - maybe stay away from pointer arithmetic and memory allocation "stuff". Maybe re-write some of the programs you wrote in Python in C instead. C and Python have different syntaxes - I would say Python is a bit more forgiving and generally easier to read than C. What some developers do is right the GUI in Python and the "meat" of the program is written in C. You can actualy "connect" both these together to form the application. E.g. You can write a library that plays an mp3 file and then write the GUI part to allow the user to select which mp3 to play back to the user. If you are feeling brave learn both languages at the same time! But remember - learn the fundementals first and start off nice and simple. Oh, ask questions (even if it sounds daft to you) everyone here will give our support. |
Re: What i need to know to start developing apps for N900?
Thanks for replies, but i don't understand how does the whole programming work. Is it just a bunch of commands that you need to know, or just a couple and you combine them. Like about 20 or more, i don't know. I've started with Python, and i learned the basic commands, but that's all. I tried to make my own app, but don't have a bloody clue how people make real programs in Python. What commands they use? And how do they make the real application? I mean graphic and other stuff.
|
Re: What i need to know to start developing apps for N900?
Quote:
|
Re: What i need to know to start developing apps for N900?
Quote:
one that utilizes PyQt would be ideal, since that is the preferred library for GUI development with python under Maemo. there's no "easy" way, though. you'll have to dig in and read lots of documentation, examples, articles etc. no way 'round it :) |
Re: What i need to know to start developing apps for N900?
Quote:
Programming is not something you just "start doing"... it takes a lot of time and effort into reading and understanding exactly what everything does. That's why there is high demand for good programmers, and why they make usually a decent amount of money. Copy and paste one of the "first programs" into your N900 or the SDK and launch it.. you'll get a pretty "hello world" or some other thing for your first program.. then you feel happy and giddy inside... then you go through that app, line by line, and research documentation until you understand *exactly* what you're doing. Soon, when you look at enough code.. it doesn't particularly matter what language someone codes in.. (short old COBOL or Assembly or something).. you can just "read" it. |
Re: What i need to know to start developing apps for N900?
OK Guys, I need some guidance too, as to which 'route' I should take in developing apps for the N900 ...
The thing is people are suggesting so many different things here: Some are saying I should use Python, while others are suggesting C and C++, and as far as the tools go, a lot of program tools are being suggested here too, such as: MADDE, Qt Designer, Qt Creater, esbox, GTK+, etc ... I don't mean to say I want to be spoonfed, but can someone just explain the difference between the above terms, and briefly explain which route we should take .. ? Which language to use, and which tool to use, and why (as in, why not the others) ? Please note that I'm completely new to the Linux platform (although I have programmed for quite a few years in C/C++/C#/Java through Windows), which is probably why I'm getting confused with the above terms .. :( Any help here would be greatly appreciated :) |
Re: What i need to know to start developing apps for N900?
You're going to get a dozen different answers to that question, as has been shown.
Some people like C++, others like python.. thats just the way it is. You'll have to figure out over time which one you prefer. I would definitely recommend using MADDE if you go the C++ route as it makes things easier for building packages for Maemo than using the scratchbox environment. GTK+ is the currently GUI (graphical) library that maemo 5 is based on. QT is the future, and what Maemo 6 is based on. Therefore I would recommend to code in QT unless you have a specific need for GTK+ as full QT 4.6 support is expected to come to Maemo 5. QT Designer is a GUI to build a GUI :D. It gives you buttons and widgets and windows and you "paint" your own gui and then save it to a .ui file which you then will either use in your C++ program, or convert to python with pyuic4 for your python program. esbox is a C++/Maemo integration for the Eclipse IDE. This should give you plenty to google for a while :). |
Re: What i need to know to start developing apps for N900?
Quote:
And what is the difference between Qt Designer and Qt Creator, because I have seen two of these things ? Also, I heard somewhere that Qt is also a language thing .. that is, a replacement for c++/python which Nokia has developed for Maemo software development ? Is this true ? And if it is, shouldn't we use Qt for programming as well ? Also, personally I have experience with C++, but not Python ... So I need to know which of the two is better ... I dont mind learning an entirely new language since I don't know Python, but if you say that both of them are about the same then I would prefer to just use C++ .. So what do you say, which is the better one between Python and C++ ? Lastly, I was trying to install the Maemo SDK in Ubuntu today but got stuck ... if you could look here and see what the problem is, I would greatly appreciate it :) |
Re: What i need to know to start developing apps for N900?
Quote:
I don't use QT Creator so am not 100% on it.. but I do use QT Designer directly just to build the GUI and then save my .ui file wherever I need it. Quote:
Quote:
Fargus and I, I believe, offered a (somewhat) un-biased view of both languages in this thread that explained Python and C++. My personal preference in Python for non-critical or resource intensive applications because it's faster, and easier. C++ for the system critical applications. But that is my personal preference.. others opinions vary greatly. |
Re: What i need to know to start developing apps for N900?
Quote:
The next matter which I would like to address is: developing environments .. ! The Maemo SDK, (whose installation guide is here), is based on which language ? Python or C++ ? And which SDK do I install if I want to program using the other language ? (e.g. if Maemo SDK is for c++, what do I use for developing in Python ?) Is esbox an SDK as well, or just an IDE ? Lastly, do you know any links to ready-made 'hello world' type code examples for C++/Python which are ready to be deployed to the N900 ? (So that I can just continue on from there by enhancing the code in my own way .. ? ) Needless to say, I really appreciate your quick help here man :) |
Re: What i need to know to start developing apps for N900?
Quote:
The Scratchbox is an emulator, kind of like virtualbox/vmware/etc except that it'll emulate your CPU. In C++ you have to compile programs specific to the architecture that you plan to run on.. thus with C++ you need to compile against an ARMEL CPU.. whereas your computer is most certainly an x86 - which causes a problem. So you use scratchbox to "pretend" to be an ARMEL device to compile your software into something that the N900 can use. Python doesn't have this problem.. technically you could code a PyQt4 app directly in ubuntu under a text editor, copy it to the N900 and it'll work in some fashion. The SDK also provides a way to "emulate" the N900 directly using the Xephyr X-Server window. It opens a small box the same size/shape as the N900. You then run "af-sb-init.sh start" from inside an i386 scratchbox environment and it will talk to the Xephyr window making your own little mini-N900. Keep in the mind though, that this has to be done in the i386 scratchbox, not the ARMEL I discussed above. So once you get the app running right in your little window you have to close everything out, select the ARMEL target, re-start scratchbox, and then compile your program for the N900 and move it over. (real pain IMHO.) I personally use the SDK Virtual Image since it had scratchbox and everything setup for me, and use the Xephyr to emulate the N900 because I do not have an N900. Then I write my python app (see sig) and when I get it looking right on the fake N900 I ask friends here on the board to load my deb files for me and check them on real N900 devices. Quote:
Quote:
You need to install python2.5-qt4-gui on your device for them to work.. and be warned that will take ~20-30mb of your rootfs. |
Re: What i need to know to start developing apps for N900?
Ok, so like a lot of the programming n00bs in here, I have questions, but I would like to try and come at a different angle with my questions.
If I want to program a stand alone application, like Witter, Maep, or say Angry Birds - What were they each programmed using? If I want to do something like the Conversation Plug-ins, or a load-applet, battery app - What are those programmed using? What are the limitations of Python, for example? Could I write something that will change the menu structure using just python, or is something else a better option? |
Re: What i need to know to start developing apps for N900?
Quote:
Maep = C++ (pretty sure) Angry Birds = Dunno.. probably C++. Quote:
I do know that you can integrate python apps with the interface, several examples and tutorials here. But mostly apps that actually do this kind of thing I believe are done in C++, and in the developer section of the wiki they show C++ examples. A lot of maemo's stuff is run through DBUS/MCE, which you can write python apps to communicate to and from that (AFAIK) that (should) work if you have a need for whatever those parts are. |
Re: What i need to know to start developing apps for N900?
Thanks a lot guys for all these replies. It's good to see people who don't have the "if you have to ask you are too stupid attitude" that I see in a lot of communities.
|
Re: What i need to know to start developing apps for N900?
Quote:
For example, I have a simple: print "sdgsdfsdf" Python script, will this execute on the device or do I have to use specific qt commands like those tutorials you linked to? Thanks for this by the way. EDIT: Nevermind, I typed python sdgsdfsdf.py and it worked. |
Re: What i need to know to start developing apps for N900?
OK so let me get this straight ... From what I've understood and correct me if I'm wrong, Python is a scripting language which does not need compilation (like C++,Java, etc ... need it), and can be just executed on the fly .. However, Python's downside is that N900's would have to install the python2.5-qt4-gui thing before running any Python based programs ... is this all correct ?
And can Python can be everywhere, for all possible N900 programs ? .. I'm thinking of making a small sketching program (similar to sketch) .. Can I use python for this or it is better to use C++ ? |
Re: What i need to know to start developing apps for N900?
Quote:
here is just a randomly selected document of a google search "interpreted vs compiled". Suffice to say, interpreted languages have more overhead because there is a middle man, someone who takes commands from your script, "interprets" it to something you computer cares about, and then tells your computer what and how to do it. In compiled languages there is no middle man, your program directly tells your computer what to do in a language it understands. This is why I said for more resource intensive or critical applications C++ is the better way to go.. I personally wouldn't design a full UI or desktop in an Interpreted or VM-based language (read: Android).. However for something like a sketch program, Python should be perfect. |
All times are GMT. The time now is 18:20. |
vBulletin® Version 3.8.8