|
|
Home » Developing U++ » U++ Developers corner » The plan....
|
|
Re: The plan.... [message #17781 is a reply to message #17772] |
Thu, 28 August 2008 15:54 |
zsolt
Messages: 698 Registered: December 2005 Location: Budapest, Hungary
|
Contributor |
|
|
luzr wrote on Thu, 28 August 2008 14:46 |
zsolt wrote on Thu, 28 August 2008 08:21 |
luzr wrote on Thu, 28 August 2008 09:02 |
Maybe we should make CtrlCore fully MT safe (in common sense, where you are required to serialize access to single widget by multiple threads).
PostCallback is good, but sometimes more straighforward solution would be even better...
Mirek
|
A thread safe Callback system would be much more useful, I think.
|
Callback itself is thread-safe.
And, I guess, PostCallback method can be considered a thread-safe callback system; that is what we have now...
What else should it do? (Note that it is technically impossible to call another thread's routine - that would be "interrupt").
Mirek
|
I would like an inter-thread communication framework:
- threads are waiting for a job queue
- threads can have special job-creating Callback like objects
- threads can register their methods to that Callback like objects of other threads ( in a type-safe way, like with current callback functions or THISBACK macros)
- when a thread calls it's own Callback like object, it creates the job-objects and puts them to the fifos of registered threads
- threads are executing jobs from fifos on their own threads
|
|
|
Re: The plan.... [message #17784 is a reply to message #17778] |
Thu, 28 August 2008 17:11 |
mr_ped
Messages: 825 Registered: November 2005 Location: Czech Republic - Praha
|
Experienced Contributor |
|
|
luzr wrote on Thu, 28 August 2008 15:31 | Another: Win32 release should perhaps include some more free-license libraries, like PostgreSQL, SSL etc.. to simplify setup. Maybe even mysql.
Mirek
|
Yes, in ideal world I would personally deliver "online" and "offline" install.exe. The online would be just couple of kB file, which would let user configure what should be installed. (U++, MINGW, SDL, PSQL, ...) Those parts would be downloaded than, and installed.
Offline installer would contain everything (so it would be several MB big file), but it would work without internet connection. (visually it would behave in the same way as online installer)
I think right now we are at "offline" installer, with having several different .exe with different things bundled (right now just MINGW vs non-MINGW). Sticking to this path may lead to 4-5 installers maybe (some common configurations). As the build process will be fully automated, I think this is still viable to maintain and usable. The online/offline model would just lessen the strain on newcomers, so they would need to choose just from 2 options, not 4-5 of them.
Edit:
and the "online" installer should be usable to ADD some package later after the U++ is already installed without it. Or even "remove" some part of it (although I think that's really just adding some polish, not really needed function, the ADD is important part).
[Updated on: Thu, 28 August 2008 17:15] Report message to a moderator
|
|
|
|
Re: The plan.... [message #17789 is a reply to message #17778] |
Thu, 28 August 2008 19:15 |
|
amrein
Messages: 278 Registered: August 2008 Location: France
|
Experienced Member |
|
|
mr_ped wrote on Thu, 28 August 2008 12:51 | Well, assemblies don't just "collect" packages, but they also handle inclusion of other assemblies in build process, i.e. after default 2008.1 install at Win32 you can't work with Bazaar packages in MyApps assembly (until you add that in Edit assembly).
This also allow you to have two uppsrc (stable / SVN), and assemblies MyApps/MyAppsSVN, which both refer to "Core" package, but from different assembly (version), and work on/build both in the same TheIDE.
In this sense I think the "assembly" is better name than "collection".
|
Well, for me, assemblies are collection of packages. Packages refer to other packages from uppsrc/ (uppsrc is the main assembly) and not to other assemblies.
So, for me my proposition is still valid.
luzr wrote on Thu, 28 August 2008 15:31 | Another: Win32 release should perhaps include some more free-license libraries, like PostgreSQL, SSL etc.. to simplify setup. Maybe even mysql.
Mirek
|
Well: www.graphicsmagick.org or www.imagemagick.org to support reading, writing, and manipulating images (over 88 or more major image formats supported).
[Updated on: Thu, 28 August 2008 19:16] Report message to a moderator
|
|
|
|
Re: The plan.... [message #17793 is a reply to message #17789] |
Thu, 28 August 2008 21:34 |
|
mirek
Messages: 13984 Registered: November 2005
|
Ultimate Member |
|
|
amrein wrote on Thu, 28 August 2008 13:15 |
mr_ped wrote on Thu, 28 August 2008 12:51 | Well, assemblies don't just "collect" packages, but they also handle inclusion of other assemblies in build process, i.e. after default 2008.1 install at Win32 you can't work with Bazaar packages in MyApps assembly (until you add that in Edit assembly).
This also allow you to have two uppsrc (stable / SVN), and assemblies MyApps/MyAppsSVN, which both refer to "Core" package, but from different assembly (version), and work on/build both in the same TheIDE.
In this sense I think the "assembly" is better name than "collection".
|
Well, for me, assemblies are collection of packages. Packages refer to other packages from uppsrc/ (uppsrc is the main assembly) and not to other assemblies.
|
Assemblies are ordered sets (ok, collections as good term as set) of "nests". Nests are directories where packages reside.
Well, in practice, assembly has often just two nests in it (second being uppsrc), but that is not a rule.
Mirek
|
|
|
|
Re: The plan.... [message #17796 is a reply to message #17795] |
Fri, 29 August 2008 14:05 |
|
luzr wrote on Fri, 29 August 2008 07:49 | More:
Decimal type (we have begun working on it; my version is in uppdev/Dec, I am now stuck with mul/div
Move SHA1 and MD5 to Core; perhaps derive it from Stream.
Mirek
|
Just one note about decimal. Unfortunatelly MSC8/9 32bit doesn't support int128 type...
[Updated on: Fri, 29 August 2008 14:05] Report message to a moderator
|
|
|
|
|
Re: The plan.... [message #17816 is a reply to message #17812] |
Fri, 29 August 2008 22:06 |
|
amrein
Messages: 278 Registered: August 2008 Location: France
|
Experienced Member |
|
|
luzr wrote on Fri, 29 August 2008 20:12 |
amrein wrote on Wed, 27 August 2008 18:08 |
So 7 assemblies:
|
"nests", right?
|
Yes.
For me, those two words "Assembly" and "Nest" are complicated and should disappear. "Assembly", "Nest" and "Package" organisation could be break into "Collection","Directory" and "Package" (when someone say "Garbage collector" in java, everyone understand what he means). I don't hate birds ("Nest"...) but a few newcomers are still confused by those names (me included, I had to read the doc 4 times).
Example: in the first TheIDE window (when you open it), there are two rows "Assembly" and "Packages". That create confusion.
In fact, with this window, you are watching packages from the Nests of the default TheIDE Assembly right?
(If I'm wrong about all this, I hope I won't find a gun too close to me)
If you want to create another Assembly, you need at present to do it manually.
Now, lets break this into "Collection","Directories" and "Packages":
- The main title of the window become "Select main package from "Default Collection" ".
- First row title: "Directories"
- Second row title: "Packages"
This doesn't break the "Assembly" original idea. Anyone could create is own Collection/Assembly if he needs to.
Quote: |
Quote: |
- myapps
- examples
- templates
- upp
- theide
- 3rdparty
- plugins
|
- What is the point of joining all 3 kinds of examples into single dir?
|
To clean directory listing in c:/upp. Could become for example:
- upp/myapps (your own packages)
- upp/exemples (training packages)
- upp/manual (documentation for learning)
- upp/source (the core: libupp, tools and plugins)
With examples: "applications" = complete apps, "references" = small apps to demonstrate one feature, "manual" = examples from the manual.
With 3 kinds of examples in one directory, their is a need perhaps to add something else: be able to group subdir. The main window in TheIDE use symbol like "(+)" to close or open group of files. Here, the idea is for all Nests without packages but having subdir with packages to be able to open or close groups to see those sub-packages with "(+)".
Quote: |
- What is "templates" good for?
|
It's where people can create of fix templates for TheIDE. It's the default TheIDE template directory. Could be in TheIDE directory though.
When you create your new application, TheIDE already asks you to choose one of them at present.
Another reason is to transform TheIDE into TheLinuxWindowsIDE with templates and support for many other toolkits. A tool you will want to use for any projects from DLL to .so, from Qt applications to GTK+, MFC, wxWindows.
I don't remember who said something like this: "Keep your friend close to you. Keep your enemies even closer.". They are not enemies, I know. The idea is to open TheIDE doors to all kind of developers. Become the most used IDE. If someone wants to create a new application, he should think TheIDE first.
Quote: |
- Having separate nests for 3rdparty and plugins would lead to more complicated assemblies - you would have to add 3 nests instead of one. IMO it is better to have it as subdir in the nest, which is current status.
|
- When they are from U++ team, sub directories in a packages are better.
- "3rdparty" is a directory containing packages not from U++ team. They could be useful for other applications.
- "Plugins" could be external sql plugins, image format plugins, codecs plugins. The idea of plugins is to open U++ to third party plugins and be able to handle them dynamically at runtime. They could link upplib to "3rdparty" too for example.
Last idea, with 3rdparty and plugins, is to be able to link TheIDE dynamically with 3rdparty lib not in source/3rdparty but in /usr/lib. Why? Because 3rdparty applications receive security fix from main Linux distributor. This is a bit far from Windows security. No need to rebuild your application if the linux distributor has patched one of the dynamically linked library. No need to wait from next U++ release to get those packages fix.
Quote: |
OTOH, to truly separate 3rdparty stuff, we MIGHT consider putting 3rdparty folder in uppsrc and keep only U++ interfacing stuff (-> our core) in "plugin". The grand question is whether is it worth the trouble...
Mirek
|
The main idea is be able to say: U++ is a "Collection" or "Directories" containing "Packages". TheIDE is one of those directories. IDE and Topic++ are packages from TheIDE directory.
More complicated:
A directory contain a complete project with many packages.
Subdirectories are named packages when they contain something to build with a .upp file.
Subsubdirectories are subpackages of packages.
[Updated on: Sat, 30 August 2008 00:06] Report message to a moderator
|
|
|
Re: The plan.... [message #17817 is a reply to message #17816] |
Fri, 29 August 2008 22:38 |
|
mirek
Messages: 13984 Registered: November 2005
|
Ultimate Member |
|
|
Quote: |
In fact, with this window, you are watching packages from the Nests of the default TheIDE Assembly right?
|
Incorrect. You are seeing predefined assemblies.
Quote: |
Now, lets call them "Collection","Directories" and "Packages":
|
I am responding to this in another thread.
Quote: |
- The main title of the window become "Select main package from "Default Collection" ".
- First row title: "Directory"
- Second row title: "Packages"
|
Wrong.
Quote: |
To clean directory listing in c:/upp. Would become:
- upp/myapps (your own packages)
- upp/exemples (training packages)
- upp/manual (documentation for learning)
- upp/source (the core: libupp, tools and plugins)
|
Well, I see no big advantage, but you can do this and maintain original 3 nests too. OTOH, I think the directory structure is not that relevant, once predefined assemblies are setup.
Quote: |
With examples: "applications" = complete apps, "references" = small apps to demonstrate one feature, "manual" = examples from the manual.
|
BTW, now you suggest 2 instead of 3. In previous post you suggested 1 instead of 3
Quote: |
With 3 kinds of examples in one directory, their is a need to add something else: be able to group subdir. The main window in TheIDE use symbol like "(+)" to close or open group of files. Here, the idea is for all Nests without packages but having subdir with packages to be able to open or close groups to see those sub-packages with "(+)".
|
Great. So we are going to go back to old tired concepts?
I agree that it is less confusing for beginners, but I am not going to sacrifice my productivity
Quote: |
Quote: |
- What is "templates" good for?
|
It's where people can create of fix templates for TheIDE. It's the default TheIDE template directory. Could be in TheIDE directory though.
|
What is template for TheIDE?
Quote: |
When you create your new application, TheIDE already asks you to choose one of them at present.
|
Ops. But that logically belongs to packages - and that is why all templates are related to packages. E.g. GUI project templates reside in CtrlLib, because that is the package you need for GUI.
Quote: |
Another reason is to transform TheIDE into TheLinuxWindowsIDE with templates and support for many other toolkits. A tool you will want to use for any projects from DLL to .so, from Qt applications to GTK+, MFC, wxWindows.
|
OK. That is valid point... Current status is that such templates really are in Config directory (~/.upp/theide in linux now AFAIK).
Quote: |
They could link upplib to "3rdparty" too for example.
Last idea, with 3rdparty and plugins, is to be able to link TheIDE dynamically with 3rdparty lib not in source/3rdparty but in /usr/lib.
|
If you are going to use .so, you do not need to provide source code at all.
Mirek
|
|
|
|
|
|
|
|
|
Goto Forum:
Current Time: Mon Jun 10 13:46:10 CEST 2024
Total time taken to generate the page: 0.02788 seconds
|
|
|