szaghi / forbear

Fortran (progress) B(e)ar envinronment
40 stars 6 forks source link

not issue, a few thoughts about #3

Closed zmiimz closed 7 years ago

zmiimz commented 7 years ago

Dear Stefano,

at first, many thanks for such nice fortran enhancement )

And to the question. From a practical point of view I would combine multiple (in that case forbear_x + FACE) modules into one single module file for such sort of utility. Really, it would be my first step if I consider to include it into my projects... It also doesn't make sense (IMHO) to create a library for such small things. (Sure, I know that you are using fobis, but unfortunately, some developers are forced to stay with an old good make because there are projects where 2 and more languages are used and fortran is only one among them... )

Please ignore this completely, if it is important for you to have these multiple modules during development, or you intend to create some extended library full of such fancy fortran things)

szaghi commented 7 years ago

Dear @zmiimz

at first, many thanks for such nice fortran enhancement )

Thank you, you are too much kind!

From a practical point of view I would combine multiple (in that case forbear_x + FACE) modules into one single module file for such sort of utility. Really, it would be my first step if I consider to include it into my projects...

I agree, I am planning something to accomplish your desire...

It also doesn't make sense (IMHO) to create a library for such small things.

Indeed, I love KISS (Keep It Simple and Stupid) principle, if there were not people like you I had probably modularized even more tinier things than FACE of forbear :smile:

(Sure, I know that you are using fobis, but unfortunately, some developers are forced to stay with an old good make because there are projects where 2 and more languages are used and fortran is only one among them... )

I know, my bad.

Please ignore this completely, if it is important for you to have these multiple modules during development, or you intend to create some extended library full of such fancy fortran things)

Nope, your point is important. I will not stop with my KISS-paranoiac approach, but I would like to help workflows like your. I am thinking to a sort of meta-project to aggregate some of my poor libraries. Do you think could be a viable compromise?

The meta-project should be a sort of (very, very easy customizable-in-building) library where the user can:

Cheers

zmiimz commented 7 years ago

The meta-project should be a sort of (very, very easy customizable-in-building) library where the user can:

easy download the meta-project (curl/wget?);
easy select which library build/install (plain text? bash?);
easy build the library (makefile...);
easy install the library (bash?).
What do you think?

Ok, after all this becomes a kind of a large library ;) I am not sure about the level you are planning to organize it. If you go into the direction of some package manager, then one of the best implementation for such thing I have ever seen is the dub manager from dlang project. I still hope to find a team that could fork the dub project to fdub and add fortran support to it. ) But for simple downloader it is indeed better to use standard Linux tools (like bash, wget/curl/aria2c) and organize it like a usual static/dynamic library with Makefile. .

szaghi commented 7 years ago

Hi @zmiimz

Ok, after all this becomes a kind of a large library ;)

:smile: the answer is yes and not: what I am trying (yes, I have already started the project, stay tuned) is a compromise: it is a centralized place where you can easy find (download/install) all my poor libraries without all not strictly necessary files... essentially it provides just my main libraries sources like

tree -L 2 src/
src/
├── BeFoR64
│   ├── befor64.F90                                                                                                           
│   └── befor64_pack_data_m.F90                                                                                               
├── FACE
│   └── face.F90                                                                                                              
├── FiNeR
│   ├── finer_backend.f90                                                                                                     
│   ├── finer.f90                                                                                                             
│   ├── finer_file_ini_t.f90                                                                                                  
│   ├── finer_option_t.F90                                                                                                    
│   └── finer_section_t.f90                                                                                                   
├── FITTER
│   └── fitter.f90                                                                                                            
├── FLAP
│   ├── CMakeLists.txt                                                                                                        
│   ├── flap_command_line_arguments_group_t.f90                                                                               
│   ├── flap_command_line_argument_t.F90                                                                                      
│   ├── flap_command_line_interface_t.F90                                                                                     
│   ├── flap.f90                                                                                                              
│   ├── flap_object_t.f90                                                                                                     
│   └── flap_utils_m.f90                                                                                                      
├── FLOw
│   ├── flow_compressible_transformations.f90                                                                                 
│   ├── flow_conservative_compressible.f90                                                                                    
...
├── FOODIE
│   ├── foodie_error_codes.f90                                                                                                
│   ├── foodie.f90                                                                                                            
...
├── forbear
│   ├── forbear_bar_object.F90                                                                                                
│   ├── forbear_element_object.F90                                                                                            
│   ├── forbear.f90                                                                                                           
│   └── forbear_kinds.F90                                                                                                     
├── FORESEER
│   ├── foreseer.f90                                                                                                          
│   ├── foreseer_riemann_pattern_compressible_object.f90                                                                      
│   ├── foreseer_riemann_pattern_compressible_pvl.f90                                                                         
...
│   └── foreseer_riemann_solver_object.f90                                                                                    
├── FoXy
│   ├── foxy.f90                                                                                                              
│   ├── foxy_xml_file.f90                                                                                                     
│   └── foxy_xml_tag.f90                                                                                                      
├── FURY
│   ├── fury.f90
│   ├── fury_mixed_kinds.F90
...
│   └── fury_uom_symbol.inc
├── MORTIF
│   └── mortif.f90
├── PENF
│   ├── CMakeLists.txt
│   ├── penf_b_size.F90
│   ├── penf.F90
│   ├── penf_global_parameters_variables.F90
│   └── penf_stringify.F90
├── StringiFor
│   ├── stringifor.F90
│   └── stringifor_string_t.F90
├── VecFor
│   └── vecfor.F90
├── VTKFortran
│   ├── vtk_fortran_dataarray_encoder.f90
│   ├── vtk_fortran.f90
...
│   └── vtk_fortran_vtm_file.F90
├── WenOOF
│   ├── abstract_objects
│   ├── concrete_objects
│   ├── factories
│   └── wenoof.F90
...

The (unfortunate) user can decide to download/install all or only a part of. I have already test to build the monster library, it becomes something about 3.5 MB (statically compiled). I am now implementing the how to download/install part. The centralized repository contains only the main sources: tests, documentations and all other auxiliary are trimmed out.

If you go into the direction of some package manager, then one of the best implementation for such thing I have ever seen is the dub manager from dlang project. I still hope to find a team that could fork the dub project to fdub and add fortran support to it. )

I do not know it, can you give me some details (links, references...).

But for simple downloader it is indeed better to use standard Linux tools (like bash, wget/curl/aria2c) and organize it like a usual static/dynamic library with Makefile.

Yes, for the moment I am relying on only:

I hope this is a good compromise.

zmiimz commented 7 years ago

I do not know it, can you give me some details (links, references...).

https://github.com/dlang/dub https://github.com/dlang/dub-registry http://code.dlang.org/

szaghi commented 7 years ago

Dear @zmiimz

my efforts for you are now public, check this

https://github.com/szaghi/ZOO

Cheers