Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create a plan for moving generator out [Main task] #100

Open
atherdon opened this issue May 15, 2019 · 37 comments
Open

create a plan for moving generator out [Main task] #100

atherdon opened this issue May 15, 2019 · 37 comments
Assignees

Comments

@atherdon
Copy link
Contributor

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Is it was created as task at GitHub issues? Please provide an issue number or link

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

@atherdon atherdon changed the title create a plan for moving generator out create a plan for moving generator out [Main task] May 15, 2019
@atherdon atherdon pinned this issue May 15, 2019
@atherdon
Copy link
Contributor Author

@atherdon
Copy link
Contributor Author

@wahaj-47 what is your take on it?

@atherdon
Copy link
Contributor Author

@EbrahimKreem @wahaj-47 it's not a pending task right now - but maybe we should start a conversation about it. tell me what your opinion/questions about it

@wahaj-47
Copy link
Collaborator

wahaj-47 commented Jun 1, 2019

Are we moving the generator to a separate repo ?

@atherdon
Copy link
Contributor Author

atherdon commented Jun 2, 2019

@wahaj-47 not right now. But I'm thinking about it.
My main worries - generator is making this module abit complicated/
What i want to do^

  • move to a separated module and publish at npm
  • connect it here and 1) call generator from package.json or 2) have one file/script that will be called before build and will regenerate all files as we need them

tell me your questions!

it will also help us to not change our logic frequently, and we'll also be able to move tests, that we have to generator outside of this module as well.

@atherdon
Copy link
Contributor Author

atherdon commented Jun 2, 2019

@Edebo @vadim9999 what is your take on it?

@Edebo
Copy link
Contributor

Edebo commented Jun 3, 2019

if generator can stand alone,i think we should go ahead.considering the listed advantages.i just hope there wont be side effects.would love to hear @vadim9999 take

@atherdon
Copy link
Contributor Author

atherdon commented Jun 3, 2019

i think that main advantage will be less complicated code and whole functionality. When I decided to split fetch into 2 modules - i didn't plan to add here our team members - this is why repository name is so stupid. But with our current progress - i definately want to do it.
For sure, it will require some additional work, but as our functionality working - i don't see any big issues. it can be done in 1-2 weeks by few members that understand the js basics.

Also!
I was thinking about implementing microservices approach into our code and maybe separated generator can be one of the first "victim" for doing it

if it's interested - i can elaborate more about microservices

@Edebo
Copy link
Contributor

Edebo commented Jun 3, 2019

only have a rough idea of microservices. am interested in the elaborate part.then we should separate generator then if we are going for this approach

@atherdon
Copy link
Contributor Author

atherdon commented Jun 3, 2019

microservices is just one of the patterns. main idea is - separate functionality as much as possible.
similar to our modules approach. Example: one service will generate data(i.e. receive command with arguments, call our generator module, return result), another service will update/prepare that data as user wants.

another simple example:

  1. service for any website that gave you data, connected to one user
  2. service that handles the registration process only
  3. service that handles the login process only

the most simple service is one separated function that is multilanguage, so you can connect different languages to in simultaneously

@Edebo
Copy link
Contributor

Edebo commented Jun 3, 2019

get it.

@atherdon
Copy link
Contributor Author

atherdon commented Jun 4, 2019

@Edebo please ask me questions in order to provoke me to update task description

@atherdon
Copy link
Contributor Author

atherdon commented Jun 4, 2019

this will be a repository for our generator. i'll clean it up later, but right now that setup is similar to sd repository. So our code will be validated and published to npm without any issues(at least with less of them :)
https://github.com/GroceriStar/food-static-files-generator

@atherdon
Copy link
Contributor Author

atherdon commented Jun 4, 2019

@Edebo imagine that tomorrow I'll assign you a task about moving out the generator - tell me your 5-10 questions that will help you do it quickly/without errors

@Edebo
Copy link
Contributor

Edebo commented Jun 4, 2019

1)What are the steps to follow
2)things to take note of to prevent error
3)if there are challenges on the way i will report back

@atherdon
Copy link
Contributor Author

atherdon commented Jun 4, 2019

  1. a lot of work was done by @wahaj-47 & @EbrahimKreem so we'll need just to adjust some methods in order to make them work as a separated module.
  2. we need to have a lot of tests. because without tests - any change can break someone hard work
  3. major issue will be - move out everything from here and make it work there. I assume we'll have a few waves - when we'll make some work at generator repository - then publish a release at npm - update generator module at sd repository - run script here - everything is crashing and falling apart - going to fix it at generator repository

@atherdon
Copy link
Contributor Author

atherdon commented Jun 6, 2019

@Edebo let's think about questions from another perspective. (still, I asked about 5-10 questions for a reason) I think both questions/situations can require to spend 1 hour for each - because planning is an important thing, especially in this case.

So another imaginable situation:
"you're the main observer/manager of moving out generator process. So you have a few new interns that just join us. And your goal will be to manage them - without touching code a lot by your hands. Yes, you able to review their pull requests. But your goal is to make it work with their hands. What should you do and what things you should know/understand in order to make it work?"

@Edebo
Copy link
Contributor

Edebo commented Jun 6, 2019

@atherdon,i agree with planning being important.
for the 5-10 question.

  1. Have we faced similar situation before and how did we solve it or have other people faced similar situation and how did they solve it?
    2)how can we apply the solution to this present situation,and what pitfall is experienced in the last one that we should avoid in this one.
  2. Is there an alternative solution to what we want to achieve.
    4)which is the most efficient way to handle the process.
    5)how do we break the process into segment?

for the imaginable situation:
I will
1)create workable solution for the process.(i think if we have a solution for the process breaking down wont be difficult)
2)break the process into segments and prioritize them
3)for each segment create tasks with clear step by step on how to achieve it,
4)assignment of tasks to interns,
5)review

@atherdon
Copy link
Contributor Author

atherdon commented Jun 6, 2019

will put everything at one place

  1. What are the steps to follow
    a lot of work was done by @wahaj-47 & @EbrahimKreem so we'll need just to adjust some methods in order to make them work as a separated module.

  2. things to take note of to prevent error
    we need to have a lot of tests. because without tests - any change can break someone hard work

  3. if there are challenges on the way i will report back
    major issue will be - move out everything from here and make it work there. I assume we'll have a few waves - when we'll make some work at generator repository - then publish a release at npm - update generator module at sd repository - run script here - everything is crashing and falling apart - going to fix it at generator repository


  1. Have we faced a similar situation before and how did we solve it or have other people faced a similar situation and how did they solve it?

Yes we are. Few times. This is why I decide to move this functionality away from here - because for the first time it was just a simple script. But it evolves, mature and right now it just takes a lot of "space" at this repo. Another point is to make it more advanced - via separation. because separation will create some unpredictable cases - and it will help us to improve code again.

Process of separation is simple - we need to put everything - related to generator into that separated repo. we need to move code/tests/sub-modules. then it should be published at npm and installed into sd repo. then we need to call functions from generator module at sd code scripts or at pkg.json commands.

  1. how can we apply the solution to this present situation, and what pitfall is experienced in the last one that we should avoid in this one.
    we can follow step by step plan and try to fix bugs quickly when they appeared. we should avoid long pauses between releases of generator. i mean it's better will be to ship 20 small releases in 5 days and apply quick fixes, than make 2 big releases in 2 weeks and try to keep everything in our heads. so small itterations will be a great way

  2. Is there an alternative solution to what we want to achieve.
    yess but i don't like them. and we not ready yet for that. for example - we can incorporate microservices which we talk with you - but we'll still need to have a separated place for generator. so it's not a 100% separated way. it's just an improvement. but as we didn't work on it yet - it's can be a black hole for our time.

  3. which is the most efficient way to handle the process.

  4. how do we break the process into segment?


1)create workable solution for the process.(i think if we have a solution for the process breaking down wont be difficult)
2)break the process into segments and prioritize them
3)for each segment create tasks with clear step by step on how to achieve it,
4)assignment of tasks to interns,
5)review

we also should handle tests: https://github.com/GroceriStar/sd/blob/master/tests/projects/
and scripts that we use for calling methods from generator: https://github.com/GroceriStar/sd/blob/master/package.json

Plus we should add tests coverage for checking all methods that we have at generator(excerpt projects folder)

and when generator will be moved out - we should remove explanation of methods from Readme and put a link to new generator readme - at separated repo

[not finished]

@atherdon
Copy link
Contributor Author

atherdon commented Jun 6, 2019

Readme also have a great explanation of methods. And that part should be moved to a readme at separated repo as well https://github.com/GroceriStar/sd#generator-commands

@Edebo
Copy link
Contributor

Edebo commented Jun 6, 2019

am thinking of these steps- these are coming from the things you talked about

1)let us adjust the generator methods-what should be achieved in the adjustment
2)we should make sure our test is working in sd- what is the aim of testing
3)let make sure to call to generator functions are working in sd
4)we should publish at npm and install at sd repo
5) test the generator functions again at publishing and installing
6) fix bug if any exist,
7)we should make improvement

@atherdon
Copy link
Contributor Author

atherdon commented Jun 6, 2019 via email

@Edebo
Copy link
Contributor

Edebo commented Jun 6, 2019

i was refering to

  1. What are the steps to follow
    a lot of work was done by @wahaj-47 & @EbrahimKreem so we'll need just to adjust some methods in order to make them work as a separated module.

@atherdon
Copy link
Contributor Author

atherdon commented Jun 8, 2019

This is another example of why generator should be moved out:

  1. it has es5 style code
  2. it doesn't support babel resolver
  3. don't support build features
    from #502
    image

@vadim9999
Copy link
Collaborator

We should create steps about what files should be moved.
@atherdon what do you think if we will move folder generator? and after this repository will be containing just static data and call one function that will regenerate all files that were signed in the configGenerator in a separated repo?

@atherdon
Copy link
Contributor Author

@vadim9999 i agree. partially we discuss it at this long thread. maybe you can put everything at one text so it will be easy to read to all of us?
I also created some todos at code that can help us a bit

@atherdon
Copy link
Contributor Author

@vadim9999 maybe we should put all information at this readme - https://github.com/GroceriStar/sd/tree/master/generator

@vadim9999
Copy link
Collaborator

ok, I will do it

@atherdon
Copy link
Contributor Author

@vadim9999 we have a new member @svr8 and i think you can combine your forces and work together on moving generator out.
I think he should get some simple task for now, because it'll require some time to jump into the code.
So some dirty work like moving readme data, or changing some simple files will work pretty fine, by my opinion. please intoduce him to this task- because i didn't tell him anything :) We jump from quick conversation into work - so all intro will be on your shoulders

@atherdon
Copy link
Contributor Author

@vadim9999 quiestion: do you think it'll be more comfortable for you to work on this module, if'll migrate all tasks, related to generator to the separated repository issues?

@vadim9999
Copy link
Collaborator

@vadim9999 quiestion: do you think it'll be more comfortable for you to work on this module, if'll migrate all tasks, related to generator to the separated repository issues?

yes it will be good

@atherdon
Copy link
Contributor Author

atherdon commented Jun 30, 2019 via email

@atherdon
Copy link
Contributor Author

@Edebo am i right that you're back? do you have pending tasks that you need to complete?
I'm asking because @vadim9999 making few steps in order ot move this generator out and i think your knowledge will help to do it in less amount of time. but for sure - it's better to complete pending tasks(if they isset)

@Edebo
Copy link
Contributor

Edebo commented Jun 30, 2019

@atherdon am done with #471 ,while the pending task is what @vadim9999 is working on

@atherdon
Copy link
Contributor Author

atherdon commented Jun 30, 2019 via email

@Edebo
Copy link
Contributor

Edebo commented Jun 30, 2019

#332

@atherdon
Copy link
Contributor Author

got it - then you're free and can help with tasks that located at: https://github.com/GroceriStar/food-static-files-generator
you can grab #44 #41 they are easy to do

@atherdon atherdon transferred this issue from Food-Static-Data/sd Jul 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants